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 b9cc4dc6906318bdc5a7249f5f3bbb92397cae1f
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed Apr 8 13:41:00 2020 +0200

    CAMEL-14864: Be able to generate configurer for any pojo. WIP
---
 .../main/java/org/apache/camel/spi/Configurer.java |   5 -
 .../HystrixConfigurationPropertiesConfigurer.java  | 112 ++++++++++-
 .../MainConfigurationPropertiesConfigurer.java     | 220 ++++++++++++++++++++-
 ...ilience4jConfigurationPropertiesConfigurer.java |  76 ++++++-
 .../RestConfigurationPropertiesConfigurer.java     | 103 +++++++++-
 .../maven/packaging/GenerateConfigurerMojo.java    |   4 +-
 .../packaging/PropertyMainConfigurerGenerator.java |  90 ---------
 7 files changed, 510 insertions(+), 100 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/Configurer.java 
b/core/camel-api/src/main/java/org/apache/camel/spi/Configurer.java
index 72aeabe..ac4ba06 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/Configurer.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/Configurer.java
@@ -38,9 +38,4 @@ public @interface Configurer {
      */
     boolean generateConfigurer() default true;
 
-    /**
-     * Whether this configurer is read-only (can only use getters)
-     */
-    boolean readOnly() default 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
index aa8f79d..166ddad 100644
--- 
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
@@ -1,15 +1,19 @@
 /* Generated by camel build tools - do NOT edit this file! */
 package org.apache.camel.main;
 
+import java.util.Map;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.util.CaseInsensitiveMap;
 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 {
+public class HystrixConfigurationPropertiesConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
@@ -81,5 +85,111 @@ public class HystrixConfigurationPropertiesConfigurer 
extends org.apache.camel.s
         }
     }
 
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        Map<String, Object> answer = new CaseInsensitiveMap();
+        answer.put("AllowMaximumSizeToDivergeFromCoreSize", 
java.lang.Boolean.class);
+        answer.put("CircuitBreakerEnabled", java.lang.Boolean.class);
+        answer.put("CircuitBreakerErrorThresholdPercentage", 
java.lang.Integer.class);
+        answer.put("CircuitBreakerForceClosed", java.lang.Boolean.class);
+        answer.put("CircuitBreakerForceOpen", java.lang.Boolean.class);
+        answer.put("CircuitBreakerRequestVolumeThreshold", 
java.lang.Integer.class);
+        answer.put("CircuitBreakerSleepWindowInMilliseconds", 
java.lang.Integer.class);
+        answer.put("CorePoolSize", java.lang.Integer.class);
+        answer.put("ExecutionIsolationSemaphoreMaxConcurrentRequests", 
java.lang.Integer.class);
+        answer.put("ExecutionIsolationStrategy", java.lang.String.class);
+        answer.put("ExecutionIsolationThreadInterruptOnTimeout", 
java.lang.Boolean.class);
+        answer.put("ExecutionTimeoutEnabled", java.lang.Boolean.class);
+        answer.put("ExecutionTimeoutInMilliseconds", java.lang.Integer.class);
+        answer.put("FallbackEnabled", java.lang.Boolean.class);
+        answer.put("FallbackIsolationSemaphoreMaxConcurrentRequests", 
java.lang.Integer.class);
+        answer.put("GroupKey", java.lang.String.class);
+        answer.put("KeepAliveTime", java.lang.Integer.class);
+        answer.put("MaxQueueSize", java.lang.Integer.class);
+        answer.put("MaximumSize", java.lang.Integer.class);
+        answer.put("MetricsHealthSnapshotIntervalInMilliseconds", 
java.lang.Integer.class);
+        answer.put("MetricsRollingPercentileBucketSize", 
java.lang.Integer.class);
+        answer.put("MetricsRollingPercentileEnabled", java.lang.Boolean.class);
+        answer.put("MetricsRollingPercentileWindowBuckets", 
java.lang.Integer.class);
+        answer.put("MetricsRollingPercentileWindowInMilliseconds", 
java.lang.Integer.class);
+        answer.put("MetricsRollingStatisticalWindowBuckets", 
java.lang.Integer.class);
+        answer.put("MetricsRollingStatisticalWindowInMilliseconds", 
java.lang.Integer.class);
+        answer.put("QueueSizeRejectionThreshold", java.lang.Integer.class);
+        answer.put("RequestLogEnabled", java.lang.Boolean.class);
+        answer.put("ThreadPoolKey", java.lang.String.class);
+        answer.put("ThreadPoolRollingNumberStatisticalWindowBuckets", 
java.lang.Integer.class);
+        answer.put("ThreadPoolRollingNumberStatisticalWindowInMilliseconds", 
java.lang.Integer.class);
+        return answer;
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.main.HystrixConfigurationProperties target = 
(org.apache.camel.main.HystrixConfigurationProperties) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowmaximumsizetodivergefromcoresize":
+        case "AllowMaximumSizeToDivergeFromCoreSize": return 
target.getAllowMaximumSizeToDivergeFromCoreSize();
+        case "circuitbreakerenabled":
+        case "CircuitBreakerEnabled": return target.getCircuitBreakerEnabled();
+        case "circuitbreakererrorthresholdpercentage":
+        case "CircuitBreakerErrorThresholdPercentage": return 
target.getCircuitBreakerErrorThresholdPercentage();
+        case "circuitbreakerforceclosed":
+        case "CircuitBreakerForceClosed": return 
target.getCircuitBreakerForceClosed();
+        case "circuitbreakerforceopen":
+        case "CircuitBreakerForceOpen": return 
target.getCircuitBreakerForceOpen();
+        case "circuitbreakerrequestvolumethreshold":
+        case "CircuitBreakerRequestVolumeThreshold": return 
target.getCircuitBreakerRequestVolumeThreshold();
+        case "circuitbreakersleepwindowinmilliseconds":
+        case "CircuitBreakerSleepWindowInMilliseconds": return 
target.getCircuitBreakerSleepWindowInMilliseconds();
+        case "corepoolsize":
+        case "CorePoolSize": return target.getCorePoolSize();
+        case "executionisolationsemaphoremaxconcurrentrequests":
+        case "ExecutionIsolationSemaphoreMaxConcurrentRequests": return 
target.getExecutionIsolationSemaphoreMaxConcurrentRequests();
+        case "executionisolationstrategy":
+        case "ExecutionIsolationStrategy": return 
target.getExecutionIsolationStrategy();
+        case "executionisolationthreadinterruptontimeout":
+        case "ExecutionIsolationThreadInterruptOnTimeout": return 
target.getExecutionIsolationThreadInterruptOnTimeout();
+        case "executiontimeoutenabled":
+        case "ExecutionTimeoutEnabled": return 
target.getExecutionTimeoutEnabled();
+        case "executiontimeoutinmilliseconds":
+        case "ExecutionTimeoutInMilliseconds": return 
target.getExecutionTimeoutInMilliseconds();
+        case "fallbackenabled":
+        case "FallbackEnabled": return target.getFallbackEnabled();
+        case "fallbackisolationsemaphoremaxconcurrentrequests":
+        case "FallbackIsolationSemaphoreMaxConcurrentRequests": return 
target.getFallbackIsolationSemaphoreMaxConcurrentRequests();
+        case "groupkey":
+        case "GroupKey": return target.getGroupKey();
+        case "keepalivetime":
+        case "KeepAliveTime": return target.getKeepAliveTime();
+        case "maxqueuesize":
+        case "MaxQueueSize": return target.getMaxQueueSize();
+        case "maximumsize":
+        case "MaximumSize": return target.getMaximumSize();
+        case "metricshealthsnapshotintervalinmilliseconds":
+        case "MetricsHealthSnapshotIntervalInMilliseconds": return 
target.getMetricsHealthSnapshotIntervalInMilliseconds();
+        case "metricsrollingpercentilebucketsize":
+        case "MetricsRollingPercentileBucketSize": return 
target.getMetricsRollingPercentileBucketSize();
+        case "metricsrollingpercentileenabled":
+        case "MetricsRollingPercentileEnabled": return 
target.getMetricsRollingPercentileEnabled();
+        case "metricsrollingpercentilewindowbuckets":
+        case "MetricsRollingPercentileWindowBuckets": return 
target.getMetricsRollingPercentileWindowBuckets();
+        case "metricsrollingpercentilewindowinmilliseconds":
+        case "MetricsRollingPercentileWindowInMilliseconds": return 
target.getMetricsRollingPercentileWindowInMilliseconds();
+        case "metricsrollingstatisticalwindowbuckets":
+        case "MetricsRollingStatisticalWindowBuckets": return 
target.getMetricsRollingStatisticalWindowBuckets();
+        case "metricsrollingstatisticalwindowinmilliseconds":
+        case "MetricsRollingStatisticalWindowInMilliseconds": return 
target.getMetricsRollingStatisticalWindowInMilliseconds();
+        case "queuesizerejectionthreshold":
+        case "QueueSizeRejectionThreshold": return 
target.getQueueSizeRejectionThreshold();
+        case "requestlogenabled":
+        case "RequestLogEnabled": return target.getRequestLogEnabled();
+        case "threadpoolkey":
+        case "ThreadPoolKey": return target.getThreadPoolKey();
+        case "threadpoolrollingnumberstatisticalwindowbuckets":
+        case "ThreadPoolRollingNumberStatisticalWindowBuckets": return 
target.getThreadPoolRollingNumberStatisticalWindowBuckets();
+        case "threadpoolrollingnumberstatisticalwindowinmilliseconds":
+        case "ThreadPoolRollingNumberStatisticalWindowInMilliseconds": return 
target.getThreadPoolRollingNumberStatisticalWindowInMilliseconds();
+        default: return null;
+        }
+    }
 }
 
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
index 311b113..0afff9f 100644
--- 
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
@@ -1,15 +1,19 @@
 /* Generated by camel build tools - do NOT edit this file! */
 package org.apache.camel.main;
 
