You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/03/21 16:27:02 UTC
[camel] 01/02: CAMEL-14760: camel-main - Generate configurer for
its own options
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 0354bc438d74b7d57cf6de3527b71c646d9043d1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Mar 21 17:21:56 2020 +0100
CAMEL-14760: camel-main - Generate configurer for its own options
---
core/camel-main/pom.xml | 22 ++-
.../camel/ExtendedCamelContextConfigurer.java | 159 ++++++++++++++++++++
.../HystrixConfigurationPropertiesConfigurer.java | 85 +++++++++++
.../MainConfigurationPropertiesConfigurer.java | 161 +++++++++++++++++++++
...ilience4jConfigurationPropertiesConfigurer.java | 61 ++++++++
.../RestConfigurationPropertiesConfigurer.java | 79 ++++++++++
.../apache/camel/configurer/ExtendedCamelContext | 2 +
.../configurer/HystrixConfigurationProperties | 2 +
.../camel/configurer/MainConfigurationProperties | 2 +
.../configurer/Resilience4jConfigurationProperties | 2 +
.../camel/configurer/RestConfigurationProperties | 2 +
.../org/apache/camel/main/BaseMainSupport.java | 13 ++
.../camel/maven/packaging/MainConfigurerMojo.java | 153 ++++++++++++++++++++
.../packaging/PropertyMainConfigurerGenerator.java | 90 ++++++++++++
14 files changed, 831 insertions(+), 2 deletions(-)
diff --git a/core/camel-main/pom.xml b/core/camel-main/pom.xml
index a126377..05570a0 100644
--- a/core/camel-main/pom.xml
+++ b/core/camel-main/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -36,7 +37,6 @@
<label>core</label>
</properties>
-
<dependencies>
<!-- lets keep mandatory dependencies on top level so dependency tree is nicer -->
@@ -128,4 +128,22 @@
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-package-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate</id>
+ <goals>
+ <goal>generate-main-configurer</goal>
+ </goals>
+ <phase>process-classes</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
diff --git a/core/camel-main/src/generated/java/org/apache/camel/ExtendedCamelContextConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/ExtendedCamelContextConfigurer.java
new file mode 100644
index 0000000..77383e9
--- /dev/null
+++ b/core/camel-main/src/generated/java/org/apache/camel/ExtendedCamelContextConfigurer.java
@@ -0,0 +1,159 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.ExtendedCamelContext;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class ExtendedCamelContextConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer {
+
+ @Override
+ public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+ org.apache.camel.ExtendedCamelContext target = (org.apache.camel.ExtendedCamelContext) obj;
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "allowaddingnewroutes":
+ case "AllowAddingNewRoutes": target.setAllowAddingNewRoutes(property(camelContext, boolean.class, value)); return true;
+ case "allowuseoriginalmessage":
+ case "AllowUseOriginalMessage": target.setAllowUseOriginalMessage(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "applicationcontextclassloader":
+ case "ApplicationContextClassLoader": target.setApplicationContextClassLoader(property(camelContext, java.lang.ClassLoader.class, value)); return true;
+ case "asyncprocessorawaitmanager":
+ case "AsyncProcessorAwaitManager": target.setAsyncProcessorAwaitManager(property(camelContext, org.apache.camel.spi.AsyncProcessorAwaitManager.class, value)); return true;
+ case "autostartup":
+ case "AutoStartup": target.setAutoStartup(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "backlogtracing":
+ case "BacklogTracing": target.setBacklogTracing(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "beanintrospection":
+ case "BeanIntrospection": target.setBeanIntrospection(property(camelContext, org.apache.camel.spi.BeanIntrospection.class, value)); return true;
+ case "caseinsensitiveheaders":
+ case "CaseInsensitiveHeaders": target.setCaseInsensitiveHeaders(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "classresolver":
+ case "ClassResolver": target.setClassResolver(property(camelContext, org.apache.camel.spi.ClassResolver.class, value)); return true;
+ case "clearmodelreferences":
+ case "ClearModelReferences": target.setClearModelReferences(property(camelContext, boolean.class, value)); return true;
+ case "componentnameresolver":
+ case "ComponentNameResolver": target.setComponentNameResolver(property(camelContext, org.apache.camel.spi.ComponentNameResolver.class, value)); return true;
+ case "componentresolver":
+ case "ComponentResolver": target.setComponentResolver(property(camelContext, org.apache.camel.spi.ComponentResolver.class, value)); return true;
+ case "configurerresolver":
+ case "ConfigurerResolver": target.setConfigurerResolver(property(camelContext, org.apache.camel.spi.ConfigurerResolver.class, value)); return true;
+ case "dataformatresolver":
+ case "DataFormatResolver": target.setDataFormatResolver(property(camelContext, org.apache.camel.spi.DataFormatResolver.class, value)); return true;
+ case "debugger":
+ case "Debugger": target.setDebugger(property(camelContext, org.apache.camel.spi.Debugger.class, value)); return true;
+ case "debugging":
+ case "Debugging": target.setDebugging(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "delayer":
+ case "Delayer": target.setDelayer(property(camelContext, java.lang.Long.class, value)); return true;
+ case "errorhandlerfactory":
+ case "ErrorHandlerFactory": target.setErrorHandlerFactory(property(camelContext, org.apache.camel.ErrorHandlerFactory.class, value)); return true;
+ case "eventnotificationapplicable":
+ case "EventNotificationApplicable": target.setEventNotificationApplicable(property(camelContext, boolean.class, value)); return true;
+ case "executorservicemanager":
+ case "ExecutorServiceManager": target.setExecutorServiceManager(property(camelContext, org.apache.camel.spi.ExecutorServiceManager.class, value)); return true;
+ case "factoryfinderresolver":
+ case "FactoryFinderResolver": target.setFactoryFinderResolver(property(camelContext, org.apache.camel.spi.FactoryFinderResolver.class, value)); return true;
+ case "globaloptions":
+ case "GlobalOptions": target.setGlobalOptions(property(camelContext, java.util.Map.class, value)); return true;
+ case "headersmapfactory":
+ case "HeadersMapFactory": target.setHeadersMapFactory(property(camelContext, org.apache.camel.spi.HeadersMapFactory.class, value)); return true;
+ case "inflightrepository":
+ case "InflightRepository": target.setInflightRepository(property(camelContext, org.apache.camel.spi.InflightRepository.class, value)); return true;
+ case "injector":
+ case "Injector": target.setInjector(property(camelContext, org.apache.camel.spi.Injector.class, value)); return true;
+ case "languageresolver":
+ case "LanguageResolver": target.setLanguageResolver(property(camelContext, org.apache.camel.spi.LanguageResolver.class, value)); return true;
+ case "loadtypeconverters":
+ case "LoadTypeConverters": target.setLoadTypeConverters(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "logexhaustedmessagebody":
+ case "LogExhaustedMessageBody": target.setLogExhaustedMessageBody(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "logmask":
+ case "LogMask": target.setLogMask(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "mdcloggingkeyspattern":
+ case "MDCLoggingKeysPattern": target.setMDCLoggingKeysPattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "managementname":
+ case "ManagementName": target.setManagementName(property(camelContext, java.lang.String.class, value)); return true;
+ case "managementnamestrategy":
+ case "ManagementNameStrategy": target.setManagementNameStrategy(property(camelContext, org.apache.camel.spi.ManagementNameStrategy.class, value)); return true;
+ case "managementstrategy":
+ case "ManagementStrategy": target.setManagementStrategy(property(camelContext, org.apache.camel.spi.ManagementStrategy.class, value)); return true;
+ case "messagehistory":
+ case "MessageHistory": target.setMessageHistory(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "messagehistoryfactory":
+ case "MessageHistoryFactory": target.setMessageHistoryFactory(property(camelContext, org.apache.camel.spi.MessageHistoryFactory.class, value)); return true;
+ case "modeljaxbcontextfactory":
+ case "ModelJAXBContextFactory": target.setModelJAXBContextFactory(property(camelContext, org.apache.camel.spi.ModelJAXBContextFactory.class, value)); return true;
+ case "modeltoxmldumper":
+ case "ModelToXMLDumper": target.setModelToXMLDumper(property(camelContext, org.apache.camel.spi.ModelToXMLDumper.class, value)); return true;
+ case "name":
+ case "Name": target.setName(property(camelContext, java.lang.String.class, value)); return true;
+ case "namestrategy":
+ case "NameStrategy": target.setNameStrategy(property(camelContext, org.apache.camel.spi.CamelContextNameStrategy.class, value)); return true;
+ case "nodeidfactory":
+ case "NodeIdFactory": target.setNodeIdFactory(property(camelContext, org.apache.camel.spi.NodeIdFactory.class, value)); return true;
+ case "packagescanclassresolver":
+ case "PackageScanClassResolver": target.setPackageScanClassResolver(property(camelContext, org.apache.camel.spi.PackageScanClassResolver.class, value)); return true;
+ case "packagescanresourceresolver":
+ case "PackageScanResourceResolver": target.setPackageScanResourceResolver(property(camelContext, org.apache.camel.spi.PackageScanResourceResolver.class, value)); return true;
+ case "processorfactory":
+ case "ProcessorFactory": target.setProcessorFactory(property(camelContext, org.apache.camel.spi.ProcessorFactory.class, value)); return true;
+ case "propertiescomponent":
+ case "PropertiesComponent": target.setPropertiesComponent(property(camelContext, org.apache.camel.spi.PropertiesComponent.class, value)); return true;
+ case "reactiveexecutor":
+ case "ReactiveExecutor": target.setReactiveExecutor(property(camelContext, org.apache.camel.spi.ReactiveExecutor.class, value)); return true;
+ case "registry":
+ case "Registry": target.setRegistry(property(camelContext, org.apache.camel.spi.Registry.class, value)); return true;
+ case "restconfiguration":
+ case "RestConfiguration": target.setRestConfiguration(property(camelContext, org.apache.camel.spi.RestConfiguration.class, value)); return true;
+ case "restregistry":
+ case "RestRegistry": target.setRestRegistry(property(camelContext, org.apache.camel.spi.RestRegistry.class, value)); return true;
+ case "routecontroller":
+ case "RouteController": target.setRouteController(property(camelContext, org.apache.camel.spi.RouteController.class, value)); return true;
+ case "runtimecamelcatalog":
+ case "RuntimeCamelCatalog": target.setRuntimeCamelCatalog(property(camelContext, org.apache.camel.catalog.RuntimeCamelCatalog.class, value)); return true;
+ case "runtimeendpointregistry":
+ case "RuntimeEndpointRegistry": target.setRuntimeEndpointRegistry(property(camelContext, org.apache.camel.spi.RuntimeEndpointRegistry.class, value)); return true;
+ case "sslcontextparameters":
+ case "SSLContextParameters": target.setSSLContextParameters(property(camelContext, org.apache.camel.support.jsse.SSLContextParameters.class, value)); return true;
+ case "shutdownroute":
+ case "ShutdownRoute": target.setShutdownRoute(property(camelContext, org.apache.camel.ShutdownRoute.class, value)); return true;
+ case "shutdownrunningtask":
+ case "ShutdownRunningTask": target.setShutdownRunningTask(property(camelContext, org.apache.camel.ShutdownRunningTask.class, value)); return true;
+ case "shutdownstrategy":
+ case "ShutdownStrategy": target.setShutdownStrategy(property(camelContext, org.apache.camel.spi.ShutdownStrategy.class, value)); return true;
+ case "streamcaching":
+ case "StreamCaching": target.setStreamCaching(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "streamcachingstrategy":
+ case "StreamCachingStrategy": target.setStreamCachingStrategy(property(camelContext, org.apache.camel.spi.StreamCachingStrategy.class, value)); return true;
+ case "tracer":
+ case "Tracer": target.setTracer(property(camelContext, org.apache.camel.spi.Tracer.class, value)); return true;
+ case "tracing":
+ case "Tracing": target.setTracing(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "tracingpattern":
+ case "TracingPattern": target.setTracingPattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "typeconverterregistry":
+ case "TypeConverterRegistry": target.setTypeConverterRegistry(property(camelContext, org.apache.camel.spi.TypeConverterRegistry.class, value)); return true;
+ case "typeconverterstatisticsenabled":
+ case "TypeConverterStatisticsEnabled": target.setTypeConverterStatisticsEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "unitofworkfactory":
+ case "UnitOfWorkFactory": target.setUnitOfWorkFactory(property(camelContext, org.apache.camel.spi.UnitOfWorkFactory.class, value)); return true;
+ case "usebreadcrumb":
+ case "UseBreadcrumb": target.setUseBreadcrumb(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "usedatatype":
+ case "UseDataType": target.setUseDataType(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "usemdclogging":
+ case "UseMDCLogging": target.setUseMDCLogging(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "uuidgenerator":
+ case "UuidGenerator": target.setUuidGenerator(property(camelContext, org.apache.camel.spi.UuidGenerator.class, value)); return true;
+ case "xmlroutesdefinitionloader":
+ case "XMLRoutesDefinitionLoader": target.setXMLRoutesDefinitionLoader(property(camelContext, org.apache.camel.spi.XMLRoutesDefinitionLoader.class, value)); return true;
+ default: return false;
+ }
+ }
+
+}
+
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/HystrixConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/HystrixConfigurationPropertiesConfigurer.java
new file mode 100644
index 0000000..aa8f79d
--- /dev/null
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/HystrixConfigurationPropertiesConfigurer.java
@@ -0,0 +1,85 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.main;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.main.HystrixConfigurationProperties;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class HystrixConfigurationPropertiesConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer {
+
+ @Override
+ public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+ org.apache.camel.main.HystrixConfigurationProperties target = (org.apache.camel.main.HystrixConfigurationProperties) obj;
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "allowmaximumsizetodivergefromcoresize":
+ case "AllowMaximumSizeToDivergeFromCoreSize": target.setAllowMaximumSizeToDivergeFromCoreSize(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "circuitbreakerenabled":
+ case "CircuitBreakerEnabled": target.setCircuitBreakerEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "circuitbreakererrorthresholdpercentage":
+ case "CircuitBreakerErrorThresholdPercentage": target.setCircuitBreakerErrorThresholdPercentage(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "circuitbreakerforceclosed":
+ case "CircuitBreakerForceClosed": target.setCircuitBreakerForceClosed(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "circuitbreakerforceopen":
+ case "CircuitBreakerForceOpen": target.setCircuitBreakerForceOpen(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "circuitbreakerrequestvolumethreshold":
+ case "CircuitBreakerRequestVolumeThreshold": target.setCircuitBreakerRequestVolumeThreshold(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "circuitbreakersleepwindowinmilliseconds":
+ case "CircuitBreakerSleepWindowInMilliseconds": target.setCircuitBreakerSleepWindowInMilliseconds(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "corepoolsize":
+ case "CorePoolSize": target.setCorePoolSize(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "executionisolationsemaphoremaxconcurrentrequests":
+ case "ExecutionIsolationSemaphoreMaxConcurrentRequests": target.setExecutionIsolationSemaphoreMaxConcurrentRequests(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "executionisolationstrategy":
+ case "ExecutionIsolationStrategy": target.setExecutionIsolationStrategy(property(camelContext, java.lang.String.class, value)); return true;
+ case "executionisolationthreadinterruptontimeout":
+ case "ExecutionIsolationThreadInterruptOnTimeout": target.setExecutionIsolationThreadInterruptOnTimeout(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "executiontimeoutenabled":
+ case "ExecutionTimeoutEnabled": target.setExecutionTimeoutEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "executiontimeoutinmilliseconds":
+ case "ExecutionTimeoutInMilliseconds": target.setExecutionTimeoutInMilliseconds(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "fallbackenabled":
+ case "FallbackEnabled": target.setFallbackEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "fallbackisolationsemaphoremaxconcurrentrequests":
+ case "FallbackIsolationSemaphoreMaxConcurrentRequests": target.setFallbackIsolationSemaphoreMaxConcurrentRequests(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "groupkey":
+ case "GroupKey": target.setGroupKey(property(camelContext, java.lang.String.class, value)); return true;
+ case "keepalivetime":
+ case "KeepAliveTime": target.setKeepAliveTime(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "maxqueuesize":
+ case "MaxQueueSize": target.setMaxQueueSize(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "maximumsize":
+ case "MaximumSize": target.setMaximumSize(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "metricshealthsnapshotintervalinmilliseconds":
+ case "MetricsHealthSnapshotIntervalInMilliseconds": target.setMetricsHealthSnapshotIntervalInMilliseconds(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "metricsrollingpercentilebucketsize":
+ case "MetricsRollingPercentileBucketSize": target.setMetricsRollingPercentileBucketSize(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "metricsrollingpercentileenabled":
+ case "MetricsRollingPercentileEnabled": target.setMetricsRollingPercentileEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "metricsrollingpercentilewindowbuckets":
+ case "MetricsRollingPercentileWindowBuckets": target.setMetricsRollingPercentileWindowBuckets(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "metricsrollingpercentilewindowinmilliseconds":
+ case "MetricsRollingPercentileWindowInMilliseconds": target.setMetricsRollingPercentileWindowInMilliseconds(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "metricsrollingstatisticalwindowbuckets":
+ case "MetricsRollingStatisticalWindowBuckets": target.setMetricsRollingStatisticalWindowBuckets(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "metricsrollingstatisticalwindowinmilliseconds":
+ case "MetricsRollingStatisticalWindowInMilliseconds": target.setMetricsRollingStatisticalWindowInMilliseconds(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "queuesizerejectionthreshold":
+ case "QueueSizeRejectionThreshold": target.setQueueSizeRejectionThreshold(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "requestlogenabled":
+ case "RequestLogEnabled": target.setRequestLogEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "threadpoolkey":
+ case "ThreadPoolKey": target.setThreadPoolKey(property(camelContext, java.lang.String.class, value)); return true;
+ case "threadpoolrollingnumberstatisticalwindowbuckets":
+ case "ThreadPoolRollingNumberStatisticalWindowBuckets": target.setThreadPoolRollingNumberStatisticalWindowBuckets(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "threadpoolrollingnumberstatisticalwindowinmilliseconds":
+ case "ThreadPoolRollingNumberStatisticalWindowInMilliseconds": target.setThreadPoolRollingNumberStatisticalWindowInMilliseconds(property(camelContext, java.lang.Integer.class, value)); return true;
+ default: return false;
+ }
+ }
+
+}
+
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java
new file mode 100644
index 0000000..94897c4
--- /dev/null
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java
@@ -0,0 +1,161 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.main;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.main.MainConfigurationProperties;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class MainConfigurationPropertiesConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer {
+
+ @Override
+ public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+ org.apache.camel.main.MainConfigurationProperties target = (org.apache.camel.main.MainConfigurationProperties) obj;
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "allowaddingnewroutes":
+ case "AllowAddingNewRoutes": target.setAllowAddingNewRoutes(property(camelContext, boolean.class, value)); return true;
+ case "allowuseoriginalmessage":
+ case "AllowUseOriginalMessage": target.setAllowUseOriginalMessage(property(camelContext, boolean.class, value)); return true;
+ case "autoconfigurationenabled":
+ case "AutoConfigurationEnabled": target.setAutoConfigurationEnabled(property(camelContext, boolean.class, value)); return true;
+ case "autoconfigurationenvironmentvariablesenabled":
+ case "AutoConfigurationEnvironmentVariablesEnabled": target.setAutoConfigurationEnvironmentVariablesEnabled(property(camelContext, boolean.class, value)); return true;
+ case "autoconfigurationfailfast":
+ case "AutoConfigurationFailFast": target.setAutoConfigurationFailFast(property(camelContext, boolean.class, value)); return true;
+ case "autoconfigurationlogsummary":
+ case "AutoConfigurationLogSummary": target.setAutoConfigurationLogSummary(property(camelContext, boolean.class, value)); return true;
+ case "autostartup":
+ case "AutoStartup": target.setAutoStartup(property(camelContext, boolean.class, value)); return true;
+ case "autowirecomponentproperties":
+ case "AutowireComponentProperties": target.setAutowireComponentProperties(property(camelContext, boolean.class, value)); return true;
+ case "autowirecomponentpropertiesallowprivatesetter":
+ case "AutowireComponentPropertiesAllowPrivateSetter": target.setAutowireComponentPropertiesAllowPrivateSetter(property(camelContext, boolean.class, value)); return true;
+ case "autowirecomponentpropertiesdeep":
+ case "AutowireComponentPropertiesDeep": target.setAutowireComponentPropertiesDeep(property(camelContext, boolean.class, value)); return true;
+ case "autowirecomponentpropertiesnonnullonly":
+ case "AutowireComponentPropertiesNonNullOnly": target.setAutowireComponentPropertiesNonNullOnly(property(camelContext, boolean.class, value)); return true;
+ case "backlogtracing":
+ case "BacklogTracing": target.setBacklogTracing(property(camelContext, boolean.class, value)); return true;
+ case "beanintrospectionextendedstatistics":
+ case "BeanIntrospectionExtendedStatistics": target.setBeanIntrospectionExtendedStatistics(property(camelContext, boolean.class, value)); return true;
+ case "beanintrospectionlogginglevel":
+ case "BeanIntrospectionLoggingLevel": target.setBeanIntrospectionLoggingLevel(property(camelContext, org.apache.camel.LoggingLevel.class, value)); return true;
+ case "caseinsensitiveheaders":
+ case "CaseInsensitiveHeaders": target.setCaseInsensitiveHeaders(property(camelContext, boolean.class, value)); return true;
+ case "clearmodelreferences":
+ case "ClearModelReferences": target.setClearModelReferences(property(camelContext, boolean.class, value)); return true;
+ case "consumertemplatecachesize":
+ case "ConsumerTemplateCacheSize": target.setConsumerTemplateCacheSize(property(camelContext, int.class, value)); return true;
+ case "durationhitexitcode":
+ case "DurationHitExitCode": target.setDurationHitExitCode(property(camelContext, int.class, value)); return true;
+ case "durationmaxidleseconds":
+ case "DurationMaxIdleSeconds": target.setDurationMaxIdleSeconds(property(camelContext, int.class, value)); return true;
+ case "durationmaxmessages":
+ case "DurationMaxMessages": target.setDurationMaxMessages(property(camelContext, int.class, value)); return true;
+ case "durationmaxseconds":
+ case "DurationMaxSeconds": target.setDurationMaxSeconds(property(camelContext, int.class, value)); return true;
+ case "endpointbasicpropertybinding":
+ case "EndpointBasicPropertyBinding": target.setEndpointBasicPropertyBinding(property(camelContext, boolean.class, value)); return true;
+ case "endpointbridgeerrorhandler":
+ case "EndpointBridgeErrorHandler": target.setEndpointBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+ case "endpointlazystartproducer":
+ case "EndpointLazyStartProducer": target.setEndpointLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+ case "endpointruntimestatisticsenabled":
+ case "EndpointRuntimeStatisticsEnabled": target.setEndpointRuntimeStatisticsEnabled(property(camelContext, boolean.class, value)); return true;
+ case "fileconfigurations":
+ case "FileConfigurations": target.setFileConfigurations(property(camelContext, java.lang.String.class, value)); return true;
+ case "hangupinterceptorenabled":
+ case "HangupInterceptorEnabled": target.setHangupInterceptorEnabled(property(camelContext, boolean.class, value)); return true;
+ case "inflightrepositorybrowseenabled":
+ case "InflightRepositoryBrowseEnabled": target.setInflightRepositoryBrowseEnabled(property(camelContext, boolean.class, value)); return true;
+ case "javaroutesexcludepattern":
+ case "JavaRoutesExcludePattern": target.setJavaRoutesExcludePattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "javaroutesincludepattern":
+ case "JavaRoutesIncludePattern": target.setJavaRoutesIncludePattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "jmxcreateconnector":
+ case "JmxCreateConnector": target.setJmxCreateConnector(property(camelContext, boolean.class, value)); return true;
+ case "jmxenabled":
+ case "JmxEnabled": target.setJmxEnabled(property(camelContext, boolean.class, value)); return true;
+ case "jmxmanagementnamepattern":
+ case "JmxManagementNamePattern": target.setJmxManagementNamePattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "jmxmanagementstatisticslevel":
+ case "JmxManagementStatisticsLevel": target.setJmxManagementStatisticsLevel(property(camelContext, org.apache.camel.ManagementStatisticsLevel.class, value)); return true;
+ case "loadtypeconverters":
+ case "LoadTypeConverters": target.setLoadTypeConverters(property(camelContext, boolean.class, value)); return true;
+ case "logdebugmaxchars":
+ case "LogDebugMaxChars": target.setLogDebugMaxChars(property(camelContext, int.class, value)); return true;
+ case "logexhaustedmessagebody":
+ case "LogExhaustedMessageBody": target.setLogExhaustedMessageBody(property(camelContext, boolean.class, value)); return true;
+ case "logmask":
+ case "LogMask": target.setLogMask(property(camelContext, boolean.class, value)); return true;
+ case "mdcloggingkeyspattern":
+ case "MdcLoggingKeysPattern": target.setMdcLoggingKeysPattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "messagehistory":
+ case "MessageHistory": target.setMessageHistory(property(camelContext, boolean.class, value)); return true;
+ case "name":
+ case "Name": target.setName(property(camelContext, java.lang.String.class, value)); return true;
+ case "packagescanroutebuilders":
+ case "PackageScanRouteBuilders": target.setPackageScanRouteBuilders(property(camelContext, java.lang.String.class, value)); return true;
+ case "producertemplatecachesize":
+ case "ProducerTemplateCacheSize": target.setProducerTemplateCacheSize(property(camelContext, int.class, value)); return true;
+ case "routefilterexcludepattern":
+ case "RouteFilterExcludePattern": target.setRouteFilterExcludePattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "routefilterincludepattern":
+ case "RouteFilterIncludePattern": target.setRouteFilterIncludePattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "routescollectorenabled":
+ case "RoutesCollectorEnabled": target.setRoutesCollectorEnabled(property(camelContext, boolean.class, value)); return true;
+ case "shutdownloginflightexchangesontimeout":
+ case "ShutdownLogInflightExchangesOnTimeout": target.setShutdownLogInflightExchangesOnTimeout(property(camelContext, boolean.class, value)); return true;
+ case "shutdownnowontimeout":
+ case "ShutdownNowOnTimeout": target.setShutdownNowOnTimeout(property(camelContext, boolean.class, value)); return true;
+ case "shutdownroutesinreverseorder":
+ case "ShutdownRoutesInReverseOrder": target.setShutdownRoutesInReverseOrder(property(camelContext, boolean.class, value)); return true;
+ case "shutdownsuppressloggingontimeout":
+ case "ShutdownSuppressLoggingOnTimeout": target.setShutdownSuppressLoggingOnTimeout(property(camelContext, boolean.class, value)); return true;
+ case "shutdowntimeout":
+ case "ShutdownTimeout": target.setShutdownTimeout(property(camelContext, int.class, value)); return true;
+ case "streamcachinganyspoolrules":
+ case "StreamCachingAnySpoolRules": target.setStreamCachingAnySpoolRules(property(camelContext, boolean.class, value)); return true;
+ case "streamcachingbuffersize":
+ case "StreamCachingBufferSize": target.setStreamCachingBufferSize(property(camelContext, int.class, value)); return true;
+ case "streamcachingenabled":
+ case "StreamCachingEnabled": target.setStreamCachingEnabled(property(camelContext, boolean.class, value)); return true;
+ case "streamcachingremovespooldirectorywhenstopping":
+ case "StreamCachingRemoveSpoolDirectoryWhenStopping": target.setStreamCachingRemoveSpoolDirectoryWhenStopping(property(camelContext, boolean.class, value)); return true;
+ case "streamcachingspoolcipher":
+ case "StreamCachingSpoolCipher": target.setStreamCachingSpoolCipher(property(camelContext, java.lang.String.class, value)); return true;
+ case "streamcachingspooldirectory":
+ case "StreamCachingSpoolDirectory": target.setStreamCachingSpoolDirectory(property(camelContext, java.lang.String.class, value)); return true;
+ case "streamcachingspoolthreshold":
+ case "StreamCachingSpoolThreshold": target.setStreamCachingSpoolThreshold(property(camelContext, long.class, value)); return true;
+ case "streamcachingspoolusedheapmemorylimit":
+ case "StreamCachingSpoolUsedHeapMemoryLimit": target.setStreamCachingSpoolUsedHeapMemoryLimit(property(camelContext, java.lang.String.class, value)); return true;
+ case "streamcachingspoolusedheapmemorythreshold":
+ case "StreamCachingSpoolUsedHeapMemoryThreshold": target.setStreamCachingSpoolUsedHeapMemoryThreshold(property(camelContext, int.class, value)); return true;
+ case "streamcachingstatisticsenabled":
+ case "StreamCachingStatisticsEnabled": target.setStreamCachingStatisticsEnabled(property(camelContext, boolean.class, value)); return true;
+ case "threadnamepattern":
+ case "ThreadNamePattern": target.setThreadNamePattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "tracing":
+ case "Tracing": target.setTracing(property(camelContext, boolean.class, value)); return true;
+ case "tracingpattern":
+ case "TracingPattern": target.setTracingPattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "usebreadcrumb":
+ case "UseBreadcrumb": target.setUseBreadcrumb(property(camelContext, boolean.class, value)); return true;
+ case "usedatatype":
+ case "UseDataType": target.setUseDataType(property(camelContext, boolean.class, value)); return true;
+ case "usemdclogging":
+ case "UseMdcLogging": target.setUseMdcLogging(property(camelContext, boolean.class, value)); return true;
+ case "xmlrests":
+ case "XmlRests": target.setXmlRests(property(camelContext, java.lang.String.class, value)); return true;
+ case "xmlroutes":
+ case "XmlRoutes": target.setXmlRoutes(property(camelContext, java.lang.String.class, value)); return true;
+ default: return false;
+ }
+ }
+
+}
+
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/Resilience4jConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/Resilience4jConfigurationPropertiesConfigurer.java
new file mode 100644
index 0000000..a45e877
--- /dev/null
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/Resilience4jConfigurationPropertiesConfigurer.java
@@ -0,0 +1,61 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.main;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.main.Resilience4jConfigurationProperties;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class Resilience4jConfigurationPropertiesConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer {
+
+ @Override
+ public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+ org.apache.camel.main.Resilience4jConfigurationProperties target = (org.apache.camel.main.Resilience4jConfigurationProperties) obj;
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "automatictransitionfromopentohalfopenenabled":
+ case "AutomaticTransitionFromOpenToHalfOpenEnabled": target.setAutomaticTransitionFromOpenToHalfOpenEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "bulkheadenabled":
+ case "BulkheadEnabled": target.setBulkheadEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "bulkheadmaxconcurrentcalls":
+ case "BulkheadMaxConcurrentCalls": target.setBulkheadMaxConcurrentCalls(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "bulkheadmaxwaitduration":
+ case "BulkheadMaxWaitDuration": target.setBulkheadMaxWaitDuration(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "circuitbreakerref":
+ case "CircuitBreakerRef": target.setCircuitBreakerRef(property(camelContext, java.lang.String.class, value)); return true;
+ case "configref":
+ case "ConfigRef": target.setConfigRef(property(camelContext, java.lang.String.class, value)); return true;
+ case "failureratethreshold":
+ case "FailureRateThreshold": target.setFailureRateThreshold(property(camelContext, java.lang.Float.class, value)); return true;
+ case "minimumnumberofcalls":
+ case "MinimumNumberOfCalls": target.setMinimumNumberOfCalls(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "permittednumberofcallsinhalfopenstate":
+ case "PermittedNumberOfCallsInHalfOpenState": target.setPermittedNumberOfCallsInHalfOpenState(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "slidingwindowsize":
+ case "SlidingWindowSize": target.setSlidingWindowSize(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "slidingwindowtype":
+ case "SlidingWindowType": target.setSlidingWindowType(property(camelContext, java.lang.String.class, value)); return true;
+ case "slowcalldurationthreshold":
+ case "SlowCallDurationThreshold": target.setSlowCallDurationThreshold(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "slowcallratethreshold":
+ case "SlowCallRateThreshold": target.setSlowCallRateThreshold(property(camelContext, java.lang.Float.class, value)); return true;
+ case "timeoutcancelrunningfuture":
+ case "TimeoutCancelRunningFuture": target.setTimeoutCancelRunningFuture(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "timeoutduration":
+ case "TimeoutDuration": target.setTimeoutDuration(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "timeoutenabled":
+ case "TimeoutEnabled": target.setTimeoutEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ case "timeoutexecutorserviceref":
+ case "TimeoutExecutorServiceRef": target.setTimeoutExecutorServiceRef(property(camelContext, java.lang.String.class, value)); return true;
+ case "waitdurationinopenstate":
+ case "WaitDurationInOpenState": target.setWaitDurationInOpenState(property(camelContext, java.lang.Integer.class, value)); return true;
+ case "writablestacktraceenabled":
+ case "WritableStackTraceEnabled": target.setWritableStackTraceEnabled(property(camelContext, java.lang.Boolean.class, value)); return true;
+ default: return false;
+ }
+ }
+
+}
+
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/RestConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/RestConfigurationPropertiesConfigurer.java
new file mode 100644
index 0000000..f4346f7
--- /dev/null
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/RestConfigurationPropertiesConfigurer.java
@@ -0,0 +1,79 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.main;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.main.RestConfigurationProperties;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class RestConfigurationPropertiesConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer {
+
+ @Override
+ public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+ org.apache.camel.main.RestConfigurationProperties target = (org.apache.camel.main.RestConfigurationProperties) obj;
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "apicomponent":
+ case "ApiComponent": target.setApiComponent(property(camelContext, java.lang.String.class, value)); return true;
+ case "apicontextidpattern":
+ case "ApiContextIdPattern": target.setApiContextIdPattern(property(camelContext, java.lang.String.class, value)); return true;
+ case "apicontextlisting":
+ case "ApiContextListing": target.setApiContextListing(property(camelContext, boolean.class, value)); return true;
+ case "apicontextpath":
+ case "ApiContextPath": target.setApiContextPath(property(camelContext, java.lang.String.class, value)); return true;
+ case "apicontextrouteid":
+ case "ApiContextRouteId": target.setApiContextRouteId(property(camelContext, java.lang.String.class, value)); return true;
+ case "apihost":
+ case "ApiHost": target.setApiHost(property(camelContext, java.lang.String.class, value)); return true;
+ case "apiproperties":
+ case "ApiProperties": target.setApiProperties(property(camelContext, java.util.Map.class, value)); return true;
+ case "apivendorextension":
+ case "ApiVendorExtension": target.setApiVendorExtension(property(camelContext, boolean.class, value)); return true;
+ case "bindingmode":
+ case "BindingMode": target.setBindingMode(property(camelContext, java.lang.String.class, value)); return true;
+ case "clientrequestvalidation":
+ case "ClientRequestValidation": target.setClientRequestValidation(property(camelContext, boolean.class, value)); return true;
+ case "component":
+ case "Component": target.setComponent(property(camelContext, java.lang.String.class, value)); return true;
+ case "componentproperties":
+ case "ComponentProperties": target.setComponentProperties(property(camelContext, java.util.Map.class, value)); return true;
+ case "consumerproperties":
+ case "ConsumerProperties": target.setConsumerProperties(property(camelContext, java.util.Map.class, value)); return true;
+ case "contextpath":
+ case "ContextPath": target.setContextPath(property(camelContext, java.lang.String.class, value)); return true;
+ case "corsheaders":
+ case "CorsHeaders": target.setCorsHeaders(property(camelContext, java.util.Map.class, value)); return true;
+ case "dataformatproperties":
+ case "DataFormatProperties": target.setDataFormatProperties(property(camelContext, java.util.Map.class, value)); return true;
+ case "enablecors":
+ case "EnableCORS": target.setEnableCORS(property(camelContext, boolean.class, value)); return true;
+ case "endpointproperties":
+ case "EndpointProperties": target.setEndpointProperties(property(camelContext, java.util.Map.class, value)); return true;
+ case "host":
+ case "Host": target.setHost(property(camelContext, java.lang.String.class, value)); return true;
+ case "hostnameresolver":
+ case "HostNameResolver": target.setHostNameResolver(property(camelContext, java.lang.String.class, value)); return true;
+ case "jsondataformat":
+ case "JsonDataFormat": target.setJsonDataFormat(property(camelContext, java.lang.String.class, value)); return true;
+ case "port":
+ case "Port": target.setPort(property(camelContext, int.class, value)); return true;
+ case "producerapidoc":
+ case "ProducerApiDoc": target.setProducerApiDoc(property(camelContext, java.lang.String.class, value)); return true;
+ case "producercomponent":
+ case "ProducerComponent": target.setProducerComponent(property(camelContext, java.lang.String.class, value)); return true;
+ case "scheme":
+ case "Scheme": target.setScheme(property(camelContext, java.lang.String.class, value)); return true;
+ case "skipbindingonerrorcode":
+ case "SkipBindingOnErrorCode": target.setSkipBindingOnErrorCode(property(camelContext, boolean.class, value)); return true;
+ case "usexforwardheaders":
+ case "UseXForwardHeaders": target.setUseXForwardHeaders(property(camelContext, boolean.class, value)); return true;
+ case "xmldataformat":
+ case "XmlDataFormat": target.setXmlDataFormat(property(camelContext, java.lang.String.class, value)); return true;
+ default: return false;
+ }
+ }
+
+}
+
diff --git a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/ExtendedCamelContext b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/ExtendedCamelContext
new file mode 100644
index 0000000..4d22c93
--- /dev/null
+++ b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/ExtendedCamelContext
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.ExtendedCamelContextConfigurer
diff --git a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/HystrixConfigurationProperties b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/HystrixConfigurationProperties
new file mode 100644
index 0000000..e4e1217
--- /dev/null
+++ b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/HystrixConfigurationProperties
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.main.HystrixConfigurationPropertiesConfigurer
diff --git a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/MainConfigurationProperties b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/MainConfigurationProperties
new file mode 100644
index 0000000..41f0ff0
--- /dev/null
+++ b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/MainConfigurationProperties
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.main.MainConfigurationPropertiesConfigurer
diff --git a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/Resilience4jConfigurationProperties b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/Resilience4jConfigurationProperties
new file mode 100644
index 0000000..604dae6
--- /dev/null
+++ b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/Resilience4jConfigurationProperties
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.main.Resilience4jConfigurationPropertiesConfigurer
diff --git a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/RestConfigurationProperties b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/RestConfigurationProperties
new file mode 100644
index 0000000..45b7946
--- /dev/null
+++ b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/RestConfigurationProperties
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.main.RestConfigurationPropertiesConfigurer
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
index 7519f52..fe1b829 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
@@ -81,6 +81,7 @@ public abstract class BaseMainSupport extends BaseService {
private static final String SENSITIVE_KEYS = "passphrase|password|secretkey|accesstoken|clientsecret|authorizationtoken|sasljaasconfig";
protected final AtomicBoolean completed = new AtomicBoolean(false);
+
protected volatile CamelContext camelContext;
protected volatile ProducerTemplate camelTemplate;
@@ -140,6 +141,18 @@ public abstract class BaseMainSupport extends BaseService {
configurer = ((Component) target).getComponentPropertyConfigurer();
}
+ if (configurer == null) {
+ String name = target.getClass().getSimpleName();
+ if (target instanceof ExtendedCamelContext) {
+ // special for camel context itself as we have an extended configurer
+ name = "ExtendedCamelContext";
+ }
+
+ // see if there is a configurer for it
+ configurer = context.adapt(ExtendedCamelContext.class)
+ .getConfigurerResolver().resolvePropertyConfigurer(name, context);
+ }
+
try {
// keep a reference of the original keys
Map<String, Object> backup = new LinkedHashMap<>(properties);
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MainConfigurerMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MainConfigurerMojo.java
new file mode 100644
index 0000000..0cc5d5a
--- /dev/null
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MainConfigurerMojo.java
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.maven.packaging;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.tooling.model.BaseOptionModel;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.springframework.util.ReflectionUtils;
+
+/**
+ * Generate configurer classes for camel-main.
+ */
+@Mojo(name = "generate-main-configurer", threadSafe = true, defaultPhase = LifecyclePhase.PROCESS_CLASSES)
+public class MainConfigurerMojo extends AbstractGeneratorMojo {
+
+ /**
+ * The output directory for generated java source code
+ */
+ @Parameter(defaultValue = "${project.basedir}/src/generated/java")
+ protected File srcOutDir;
+
+ @Parameter(defaultValue = "${project.basedir}/src/generated/resources")
+ protected File resourcesOutputDir;
+
+ private DynamicClassLoader projectClassLoader;
+
+ private static final String[] CLASS_NAMES = new String[]{
+ "org.apache.camel.main.MainConfigurationProperties",
+ "org.apache.camel.main.HystrixConfigurationProperties",
+ "org.apache.camel.main.Resilience4jConfigurationProperties",
+ "org.apache.camel.main.RestConfigurationProperties",
+ "org.apache.camel.ExtendedCamelContext"};
+
+ private static class Option extends BaseOptionModel {
+ // we just use name, type
+
+
+ public Option(String name, Class type) {
+ setName(name);
+ setJavaType(type.getName());
+ }
+ }
+
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ List<String> cp = new ArrayList<>();
+ cp.add(0, project.getBuild().getOutputDirectory());
+ project.getDependencyArtifacts().forEach(a -> {
+ if (a.isResolved() && a.getFile() != null) {
+ cp.add(a.getFile().getPath());
+ }
+ });
+ projectClassLoader = DynamicClassLoader.createDynamicClassLoader(cp);
+
+ for (String fqn : CLASS_NAMES) {
+ try {
+ List<Option> options = processClass(fqn);
+ generateConfigurer(fqn, options);
+ generateMetaInfConfigurer(fqn);
+ } catch (Exception e) {
+ throw new MojoExecutionException("Error processing class: " + fqn, e);
+ }
+ }
+ }
+
+ private List<Option> processClass(String name) throws ClassNotFoundException {
+ List<Option> answer = new ArrayList<>();
+
+ Class clazz = projectClassLoader.loadClass(name);
+ // find all public setters
+ ReflectionUtils.doWithMethods(clazz, m -> {
+ boolean setter = m.getName().length() >= 4 && m.getName().startsWith("set") && Character.isUpperCase(m.getName().charAt(3));
+ setter &= Modifier.isPublic(m.getModifiers()) && m.getParameterCount() == 1;
+ setter &= filterSetter(m);
+ if (setter) {
+ String t = Character.toUpperCase(m.getName().charAt(3)) + m.getName().substring(3 + 1);
+ answer.add(new Option(t, m.getParameterTypes()[0]));
+ }
+ });
+
+ return answer;
+ }
+
+ private boolean filterSetter(Method setter) {
+ // special for some
+ if ("setBindingMode".equals(setter.getName())) {
+ // we only want the string setter
+ return setter.getParameterTypes()[0] == String.class;
+ } else if ("setHostNameResolver".equals(setter.getName())) {
+ // we only want the string setter
+ return setter.getParameterTypes()[0] == String.class;
+ }
+
+ return true;
+ }
+
+ private void generateConfigurer(String name, List<Option> options) throws IOException {
+ String pn = name.substring(0, name.lastIndexOf('.'));
+ String cn = name.substring(name.lastIndexOf('.') + 1) + "Configurer";
+ String en = name;
+ String pfqn = name;
+ String psn = "org.apache.camel.support.component.PropertyConfigurerSupport";
+
+ StringWriter sw = new StringWriter();
+ PropertyMainConfigurerGenerator.generatePropertyConfigurer(pn, cn, en, pfqn, psn, options, sw);
+
+ String source = sw.toString();
+
+ String fileName = pn.replace('.', '/') + "/" + cn + ".java";
+ boolean updated = updateResource(srcOutDir.toPath(), fileName, source);
+ if (updated) {
+ getLog().info("Updated " + fileName);
+ }
+ }
+
+ protected void generateMetaInfConfigurer(String fqn) {
+ String name = fqn.substring(fqn.lastIndexOf('.') + 1);
+ try (Writer w = new StringWriter()) {
+ w.append("# " + GENERATED_MSG + "\n");
+ w.append("class=").append(fqn + "Configurer").append("\n");
+ updateResource(resourcesOutputDir.toPath(), "META-INF/services/org/apache/camel/configurer/" + name, w.toString());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PropertyMainConfigurerGenerator.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PropertyMainConfigurerGenerator.java
new file mode 100644
index 0000000..1e98e55
--- /dev/null
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PropertyMainConfigurerGenerator.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.maven.packaging;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import org.apache.camel.tooling.model.BaseOptionModel;
+
+public final class PropertyMainConfigurerGenerator {
+
+ private PropertyMainConfigurerGenerator() {
+ }
+
+ public static void generatePropertyConfigurer(String pn, String cn, String en,
+ String pfqn, String psn,
+ Collection<? extends BaseOptionModel> options, Writer w) throws IOException {
+ w.write("/* " + AbstractGeneratorMojo.GENERATED_MSG + " */\n");
+ w.write("package " + pn + ";\n");
+ w.write("\n");
+ w.write("import org.apache.camel.CamelContext;\n");
+ w.write("import org.apache.camel.spi.GeneratedPropertyConfigurer;\n");
+ w.write("import " + pfqn + ";\n");
+ w.write("\n");
+ w.write("/**\n");
+ w.write(" * " + AbstractGeneratorMojo.GENERATED_MSG + "\n");
+ w.write(" */\n");
+ w.write("@SuppressWarnings(\"unchecked\")\n");
+ w.write("public class " + cn + " extends " + psn + " implements GeneratedPropertyConfigurer {\n");
+ w.write("\n");
+ if (!options.isEmpty()) {
+
+ // sort options A..Z so they always have same order
+ options = options.stream().sorted(Comparator.comparing(BaseOptionModel::getName)).collect(Collectors.toList());
+ w.write(" @Override\n");
+ w.write(" public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {\n");
+ if (!options.isEmpty()) {
+ w.write(" " + en + " target = (" + en + ") obj;\n");
+ w.write(" switch (ignoreCase ? name.toLowerCase() : name) {\n");
+ for (BaseOptionModel option : options) {
+ String getOrSet = option.getName();
+ getOrSet = Character.toUpperCase(getOrSet.charAt(0)) + getOrSet.substring(1);
+ String setterLambda = setterLambda(getOrSet, option.getJavaType());
+ if (!option.getName().toLowerCase().equals(option.getName())) {
+ w.write(String.format(" case \"%s\":\n", option.getName().toLowerCase()));
+ }
+ w.write(String.format(" case \"%s\": %s; return true;\n", option.getName(), setterLambda));
+ }
+ w.write(" default: return false;\n");
+ w.write(" }\n");
+ }
+ w.write(" }\n");
+ }
+ w.write("\n");
+ w.write("}\n");
+ w.write("\n");
+ }
+
+ private static String setterLambda(String getOrSet, String type) {
+ // type may contain generics so remove those
+ if (type.indexOf('<') != -1) {
+ type = type.substring(0, type.indexOf('<'));
+ }
+ type = type.replace('$', '.');
+ getOrSet = "target.set" + getOrSet;
+
+ // ((LogComponent) target).setGroupSize(property(camelContext,
+ // java.lang.Integer.class, value))
+ return String.format("%s(property(camelContext, %s.class, value))", getOrSet, type);
+ }
+
+}