+import java.util.Map;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.util.CaseInsensitiveMap;
 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 {
+public class MainConfigurationPropertiesConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
@@ -153,5 +157,219 @@ public class MainConfigurationPropertiesConfigurer 
extends org.apache.camel.supp
         }
     }
 
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        Map<String, Object> answer = new CaseInsensitiveMap();
+        answer.put("AllowUseOriginalMessage", boolean.class);
+        answer.put("AutoConfigurationEnabled", boolean.class);
+        answer.put("AutoConfigurationEnvironmentVariablesEnabled", 
boolean.class);
+        answer.put("AutoConfigurationFailFast", boolean.class);
+        answer.put("AutoConfigurationLogSummary", boolean.class);
+        answer.put("AutoStartup", boolean.class);
+        answer.put("AutowireComponentProperties", boolean.class);
+        answer.put("AutowireComponentPropertiesAllowPrivateSetter", 
boolean.class);
+        answer.put("AutowireComponentPropertiesDeep", boolean.class);
+        answer.put("AutowireComponentPropertiesNonNullOnly", boolean.class);
+        answer.put("BacklogTracing", boolean.class);
+        answer.put("BeanIntrospectionExtendedStatistics", boolean.class);
+        answer.put("BeanIntrospectionLoggingLevel", 
org.apache.camel.LoggingLevel.class);
+        answer.put("CaseInsensitiveHeaders", boolean.class);
+        answer.put("ConsumerTemplateCacheSize", int.class);
+        answer.put("DurationHitExitCode", int.class);
+        answer.put("DurationMaxIdleSeconds", int.class);
+        answer.put("DurationMaxMessages", int.class);
+        answer.put("DurationMaxSeconds", int.class);
+        answer.put("EndpointBasicPropertyBinding", boolean.class);
+        answer.put("EndpointBridgeErrorHandler", boolean.class);
+        answer.put("EndpointLazyStartProducer", boolean.class);
+        answer.put("EndpointRuntimeStatisticsEnabled", boolean.class);
+        answer.put("FileConfigurations", java.lang.String.class);
+        answer.put("HangupInterceptorEnabled", boolean.class);
+        answer.put("InflightRepositoryBrowseEnabled", boolean.class);
+        answer.put("JavaRoutesExcludePattern", java.lang.String.class);
+        answer.put("JavaRoutesIncludePattern", java.lang.String.class);
+        answer.put("JmxEnabled", boolean.class);
+        answer.put("JmxManagementNamePattern", java.lang.String.class);
+        answer.put("JmxManagementStatisticsLevel", 
org.apache.camel.ManagementStatisticsLevel.class);
+        answer.put("Lightweight", boolean.class);
+        answer.put("LoadTypeConverters", boolean.class);
+        answer.put("LogDebugMaxChars", int.class);
+        answer.put("LogExhaustedMessageBody", boolean.class);
+        answer.put("LogMask", boolean.class);
+        answer.put("MdcLoggingKeysPattern", java.lang.String.class);
+        answer.put("MessageHistory", boolean.class);
+        answer.put("Name", java.lang.String.class);
+        answer.put("PackageScanRouteBuilders", java.lang.String.class);
+        answer.put("ProducerTemplateCacheSize", int.class);
+        answer.put("RouteFilterExcludePattern", java.lang.String.class);
+        answer.put("RouteFilterIncludePattern", java.lang.String.class);
+        answer.put("RoutesCollectorEnabled", boolean.class);
+        answer.put("ShutdownLogInflightExchangesOnTimeout", boolean.class);
+        answer.put("ShutdownNowOnTimeout", boolean.class);
+        answer.put("ShutdownRoutesInReverseOrder", boolean.class);
+        answer.put("ShutdownSuppressLoggingOnTimeout", boolean.class);
+        answer.put("ShutdownTimeout", int.class);
+        answer.put("StreamCachingAnySpoolRules", boolean.class);
+        answer.put("StreamCachingBufferSize", int.class);
+        answer.put("StreamCachingEnabled", boolean.class);
+        answer.put("StreamCachingRemoveSpoolDirectoryWhenStopping", 
boolean.class);
+        answer.put("StreamCachingSpoolCipher", java.lang.String.class);
+        answer.put("StreamCachingSpoolDirectory", java.lang.String.class);
+        answer.put("StreamCachingSpoolThreshold", long.class);
+        answer.put("StreamCachingSpoolUsedHeapMemoryLimit", 
java.lang.String.class);
+        answer.put("StreamCachingSpoolUsedHeapMemoryThreshold", int.class);
+        answer.put("StreamCachingStatisticsEnabled", boolean.class);
+        answer.put("ThreadNamePattern", java.lang.String.class);
+        answer.put("Tracing", boolean.class);
+        answer.put("TracingPattern", java.lang.String.class);
+        answer.put("UseBreadcrumb", boolean.class);
+        answer.put("UseDataType", boolean.class);
+        answer.put("UseMdcLogging", boolean.class);
+        answer.put("XmlRests", java.lang.String.class);
+        answer.put("XmlRoutes", java.lang.String.class);
+        return answer;
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.main.MainConfigurationProperties target = 
(org.apache.camel.main.MainConfigurationProperties) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowuseoriginalmessage":
+        case "AllowUseOriginalMessage": return 
target.isAllowUseOriginalMessage();
+        case "autoconfigurationenabled":
+        case "AutoConfigurationEnabled": return 
target.isAutoConfigurationEnabled();
+        case "autoconfigurationenvironmentvariablesenabled":
+        case "AutoConfigurationEnvironmentVariablesEnabled": return 
target.isAutoConfigurationEnvironmentVariablesEnabled();
+        case "autoconfigurationfailfast":
+        case "AutoConfigurationFailFast": return 
target.isAutoConfigurationFailFast();
+        case "autoconfigurationlogsummary":
+        case "AutoConfigurationLogSummary": return 
target.isAutoConfigurationLogSummary();
+        case "autostartup":
+        case "AutoStartup": return target.isAutoStartup();
+        case "autowirecomponentproperties":
+        case "AutowireComponentProperties": return 
target.isAutowireComponentProperties();
+        case "autowirecomponentpropertiesallowprivatesetter":
+        case "AutowireComponentPropertiesAllowPrivateSetter": return 
target.isAutowireComponentPropertiesAllowPrivateSetter();
+        case "autowirecomponentpropertiesdeep":
+        case "AutowireComponentPropertiesDeep": return 
target.isAutowireComponentPropertiesDeep();
+        case "autowirecomponentpropertiesnonnullonly":
+        case "AutowireComponentPropertiesNonNullOnly": return 
target.isAutowireComponentPropertiesNonNullOnly();
+        case "backlogtracing":
+        case "BacklogTracing": return target.isBacklogTracing();
+        case "beanintrospectionextendedstatistics":
+        case "BeanIntrospectionExtendedStatistics": return 
target.isBeanIntrospectionExtendedStatistics();
+        case "beanintrospectionlogginglevel":
+        case "BeanIntrospectionLoggingLevel": return 
target.getBeanIntrospectionLoggingLevel();
+        case "caseinsensitiveheaders":
+        case "CaseInsensitiveHeaders": return 
target.isCaseInsensitiveHeaders();
+        case "consumertemplatecachesize":
+        case "ConsumerTemplateCacheSize": return 
target.getConsumerTemplateCacheSize();
+        case "durationhitexitcode":
+        case "DurationHitExitCode": return target.getDurationHitExitCode();
+        case "durationmaxidleseconds":
+        case "DurationMaxIdleSeconds": return 
target.getDurationMaxIdleSeconds();
+        case "durationmaxmessages":
+        case "DurationMaxMessages": return target.getDurationMaxMessages();
+        case "durationmaxseconds":
+        case "DurationMaxSeconds": return target.getDurationMaxSeconds();
+        case "endpointbasicpropertybinding":
+        case "EndpointBasicPropertyBinding": return 
target.isEndpointBasicPropertyBinding();
+        case "endpointbridgeerrorhandler":
+        case "EndpointBridgeErrorHandler": return 
target.isEndpointBridgeErrorHandler();
+        case "endpointlazystartproducer":
+        case "EndpointLazyStartProducer": return 
target.isEndpointLazyStartProducer();
+        case "endpointruntimestatisticsenabled":
+        case "EndpointRuntimeStatisticsEnabled": return 
target.isEndpointRuntimeStatisticsEnabled();
+        case "fileconfigurations":
+        case "FileConfigurations": return target.getFileConfigurations();
+        case "hangupinterceptorenabled":
+        case "HangupInterceptorEnabled": return 
target.isHangupInterceptorEnabled();
+        case "inflightrepositorybrowseenabled":
+        case "InflightRepositoryBrowseEnabled": return 
target.isInflightRepositoryBrowseEnabled();
+        case "javaroutesexcludepattern":
+        case "JavaRoutesExcludePattern": return 
target.getJavaRoutesExcludePattern();
+        case "javaroutesincludepattern":
+        case "JavaRoutesIncludePattern": return 
target.getJavaRoutesIncludePattern();
+        case "jmxenabled":
+        case "JmxEnabled": return target.isJmxEnabled();
+        case "jmxmanagementnamepattern":
+        case "JmxManagementNamePattern": return 
target.getJmxManagementNamePattern();
+        case "jmxmanagementstatisticslevel":
+        case "JmxManagementStatisticsLevel": return 
target.getJmxManagementStatisticsLevel();
+        case "lightweight":
+        case "Lightweight": return target.isLightweight();
+        case "loadtypeconverters":
+        case "LoadTypeConverters": return target.isLoadTypeConverters();
+        case "logdebugmaxchars":
+        case "LogDebugMaxChars": return target.getLogDebugMaxChars();
+        case "logexhaustedmessagebody":
+        case "LogExhaustedMessageBody": return 
target.isLogExhaustedMessageBody();
+        case "logmask":
+        case "LogMask": return target.isLogMask();
+        case "mdcloggingkeyspattern":
+        case "MdcLoggingKeysPattern": return target.getMdcLoggingKeysPattern();
+        case "messagehistory":
+        case "MessageHistory": return target.isMessageHistory();
+        case "name":
+        case "Name": return target.getName();
+        case "packagescanroutebuilders":
+        case "PackageScanRouteBuilders": return 
target.getPackageScanRouteBuilders();
+        case "producertemplatecachesize":
+        case "ProducerTemplateCacheSize": return 
target.getProducerTemplateCacheSize();
+        case "routefilterexcludepattern":
+        case "RouteFilterExcludePattern": return 
target.getRouteFilterExcludePattern();
+        case "routefilterincludepattern":
+        case "RouteFilterIncludePattern": return 
target.getRouteFilterIncludePattern();
+        case "routescollectorenabled":
+        case "RoutesCollectorEnabled": return 
target.isRoutesCollectorEnabled();
+        case "shutdownloginflightexchangesontimeout":
+        case "ShutdownLogInflightExchangesOnTimeout": return 
target.isShutdownLogInflightExchangesOnTimeout();
+        case "shutdownnowontimeout":
+        case "ShutdownNowOnTimeout": return target.isShutdownNowOnTimeout();
+        case "shutdownroutesinreverseorder":
+        case "ShutdownRoutesInReverseOrder": return 
target.isShutdownRoutesInReverseOrder();
+        case "shutdownsuppressloggingontimeout":
+        case "ShutdownSuppressLoggingOnTimeout": return 
target.isShutdownSuppressLoggingOnTimeout();
+        case "shutdowntimeout":
+        case "ShutdownTimeout": return target.getShutdownTimeout();
+        case "streamcachinganyspoolrules":
+        case "StreamCachingAnySpoolRules": return 
target.isStreamCachingAnySpoolRules();
+        case "streamcachingbuffersize":
+        case "StreamCachingBufferSize": return 
target.getStreamCachingBufferSize();
+        case "streamcachingenabled":
+        case "StreamCachingEnabled": return target.isStreamCachingEnabled();
+        case "streamcachingremovespooldirectorywhenstopping":
+        case "StreamCachingRemoveSpoolDirectoryWhenStopping": return 
target.isStreamCachingRemoveSpoolDirectoryWhenStopping();
+        case "streamcachingspoolcipher":
+        case "StreamCachingSpoolCipher": return 
target.getStreamCachingSpoolCipher();
+        case "streamcachingspooldirectory":
+        case "StreamCachingSpoolDirectory": return 
target.getStreamCachingSpoolDirectory();
+        case "streamcachingspoolthreshold":
+        case "StreamCachingSpoolThreshold": return 
target.getStreamCachingSpoolThreshold();
+        case "streamcachingspoolusedheapmemorylimit":
+        case "StreamCachingSpoolUsedHeapMemoryLimit": return 
target.getStreamCachingSpoolUsedHeapMemoryLimit();
+        case "streamcachingspoolusedheapmemorythreshold":
+        case "StreamCachingSpoolUsedHeapMemoryThreshold": return 
target.getStreamCachingSpoolUsedHeapMemoryThreshold();
+        case "streamcachingstatisticsenabled":
+        case "StreamCachingStatisticsEnabled": return 
target.isStreamCachingStatisticsEnabled();
+        case "threadnamepattern":
+        case "ThreadNamePattern": return target.getThreadNamePattern();
+        case "tracing":
+        case "Tracing": return target.isTracing();
+        case "tracingpattern":
+        case "TracingPattern": return target.getTracingPattern();
+        case "usebreadcrumb":
+        case "UseBreadcrumb": return target.isUseBreadcrumb();
+        case "usedatatype":
+        case "UseDataType": return target.isUseDataType();
+        case "usemdclogging":
+        case "UseMdcLogging": return target.isUseMdcLogging();
+        case "xmlrests":
+        case "XmlRests": return target.getXmlRests();
+        case "xmlroutes":
+        case "XmlRoutes": return target.getXmlRoutes();
+        default: return null;
+        }
+    }
 }
 
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
index a45e877..1bb5386 100644
--- 
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
@@ -1,15 +1,19 @@
 /* Generated by camel build tools - do NOT edit this file! */
 package org.apache.camel.main;
 
+import java.util.Map;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.util.CaseInsensitiveMap;
 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 {
+public class Resilience4jConfigurationPropertiesConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
@@ -57,5 +61,75 @@ public class Resilience4jConfigurationPropertiesConfigurer 
extends org.apache.ca
         }
     }
 
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        Map<String, Object> answer = new CaseInsensitiveMap();
+        answer.put("AutomaticTransitionFromOpenToHalfOpenEnabled", 
java.lang.Boolean.class);
+        answer.put("BulkheadEnabled", java.lang.Boolean.class);
+        answer.put("BulkheadMaxConcurrentCalls", java.lang.Integer.class);
+        answer.put("BulkheadMaxWaitDuration", java.lang.Integer.class);
+        answer.put("CircuitBreakerRef", java.lang.String.class);
+        answer.put("ConfigRef", java.lang.String.class);
+        answer.put("FailureRateThreshold", java.lang.Float.class);
+        answer.put("MinimumNumberOfCalls", java.lang.Integer.class);
+        answer.put("PermittedNumberOfCallsInHalfOpenState", 
java.lang.Integer.class);
+        answer.put("SlidingWindowSize", java.lang.Integer.class);
+        answer.put("SlidingWindowType", java.lang.String.class);
+        answer.put("SlowCallDurationThreshold", java.lang.Integer.class);
+        answer.put("SlowCallRateThreshold", java.lang.Float.class);
+        answer.put("TimeoutCancelRunningFuture", java.lang.Boolean.class);
+        answer.put("TimeoutDuration", java.lang.Integer.class);
+        answer.put("TimeoutEnabled", java.lang.Boolean.class);
+        answer.put("TimeoutExecutorServiceRef", java.lang.String.class);
+        answer.put("WaitDurationInOpenState", java.lang.Integer.class);
+        answer.put("WritableStackTraceEnabled", java.lang.Boolean.class);
+        return answer;
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.main.Resilience4jConfigurationProperties target = 
(org.apache.camel.main.Resilience4jConfigurationProperties) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "automatictransitionfromopentohalfopenenabled":
+        case "AutomaticTransitionFromOpenToHalfOpenEnabled": return 
target.getAutomaticTransitionFromOpenToHalfOpenEnabled();
+        case "bulkheadenabled":
+        case "BulkheadEnabled": return target.getBulkheadEnabled();
+        case "bulkheadmaxconcurrentcalls":
+        case "BulkheadMaxConcurrentCalls": return 
target.getBulkheadMaxConcurrentCalls();
+        case "bulkheadmaxwaitduration":
+        case "BulkheadMaxWaitDuration": return 
target.getBulkheadMaxWaitDuration();
+        case "circuitbreakerref":
+        case "CircuitBreakerRef": return target.getCircuitBreakerRef();
+        case "configref":
+        case "ConfigRef": return target.getConfigRef();
+        case "failureratethreshold":
+        case "FailureRateThreshold": return target.getFailureRateThreshold();
+        case "minimumnumberofcalls":
+        case "MinimumNumberOfCalls": return target.getMinimumNumberOfCalls();
+        case "permittednumberofcallsinhalfopenstate":
+        case "PermittedNumberOfCallsInHalfOpenState": return 
target.getPermittedNumberOfCallsInHalfOpenState();
+        case "slidingwindowsize":
+        case "SlidingWindowSize": return target.getSlidingWindowSize();
+        case "slidingwindowtype":
+        case "SlidingWindowType": return target.getSlidingWindowType();
+        case "slowcalldurationthreshold":
+        case "SlowCallDurationThreshold": return 
target.getSlowCallDurationThreshold();
+        case "slowcallratethreshold":
+        case "SlowCallRateThreshold": return target.getSlowCallRateThreshold();
+        case "timeoutcancelrunningfuture":
+        case "TimeoutCancelRunningFuture": return 
target.getTimeoutCancelRunningFuture();
+        case "timeoutduration":
+        case "TimeoutDuration": return target.getTimeoutDuration();
+        case "timeoutenabled":
+        case "TimeoutEnabled": return target.getTimeoutEnabled();
+        case "timeoutexecutorserviceref":
+        case "TimeoutExecutorServiceRef": return 
target.getTimeoutExecutorServiceRef();
+        case "waitdurationinopenstate":
+        case "WaitDurationInOpenState": return 
target.getWaitDurationInOpenState();
+        case "writablestacktraceenabled":
+        case "WritableStackTraceEnabled": return 
target.getWritableStackTraceEnabled();
+        default: return null;
+        }
+    }
 }
 
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
index f4346f7..275583b 100644
--- 
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
@@ -1,15 +1,19 @@
 /* Generated by camel build tools - do NOT edit this file! */
 package org.apache.camel.main;
 
+import java.util.Map;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.util.CaseInsensitiveMap;
 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 {
+public class RestConfigurationPropertiesConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, PropertyConfigurerGetter {
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
@@ -75,5 +79,102 @@ public class RestConfigurationPropertiesConfigurer extends 
org.apache.camel.supp
         }
     }
 
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        Map<String, Object> answer = new CaseInsensitiveMap();
+        answer.put("ApiComponent", java.lang.String.class);
+        answer.put("ApiContextIdPattern", java.lang.String.class);
+        answer.put("ApiContextListing", boolean.class);
+        answer.put("ApiContextPath", java.lang.String.class);
+        answer.put("ApiContextRouteId", java.lang.String.class);
+        answer.put("ApiHost", java.lang.String.class);
+        answer.put("ApiProperties", java.util.Map.class);
+        answer.put("ApiVendorExtension", boolean.class);
+        answer.put("BindingMode", java.lang.String.class);
+        answer.put("ClientRequestValidation", boolean.class);
+        answer.put("Component", java.lang.String.class);
+        answer.put("ComponentProperties", java.util.Map.class);
+        answer.put("ConsumerProperties", java.util.Map.class);
+        answer.put("ContextPath", java.lang.String.class);
+        answer.put("CorsHeaders", java.util.Map.class);
+        answer.put("DataFormatProperties", java.util.Map.class);
+        answer.put("EnableCORS", boolean.class);
+        answer.put("EndpointProperties", java.util.Map.class);
+        answer.put("Host", java.lang.String.class);
+        answer.put("HostNameResolver", java.lang.String.class);
+        answer.put("JsonDataFormat", java.lang.String.class);
+        answer.put("Port", int.class);
+        answer.put("ProducerApiDoc", java.lang.String.class);
+        answer.put("ProducerComponent", java.lang.String.class);
+        answer.put("Scheme", java.lang.String.class);
+        answer.put("SkipBindingOnErrorCode", boolean.class);
+        answer.put("UseXForwardHeaders", boolean.class);
+        answer.put("XmlDataFormat", java.lang.String.class);
+        return answer;
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.main.RestConfigurationProperties target = 
(org.apache.camel.main.RestConfigurationProperties) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "apicomponent":
+        case "ApiComponent": return target.getApiComponent();
+        case "apicontextidpattern":
+        case "ApiContextIdPattern": return target.getApiContextIdPattern();
+        case "apicontextlisting":
+        case "ApiContextListing": return target.isApiContextListing();
+        case "apicontextpath":
+        case "ApiContextPath": return target.getApiContextPath();
+        case "apicontextrouteid":
+        case "ApiContextRouteId": return target.getApiContextRouteId();
+        case "apihost":
+        case "ApiHost": return target.getApiHost();
+        case "apiproperties":
+        case "ApiProperties": return target.getApiProperties();
+        case "apivendorextension":
+        case "ApiVendorExtension": return target.isApiVendorExtension();
+        case "bindingmode":
+        case "BindingMode": return target.getBindingMode();
+        case "clientrequestvalidation":
+        case "ClientRequestValidation": return 
target.isClientRequestValidation();
+        case "component":
+        case "Component": return target.getComponent();
+        case "componentproperties":
+        case "ComponentProperties": return target.getComponentProperties();
+        case "consumerproperties":
+        case "ConsumerProperties": return target.getConsumerProperties();
+        case "contextpath":
+        case "ContextPath": return target.getContextPath();
+        case "corsheaders":
+        case "CorsHeaders": return target.getCorsHeaders();
+        case "dataformatproperties":
+        case "DataFormatProperties": return target.getDataFormatProperties();
+        case "enablecors":
+        case "EnableCORS": return target.isEnableCORS();
+        case "endpointproperties":
+        case "EndpointProperties": return target.getEndpointProperties();
+        case "host":
+        case "Host": return target.getHost();
+        case "hostnameresolver":
+        case "HostNameResolver": return target.getHostNameResolver();
+        case "jsondataformat":
+        case "JsonDataFormat": return target.getJsonDataFormat();
+        case "port":
+        case "Port": return target.getPort();
+        case "producerapidoc":
+        case "ProducerApiDoc": return target.getProducerApiDoc();
+        case "producercomponent":
+        case "ProducerComponent": return target.getProducerComponent();
+        case "scheme":
+        case "Scheme": return target.getScheme();
+        case "skipbindingonerrorcode":
+        case "SkipBindingOnErrorCode": return 
target.isSkipBindingOnErrorCode();
+        case "usexforwardheaders":
+        case "UseXForwardHeaders": return target.isUseXForwardHeaders();
+        case "xmldataformat":
+        case "XmlDataFormat": return target.getXmlDataFormat();
+        default: return null;
+        }
+    }
 }
 
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateConfigurerMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateConfigurerMojo.java
index 1527855..74c574b 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateConfigurerMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateConfigurerMojo.java
@@ -171,7 +171,9 @@ public class GenerateConfigurerMojo extends 
AbstractGeneratorMojo {
         String psn = 
"org.apache.camel.support.component.PropertyConfigurerSupport";
 
         StringWriter sw = new StringWriter();
-        PropertyMainConfigurerGenerator.generatePropertyConfigurer(pn, cn, en, 
pfqn, psn, options, sw);
+//        PropertyMainConfigurerGenerator.generatePropertyConfigurer(pn, cn, 
en, pfqn, psn, options, sw);
+        PropertyConfigurerGenerator.generatePropertyConfigurer(pn, cn, en, 
pfqn, psn,
+                false, false, options, sw);
 
         String source = sw.toString();
 
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
deleted file mode 100644
index 1e98e55..0000000
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PropertyMainConfigurerGenerator.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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);
-    }
-
-}

Reply via email to