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 2019/06/22 08:38:21 UTC

[camel] 02/02: CAMEL-13663: camel-main-maven-plugin to generte spring-boot tooling metadata to fool Java editors to have code completions for Camel Main application.properties files.

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 ef9bca0dd9a27a20e12ea8410e70e28257d9c942
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Jun 22 10:38:03 2019 +0200

    CAMEL-13663: camel-main-maven-plugin to generte spring-boot tooling metadata to fool Java editors to have code completions for Camel Main application.properties files.
---
 .../camel-main-configuration-metadata.json         | 428 ++++++++++-----------
 .../META-INF/spring-configuration-metadata.json    | 428 ++++++++++-----------
 .../META-INF/spring-configuration-metadata.json    | 428 ++++++++++-----------
 .../apache/camel/maven/PrepareCamelMainMojo.java   |  22 +-
 4 files changed, 657 insertions(+), 649 deletions(-)

diff --git a/core/camel-main/src/main/resources/META-INF/camel-main-configuration-metadata.json b/core/camel-main/src/main/resources/META-INF/camel-main-configuration-metadata.json
index 34c79b8..546d90f 100644
--- a/core/camel-main/src/main/resources/META-INF/camel-main-configuration-metadata.json
+++ b/core/camel-main/src/main/resources/META-INF/camel-main-configuration-metadata.json
@@ -1,192 +1,6 @@
 {
   "properties": [
     {
-      "name": "camel.hystrix.allow-maximum-size-to-diverge-from-core-size",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Allows the configuration for maximumSize to take effect. That value can then be equal to, or higher, than coreSize"
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether to use a HystrixCircuitBreaker or not. If false no circuit-breaker logic will be used and all requests permitted. This is similar in effect to circuitBreakerForceClosed() except that continues tracking metrics and knowing whether it should be open/closed, this property results in not even instantiating a circuit-breaker."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-error-threshold-percentage",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Error percentage threshold (as whole number such as 50) at which point the circuit breaker will trip open and reject requests. It will stay tripped for the duration defined in circuitBreakerSleepWindowInMilliseconds; The error percentage this is compared against comes from HystrixCommandMetrics.getHealthCounts()."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-force-closed",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "If true the HystrixCircuitBreaker#allowRequest() will always return true to allow requests regardless of the error percentage from HystrixCommandMetrics.getHealthCounts(). The circuitBreakerForceOpen() property takes precedence so if it set to true this property does nothing."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-force-open",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "If true the HystrixCircuitBreaker.allowRequest() will always return false, causing the circuit to be open (tripped) and reject all requests. This property takes precedence over circuitBreakerForceClosed();"
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-request-volume-threshold",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Minimum number of requests in the metricsRollingStatisticalWindowInMilliseconds() that must exist before the HystrixCircuitBreaker will trip. If below this number the circuit will not trip regardless of error percentage."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-sleep-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "The time in milliseconds after a HystrixCircuitBreaker trips open that it should wait before trying requests again."
-    },
-    {
-      "name": "camel.hystrix.core-pool-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Core thread-pool size that gets passed to java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int)"
-    },
-    {
-      "name": "camel.hystrix.execution-isolation-semaphore-max-concurrent-requests",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of concurrent requests permitted to HystrixCommand.run(). Requests beyond the concurrent limit will be rejected. Applicable only when executionIsolationStrategy == SEMAPHORE."
-    },
-    {
-      "name": "camel.hystrix.execution-isolation-strategy",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "What isolation strategy HystrixCommand.run() will be executed with. If THREAD then it will be executed on a separate thread and concurrent requests limited by the number of threads in the thread-pool. If SEMAPHORE then it will be executed on the calling thread and concurrent requests limited by the semaphore count."
-    },
-    {
-      "name": "camel.hystrix.execution-isolation-thread-interrupt-on-timeout",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether the execution thread should attempt an interrupt (using Future#cancel ) when a thread times out. Applicable only when executionIsolationStrategy() == THREAD."
-    },
-    {
-      "name": "camel.hystrix.execution-timeout-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether the timeout mechanism is enabled for this command"
-    },
-    {
-      "name": "camel.hystrix.execution-timeout-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Time in milliseconds at which point the command will timeout and halt execution. If executionIsolationThreadInterruptOnTimeout == true and the command is thread-isolated, the executing thread will be interrupted. If the command is semaphore-isolated and a HystrixObservableCommand, that command will get unsubscribed."
-    },
-    {
-      "name": "camel.hystrix.fallback-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether HystrixCommand.getFallback() should be attempted when failure occurs."
-    },
-    {
-      "name": "camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of concurrent requests permitted to HystrixCommand.getFallback(). Requests beyond the concurrent limit will fail-fast and not attempt retrieving a fallback."
-    },
-    {
-      "name": "camel.hystrix.group-key",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Sets the group key to use. The default value is CamelHystrix."
-    },
-    {
-      "name": "camel.hystrix.keep-alive-time",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Keep-alive time in minutes that gets passed to ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit)"
-    },
-    {
-      "name": "camel.hystrix.maximum-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Maximum thread-pool size that gets passed to ThreadPoolExecutor#setMaximumPoolSize(int) . This is the maximum amount of concurrency that can be supported without starting to reject HystrixCommands. Please note that this setting only takes effect if you also set allowMaximumSizeToDivergeFromCoreSize"
-    },
-    {
-      "name": "camel.hystrix.max-queue-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Max queue size that gets passed to BlockingQueue in HystrixConcurrencyStrategy.getBlockingQueue(int) This should only affect the instantiation of a threadpool - it is not eliglible to change a queue size on the fly. For that, use queueSizeRejectionThreshold()."
-    },
-    {
-      "name": "camel.hystrix.metrics-health-snapshot-interval-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Time in milliseconds to wait between allowing health snapshots to be taken that calculate success and error percentages and affect HystrixCircuitBreaker.isOpen() status. On high-volume circuits the continual calculation of error percentage can become CPU intensive thus this controls how often it is calculated."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-bucket-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Maximum number of values stored in each bucket of the rolling percentile. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether percentile metrics should be captured using HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-window-buckets",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of buckets the rolling percentile window is broken into. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Duration of percentile rolling window in milliseconds. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-statistical-window-buckets",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-statistical-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "This property sets the duration of the statistical rolling window, in milliseconds. This is how long metrics are kept for the thread pool. The window is divided into buckets and rolls by those increments."
-    },
-    {
-      "name": "camel.hystrix.queue-size-rejection-threshold",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Queue size rejection threshold is an artificial max size at which rejections will occur even if maxQueueSize has not been reached. This is done because the maxQueueSize of a BlockingQueue can not be dynamically changed and we want to support dynamically changing the queue size that affects rejections. This is used by HystrixCommand when queuing a thread for execution."
-    },
-    {
-      "name": "camel.hystrix.request-log-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether HystrixCommand execution and events should be logged to HystrixRequestLog."
-    },
-    {
-      "name": "camel.hystrix.thread-pool-key",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Sets the thread pool key to use. Will by default use the same value as groupKey has been configured to use."
-    },
-    {
-      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-buckets",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
-    },
-    {
-      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Duration of statistical rolling window in milliseconds. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
-    },
-    {
       "name": "camel.main.allow-use-original-message",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
@@ -499,173 +313,359 @@
       "description": "To turn on MDC logging"
     },
     {
-      "name": "rest.api-component",
+      "name": "camel.hystrix.allow-maximum-size-to-diverge-from-core-size",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Allows the configuration for maximumSize to take effect. That value can then be equal to, or higher, than coreSize"
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether to use a HystrixCircuitBreaker or not. If false no circuit-breaker logic will be used and all requests permitted. This is similar in effect to circuitBreakerForceClosed() except that continues tracking metrics and knowing whether it should be open/closed, this property results in not even instantiating a circuit-breaker."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-error-threshold-percentage",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Error percentage threshold (as whole number such as 50) at which point the circuit breaker will trip open and reject requests. It will stay tripped for the duration defined in circuitBreakerSleepWindowInMilliseconds; The error percentage this is compared against comes from HystrixCommandMetrics.getHealthCounts()."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-force-closed",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "If true the HystrixCircuitBreaker#allowRequest() will always return true to allow requests regardless of the error percentage from HystrixCommandMetrics.getHealthCounts(). The circuitBreakerForceOpen() property takes precedence so if it set to true this property does nothing."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-force-open",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "If true the HystrixCircuitBreaker.allowRequest() will always return false, causing the circuit to be open (tripped) and reject all requests. This property takes precedence over circuitBreakerForceClosed();"
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-request-volume-threshold",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Minimum number of requests in the metricsRollingStatisticalWindowInMilliseconds() that must exist before the HystrixCircuitBreaker will trip. If below this number the circuit will not trip regardless of error percentage."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-sleep-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "The time in milliseconds after a HystrixCircuitBreaker trips open that it should wait before trying requests again."
+    },
+    {
+      "name": "camel.hystrix.core-pool-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Core thread-pool size that gets passed to java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int)"
+    },
+    {
+      "name": "camel.hystrix.execution-isolation-semaphore-max-concurrent-requests",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of concurrent requests permitted to HystrixCommand.run(). Requests beyond the concurrent limit will be rejected. Applicable only when executionIsolationStrategy == SEMAPHORE."
+    },
+    {
+      "name": "camel.hystrix.execution-isolation-strategy",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "What isolation strategy HystrixCommand.run() will be executed with. If THREAD then it will be executed on a separate thread and concurrent requests limited by the number of threads in the thread-pool. If SEMAPHORE then it will be executed on the calling thread and concurrent requests limited by the semaphore count."
+    },
+    {
+      "name": "camel.hystrix.execution-isolation-thread-interrupt-on-timeout",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether the execution thread should attempt an interrupt (using Future#cancel ) when a thread times out. Applicable only when executionIsolationStrategy() == THREAD."
+    },
+    {
+      "name": "camel.hystrix.execution-timeout-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether the timeout mechanism is enabled for this command"
+    },
+    {
+      "name": "camel.hystrix.execution-timeout-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Time in milliseconds at which point the command will timeout and halt execution. If executionIsolationThreadInterruptOnTimeout == true and the command is thread-isolated, the executing thread will be interrupted. If the command is semaphore-isolated and a HystrixObservableCommand, that command will get unsubscribed."
+    },
+    {
+      "name": "camel.hystrix.fallback-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether HystrixCommand.getFallback() should be attempted when failure occurs."
+    },
+    {
+      "name": "camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of concurrent requests permitted to HystrixCommand.getFallback(). Requests beyond the concurrent limit will fail-fast and not attempt retrieving a fallback."
+    },
+    {
+      "name": "camel.hystrix.group-key",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Sets the group key to use. The default value is CamelHystrix."
+    },
+    {
+      "name": "camel.hystrix.keep-alive-time",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Keep-alive time in minutes that gets passed to ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit)"
+    },
+    {
+      "name": "camel.hystrix.maximum-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Maximum thread-pool size that gets passed to ThreadPoolExecutor#setMaximumPoolSize(int) . This is the maximum amount of concurrency that can be supported without starting to reject HystrixCommands. Please note that this setting only takes effect if you also set allowMaximumSizeToDivergeFromCoreSize"
+    },
+    {
+      "name": "camel.hystrix.max-queue-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Max queue size that gets passed to BlockingQueue in HystrixConcurrencyStrategy.getBlockingQueue(int) This should only affect the instantiation of a threadpool - it is not eliglible to change a queue size on the fly. For that, use queueSizeRejectionThreshold()."
+    },
+    {
+      "name": "camel.hystrix.metrics-health-snapshot-interval-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Time in milliseconds to wait between allowing health snapshots to be taken that calculate success and error percentages and affect HystrixCircuitBreaker.isOpen() status. On high-volume circuits the continual calculation of error percentage can become CPU intensive thus this controls how often it is calculated."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-bucket-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Maximum number of values stored in each bucket of the rolling percentile. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether percentile metrics should be captured using HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-window-buckets",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of buckets the rolling percentile window is broken into. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Duration of percentile rolling window in milliseconds. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-statistical-window-buckets",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-statistical-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "This property sets the duration of the statistical rolling window, in milliseconds. This is how long metrics are kept for the thread pool. The window is divided into buckets and rolls by those increments."
+    },
+    {
+      "name": "camel.hystrix.queue-size-rejection-threshold",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Queue size rejection threshold is an artificial max size at which rejections will occur even if maxQueueSize has not been reached. This is done because the maxQueueSize of a BlockingQueue can not be dynamically changed and we want to support dynamically changing the queue size that affects rejections. This is used by HystrixCommand when queuing a thread for execution."
+    },
+    {
+      "name": "camel.hystrix.request-log-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether HystrixCommand execution and events should be logged to HystrixRequestLog."
+    },
+    {
+      "name": "camel.hystrix.thread-pool-key",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Sets the thread pool key to use. Will by default use the same value as groupKey has been configured to use."
+    },
+    {
+      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-buckets",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
+    },
+    {
+      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Duration of statistical rolling window in milliseconds. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
+    },
+    {
+      "name": "camel.rest.api-component",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the name of the Camel component to use as the REST API (such as swagger)"
     },
     {
-      "name": "rest.api-context-id-pattern",
+      "name": "camel.rest.api-context-id-pattern",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Optional CamelContext id pattern to only allow Rest APIs from rest services within CamelContext's which name matches the pattern. The pattern #name# refers to the CamelContext name, to match on the current CamelContext only. For any other value, the pattern uses the rules from org.apache.camel.support.EndpointHelper#matchPattern(String,String)"
     },
     {
-      "name": "rest.api-context-listing",
+      "name": "camel.rest.api-context-listing",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets whether listing of all available CamelContext's with REST services in the JVM is enabled. If enabled it allows to discover these contexts, if false then only the current CamelContext is in use."
     },
     {
-      "name": "rest.api-context-path",
+      "name": "camel.rest.api-context-path",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a leading API context-path the REST API services will be using. This can be used when using components such as camel-servlet where the deployed web application is deployed using a context-path."
     },
     {
-      "name": "rest.api-context-route-id",
+      "name": "camel.rest.api-context-route-id",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the route id to use for the route that services the REST API. The route will by default use an auto assigned route id."
     },
     {
-      "name": "rest.api-host",
+      "name": "camel.rest.api-host",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "To use an specific hostname for the API documentation (eg swagger) This can be used to override the generated host with this configured hostname"
     },
     {
-      "name": "rest.api-properties",
+      "name": "camel.rest.api-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on api level"
     },
     {
-      "name": "rest.api-vendor-extension",
+      "name": "camel.rest.api-vendor-extension",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Whether vendor extension is enabled in the Rest APIs. If enabled then Camel will include additional information as vendor extension (eg keys starting with x-) such as route ids, class names etc. Not all 3rd party API gateways and tools supports vendor-extensions when importing your API docs."
     },
     {
-      "name": "rest.binding-mode",
+      "name": "camel.rest.binding-mode",
       "type": "org.apache.camel.spi.RestBindingMode",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the binding mode to be used by the REST consumer",
       "defaultValue": "RestBindingMode.off"
     },
     {
-      "name": "rest.client-request-validation",
+      "name": "camel.rest.client-request-validation",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Whether to enable validation of the client request to check whether the Content-Type and Accept headers from the client is supported by the Rest-DSL configuration of its consumes/produces settings. This can be turned on, to enable this check. In case of validation error, then HTTP Status codes 415 or 406 is returned. The default value is false."
     },
     {
-      "name": "rest.component",
+      "name": "camel.rest.component",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the name of the Camel component to use as the REST consumer"
     },
     {
-      "name": "rest.component-properties",
+      "name": "camel.rest.component-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on component level"
     },
     {
-      "name": "rest.consumer-properties",
+      "name": "camel.rest.consumer-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on consumer level"
     },
     {
-      "name": "rest.context-path",
+      "name": "camel.rest.context-path",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a leading context-path the REST services will be using. This can be used when using components such as camel-servlet where the deployed web application is deployed using a context-path. Or for components such as camel-jetty or camel-netty4-http that includes a HTTP server."
     },
     {
-      "name": "rest.cors-headers",
+      "name": "camel.rest.cors-headers",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the CORS headers to use if CORS has been enabled."
     },
     {
-      "name": "rest.data-format-properties",
+      "name": "camel.rest.data-format-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on data format level"
     },
     {
-      "name": "rest.enable-cors",
+      "name": "camel.rest.enable-cors",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "To specify whether to enable CORS which means Camel will automatic include CORS in the HTTP headers in the response. This option is default false"
     },
     {
-      "name": "rest.endpoint-properties",
+      "name": "camel.rest.endpoint-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on endpoint level"
     },
     {
-      "name": "rest.host",
+      "name": "camel.rest.host",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the hostname to use by the REST consumer"
     },
     {
-      "name": "rest.host-name-resolver",
+      "name": "camel.rest.host-name-resolver",
       "type": "org.apache.camel.spi.RestHostNameResolver",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the resolver to use for resolving hostname",
       "defaultValue": "RestHostNameResolver.allLocalIp"
     },
     {
-      "name": "rest.json-data-format",
+      "name": "camel.rest.json-data-format",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a custom json data format to be used Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance."
     },
     {
-      "name": "rest.port",
+      "name": "camel.rest.port",
       "type": "java.lang.Integer",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the port to use by the REST consumer"
     },
     {
-      "name": "rest.producer-api-doc",
+      "name": "camel.rest.producer-api-doc",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the location of the api document (swagger api) the REST producer will use to validate the REST uri and query parameters are valid accordingly to the api document. This requires adding camel-swagger-java to the classpath, and any miss configuration will let Camel fail on startup and report the error(s). The location of the api document is loaded from classpath by default, but you can use file: or http: to refer to resources to load from file or http url."
     },
     {
-      "name": "rest.producer-component",
+      "name": "camel.rest.producer-component",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the name of the Camel component to use as the REST producer"
     },
     {
-      "name": "rest.scheme",
+      "name": "camel.rest.scheme",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the scheme to use by the REST consumer"
     },
     {
-      "name": "rest.skip-binding-on-error-code",
+      "name": "camel.rest.skip-binding-on-error-code",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Whether to skip binding output if there is a custom HTTP error code, and instead use the response body as-is. This option is default true.",
       "defaultValue": true
     },
     {
-      "name": "rest.use-x-forward-headers",
+      "name": "camel.rest.use-x-forward-headers",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "WWhether to use X-Forward headers to set host etc. for Swagger. This option is default true.",
       "defaultValue": true
     },
     {
-      "name": "rest.xml-data-format",
+      "name": "camel.rest.xml-data-format",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a custom xml data format to be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance."
diff --git a/examples/camel-example-main-artemis/src/main/resources/META-INF/spring-configuration-metadata.json b/examples/camel-example-main-artemis/src/main/resources/META-INF/spring-configuration-metadata.json
index d85ab89..d5e15cd 100644
--- a/examples/camel-example-main-artemis/src/main/resources/META-INF/spring-configuration-metadata.json
+++ b/examples/camel-example-main-artemis/src/main/resources/META-INF/spring-configuration-metadata.json
@@ -1,192 +1,6 @@
 {
   "properties": [
     {
-      "name": "camel.hystrix.allow-maximum-size-to-diverge-from-core-size",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Allows the configuration for maximumSize to take effect. That value can then be equal to, or higher, than coreSize"
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether to use a HystrixCircuitBreaker or not. If false no circuit-breaker logic will be used and all requests permitted. This is similar in effect to circuitBreakerForceClosed() except that continues tracking metrics and knowing whether it should be open/closed, this property results in not even instantiating a circuit-breaker."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-error-threshold-percentage",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Error percentage threshold (as whole number such as 50) at which point the circuit breaker will trip open and reject requests. It will stay tripped for the duration defined in circuitBreakerSleepWindowInMilliseconds; The error percentage this is compared against comes from HystrixCommandMetrics.getHealthCounts()."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-force-closed",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "If true the HystrixCircuitBreaker#allowRequest() will always return true to allow requests regardless of the error percentage from HystrixCommandMetrics.getHealthCounts(). The circuitBreakerForceOpen() property takes precedence so if it set to true this property does nothing."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-force-open",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "If true the HystrixCircuitBreaker.allowRequest() will always return false, causing the circuit to be open (tripped) and reject all requests. This property takes precedence over circuitBreakerForceClosed();"
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-request-volume-threshold",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Minimum number of requests in the metricsRollingStatisticalWindowInMilliseconds() that must exist before the HystrixCircuitBreaker will trip. If below this number the circuit will not trip regardless of error percentage."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-sleep-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "The time in milliseconds after a HystrixCircuitBreaker trips open that it should wait before trying requests again."
-    },
-    {
-      "name": "camel.hystrix.core-pool-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Core thread-pool size that gets passed to java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int)"
-    },
-    {
-      "name": "camel.hystrix.execution-isolation-semaphore-max-concurrent-requests",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of concurrent requests permitted to HystrixCommand.run(). Requests beyond the concurrent limit will be rejected. Applicable only when executionIsolationStrategy == SEMAPHORE."
-    },
-    {
-      "name": "camel.hystrix.execution-isolation-strategy",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "What isolation strategy HystrixCommand.run() will be executed with. If THREAD then it will be executed on a separate thread and concurrent requests limited by the number of threads in the thread-pool. If SEMAPHORE then it will be executed on the calling thread and concurrent requests limited by the semaphore count."
-    },
-    {
-      "name": "camel.hystrix.execution-isolation-thread-interrupt-on-timeout",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether the execution thread should attempt an interrupt (using Future#cancel ) when a thread times out. Applicable only when executionIsolationStrategy() == THREAD."
-    },
-    {
-      "name": "camel.hystrix.execution-timeout-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether the timeout mechanism is enabled for this command"
-    },
-    {
-      "name": "camel.hystrix.execution-timeout-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Time in milliseconds at which point the command will timeout and halt execution. If executionIsolationThreadInterruptOnTimeout == true and the command is thread-isolated, the executing thread will be interrupted. If the command is semaphore-isolated and a HystrixObservableCommand, that command will get unsubscribed."
-    },
-    {
-      "name": "camel.hystrix.fallback-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether HystrixCommand.getFallback() should be attempted when failure occurs."
-    },
-    {
-      "name": "camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of concurrent requests permitted to HystrixCommand.getFallback(). Requests beyond the concurrent limit will fail-fast and not attempt retrieving a fallback."
-    },
-    {
-      "name": "camel.hystrix.group-key",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Sets the group key to use. The default value is CamelHystrix."
-    },
-    {
-      "name": "camel.hystrix.keep-alive-time",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Keep-alive time in minutes that gets passed to ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit)"
-    },
-    {
-      "name": "camel.hystrix.maximum-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Maximum thread-pool size that gets passed to ThreadPoolExecutor#setMaximumPoolSize(int) . This is the maximum amount of concurrency that can be supported without starting to reject HystrixCommands. Please note that this setting only takes effect if you also set allowMaximumSizeToDivergeFromCoreSize"
-    },
-    {
-      "name": "camel.hystrix.max-queue-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Max queue size that gets passed to BlockingQueue in HystrixConcurrencyStrategy.getBlockingQueue(int) This should only affect the instantiation of a threadpool - it is not eliglible to change a queue size on the fly. For that, use queueSizeRejectionThreshold()."
-    },
-    {
-      "name": "camel.hystrix.metrics-health-snapshot-interval-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Time in milliseconds to wait between allowing health snapshots to be taken that calculate success and error percentages and affect HystrixCircuitBreaker.isOpen() status. On high-volume circuits the continual calculation of error percentage can become CPU intensive thus this controls how often it is calculated."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-bucket-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Maximum number of values stored in each bucket of the rolling percentile. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether percentile metrics should be captured using HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-window-buckets",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of buckets the rolling percentile window is broken into. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Duration of percentile rolling window in milliseconds. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-statistical-window-buckets",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-statistical-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "This property sets the duration of the statistical rolling window, in milliseconds. This is how long metrics are kept for the thread pool. The window is divided into buckets and rolls by those increments."
-    },
-    {
-      "name": "camel.hystrix.queue-size-rejection-threshold",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Queue size rejection threshold is an artificial max size at which rejections will occur even if maxQueueSize has not been reached. This is done because the maxQueueSize of a BlockingQueue can not be dynamically changed and we want to support dynamically changing the queue size that affects rejections. This is used by HystrixCommand when queuing a thread for execution."
-    },
-    {
-      "name": "camel.hystrix.request-log-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether HystrixCommand execution and events should be logged to HystrixRequestLog."
-    },
-    {
-      "name": "camel.hystrix.thread-pool-key",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Sets the thread pool key to use. Will by default use the same value as groupKey has been configured to use."
-    },
-    {
-      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-buckets",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
-    },
-    {
-      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Duration of statistical rolling window in milliseconds. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
-    },
-    {
       "name": "camel.main.allow-use-original-message",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
@@ -499,173 +313,359 @@
       "description": "To turn on MDC logging"
     },
     {
-      "name": "rest.api-component",
+      "name": "camel.hystrix.allow-maximum-size-to-diverge-from-core-size",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Allows the configuration for maximumSize to take effect. That value can then be equal to, or higher, than coreSize"
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether to use a HystrixCircuitBreaker or not. If false no circuit-breaker logic will be used and all requests permitted. This is similar in effect to circuitBreakerForceClosed() except that continues tracking metrics and knowing whether it should be open/closed, this property results in not even instantiating a circuit-breaker."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-error-threshold-percentage",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Error percentage threshold (as whole number such as 50) at which point the circuit breaker will trip open and reject requests. It will stay tripped for the duration defined in circuitBreakerSleepWindowInMilliseconds; The error percentage this is compared against comes from HystrixCommandMetrics.getHealthCounts()."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-force-closed",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "If true the HystrixCircuitBreaker#allowRequest() will always return true to allow requests regardless of the error percentage from HystrixCommandMetrics.getHealthCounts(). The circuitBreakerForceOpen() property takes precedence so if it set to true this property does nothing."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-force-open",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "If true the HystrixCircuitBreaker.allowRequest() will always return false, causing the circuit to be open (tripped) and reject all requests. This property takes precedence over circuitBreakerForceClosed();"
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-request-volume-threshold",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Minimum number of requests in the metricsRollingStatisticalWindowInMilliseconds() that must exist before the HystrixCircuitBreaker will trip. If below this number the circuit will not trip regardless of error percentage."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-sleep-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "The time in milliseconds after a HystrixCircuitBreaker trips open that it should wait before trying requests again."
+    },
+    {
+      "name": "camel.hystrix.core-pool-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Core thread-pool size that gets passed to java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int)"
+    },
+    {
+      "name": "camel.hystrix.execution-isolation-semaphore-max-concurrent-requests",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of concurrent requests permitted to HystrixCommand.run(). Requests beyond the concurrent limit will be rejected. Applicable only when executionIsolationStrategy == SEMAPHORE."
+    },
+    {
+      "name": "camel.hystrix.execution-isolation-strategy",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "What isolation strategy HystrixCommand.run() will be executed with. If THREAD then it will be executed on a separate thread and concurrent requests limited by the number of threads in the thread-pool. If SEMAPHORE then it will be executed on the calling thread and concurrent requests limited by the semaphore count."
+    },
+    {
+      "name": "camel.hystrix.execution-isolation-thread-interrupt-on-timeout",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether the execution thread should attempt an interrupt (using Future#cancel ) when a thread times out. Applicable only when executionIsolationStrategy() == THREAD."
+    },
+    {
+      "name": "camel.hystrix.execution-timeout-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether the timeout mechanism is enabled for this command"
+    },
+    {
+      "name": "camel.hystrix.execution-timeout-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Time in milliseconds at which point the command will timeout and halt execution. If executionIsolationThreadInterruptOnTimeout == true and the command is thread-isolated, the executing thread will be interrupted. If the command is semaphore-isolated and a HystrixObservableCommand, that command will get unsubscribed."
+    },
+    {
+      "name": "camel.hystrix.fallback-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether HystrixCommand.getFallback() should be attempted when failure occurs."
+    },
+    {
+      "name": "camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of concurrent requests permitted to HystrixCommand.getFallback(). Requests beyond the concurrent limit will fail-fast and not attempt retrieving a fallback."
+    },
+    {
+      "name": "camel.hystrix.group-key",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Sets the group key to use. The default value is CamelHystrix."
+    },
+    {
+      "name": "camel.hystrix.keep-alive-time",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Keep-alive time in minutes that gets passed to ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit)"
+    },
+    {
+      "name": "camel.hystrix.maximum-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Maximum thread-pool size that gets passed to ThreadPoolExecutor#setMaximumPoolSize(int) . This is the maximum amount of concurrency that can be supported without starting to reject HystrixCommands. Please note that this setting only takes effect if you also set allowMaximumSizeToDivergeFromCoreSize"
+    },
+    {
+      "name": "camel.hystrix.max-queue-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Max queue size that gets passed to BlockingQueue in HystrixConcurrencyStrategy.getBlockingQueue(int) This should only affect the instantiation of a threadpool - it is not eliglible to change a queue size on the fly. For that, use queueSizeRejectionThreshold()."
+    },
+    {
+      "name": "camel.hystrix.metrics-health-snapshot-interval-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Time in milliseconds to wait between allowing health snapshots to be taken that calculate success and error percentages and affect HystrixCircuitBreaker.isOpen() status. On high-volume circuits the continual calculation of error percentage can become CPU intensive thus this controls how often it is calculated."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-bucket-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Maximum number of values stored in each bucket of the rolling percentile. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether percentile metrics should be captured using HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-window-buckets",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of buckets the rolling percentile window is broken into. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Duration of percentile rolling window in milliseconds. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-statistical-window-buckets",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-statistical-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "This property sets the duration of the statistical rolling window, in milliseconds. This is how long metrics are kept for the thread pool. The window is divided into buckets and rolls by those increments."
+    },
+    {
+      "name": "camel.hystrix.queue-size-rejection-threshold",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Queue size rejection threshold is an artificial max size at which rejections will occur even if maxQueueSize has not been reached. This is done because the maxQueueSize of a BlockingQueue can not be dynamically changed and we want to support dynamically changing the queue size that affects rejections. This is used by HystrixCommand when queuing a thread for execution."
+    },
+    {
+      "name": "camel.hystrix.request-log-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether HystrixCommand execution and events should be logged to HystrixRequestLog."
+    },
+    {
+      "name": "camel.hystrix.thread-pool-key",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Sets the thread pool key to use. Will by default use the same value as groupKey has been configured to use."
+    },
+    {
+      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-buckets",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
+    },
+    {
+      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Duration of statistical rolling window in milliseconds. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
+    },
+    {
+      "name": "camel.rest.api-component",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the name of the Camel component to use as the REST API (such as swagger)"
     },
     {
-      "name": "rest.api-context-id-pattern",
+      "name": "camel.rest.api-context-id-pattern",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Optional CamelContext id pattern to only allow Rest APIs from rest services within CamelContext's which name matches the pattern. The pattern #name# refers to the CamelContext name, to match on the current CamelContext only. For any other value, the pattern uses the rules from org.apache.camel.support.EndpointHelper#matchPattern(String,String)"
     },
     {
-      "name": "rest.api-context-listing",
+      "name": "camel.rest.api-context-listing",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets whether listing of all available CamelContext's with REST services in the JVM is enabled. If enabled it allows to discover these contexts, if false then only the current CamelContext is in use."
     },
     {
-      "name": "rest.api-context-path",
+      "name": "camel.rest.api-context-path",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a leading API context-path the REST API services will be using. This can be used when using components such as camel-servlet where the deployed web application is deployed using a context-path."
     },
     {
-      "name": "rest.api-context-route-id",
+      "name": "camel.rest.api-context-route-id",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the route id to use for the route that services the REST API. The route will by default use an auto assigned route id."
     },
     {
-      "name": "rest.api-host",
+      "name": "camel.rest.api-host",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "To use an specific hostname for the API documentation (eg swagger) This can be used to override the generated host with this configured hostname"
     },
     {
-      "name": "rest.api-properties",
+      "name": "camel.rest.api-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on api level"
     },
     {
-      "name": "rest.api-vendor-extension",
+      "name": "camel.rest.api-vendor-extension",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Whether vendor extension is enabled in the Rest APIs. If enabled then Camel will include additional information as vendor extension (eg keys starting with x-) such as route ids, class names etc. Not all 3rd party API gateways and tools supports vendor-extensions when importing your API docs."
     },
     {
-      "name": "rest.binding-mode",
+      "name": "camel.rest.binding-mode",
       "type": "org.apache.camel.spi.RestBindingMode",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the binding mode to be used by the REST consumer",
       "defaultValue": "RestBindingMode.off"
     },
     {
-      "name": "rest.client-request-validation",
+      "name": "camel.rest.client-request-validation",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Whether to enable validation of the client request to check whether the Content-Type and Accept headers from the client is supported by the Rest-DSL configuration of its consumes/produces settings. This can be turned on, to enable this check. In case of validation error, then HTTP Status codes 415 or 406 is returned. The default value is false."
     },
     {
-      "name": "rest.component",
+      "name": "camel.rest.component",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the name of the Camel component to use as the REST consumer"
     },
     {
-      "name": "rest.component-properties",
+      "name": "camel.rest.component-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on component level"
     },
     {
-      "name": "rest.consumer-properties",
+      "name": "camel.rest.consumer-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on consumer level"
     },
     {
-      "name": "rest.context-path",
+      "name": "camel.rest.context-path",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a leading context-path the REST services will be using. This can be used when using components such as camel-servlet where the deployed web application is deployed using a context-path. Or for components such as camel-jetty or camel-netty4-http that includes a HTTP server."
     },
     {
-      "name": "rest.cors-headers",
+      "name": "camel.rest.cors-headers",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the CORS headers to use if CORS has been enabled."
     },
     {
-      "name": "rest.data-format-properties",
+      "name": "camel.rest.data-format-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on data format level"
     },
     {
-      "name": "rest.enable-cors",
+      "name": "camel.rest.enable-cors",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "To specify whether to enable CORS which means Camel will automatic include CORS in the HTTP headers in the response. This option is default false"
     },
     {
-      "name": "rest.endpoint-properties",
+      "name": "camel.rest.endpoint-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on endpoint level"
     },
     {
-      "name": "rest.host",
+      "name": "camel.rest.host",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the hostname to use by the REST consumer"
     },
     {
-      "name": "rest.host-name-resolver",
+      "name": "camel.rest.host-name-resolver",
       "type": "org.apache.camel.spi.RestHostNameResolver",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the resolver to use for resolving hostname",
       "defaultValue": "RestHostNameResolver.allLocalIp"
     },
     {
-      "name": "rest.json-data-format",
+      "name": "camel.rest.json-data-format",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a custom json data format to be used Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance."
     },
     {
-      "name": "rest.port",
+      "name": "camel.rest.port",
       "type": "java.lang.Integer",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the port to use by the REST consumer"
     },
     {
-      "name": "rest.producer-api-doc",
+      "name": "camel.rest.producer-api-doc",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the location of the api document (swagger api) the REST producer will use to validate the REST uri and query parameters are valid accordingly to the api document. This requires adding camel-swagger-java to the classpath, and any miss configuration will let Camel fail on startup and report the error(s). The location of the api document is loaded from classpath by default, but you can use file: or http: to refer to resources to load from file or http url."
     },
     {
-      "name": "rest.producer-component",
+      "name": "camel.rest.producer-component",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the name of the Camel component to use as the REST producer"
     },
     {
-      "name": "rest.scheme",
+      "name": "camel.rest.scheme",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the scheme to use by the REST consumer"
     },
     {
-      "name": "rest.skip-binding-on-error-code",
+      "name": "camel.rest.skip-binding-on-error-code",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Whether to skip binding output if there is a custom HTTP error code, and instead use the response body as-is. This option is default true.",
       "defaultValue": true
     },
     {
-      "name": "rest.use-x-forward-headers",
+      "name": "camel.rest.use-x-forward-headers",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "WWhether to use X-Forward headers to set host etc. for Swagger. This option is default true.",
       "defaultValue": true
     },
     {
-      "name": "rest.xml-data-format",
+      "name": "camel.rest.xml-data-format",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a custom xml data format to be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance."
diff --git a/examples/camel-example-main/src/main/resources/META-INF/spring-configuration-metadata.json b/examples/camel-example-main/src/main/resources/META-INF/spring-configuration-metadata.json
index 8008614..5a9d018 100644
--- a/examples/camel-example-main/src/main/resources/META-INF/spring-configuration-metadata.json
+++ b/examples/camel-example-main/src/main/resources/META-INF/spring-configuration-metadata.json
@@ -1,192 +1,6 @@
 {
   "properties": [
     {
-      "name": "camel.hystrix.allow-maximum-size-to-diverge-from-core-size",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Allows the configuration for maximumSize to take effect. That value can then be equal to, or higher, than coreSize"
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether to use a HystrixCircuitBreaker or not. If false no circuit-breaker logic will be used and all requests permitted. This is similar in effect to circuitBreakerForceClosed() except that continues tracking metrics and knowing whether it should be open/closed, this property results in not even instantiating a circuit-breaker."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-error-threshold-percentage",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Error percentage threshold (as whole number such as 50) at which point the circuit breaker will trip open and reject requests. It will stay tripped for the duration defined in circuitBreakerSleepWindowInMilliseconds; The error percentage this is compared against comes from HystrixCommandMetrics.getHealthCounts()."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-force-closed",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "If true the HystrixCircuitBreaker#allowRequest() will always return true to allow requests regardless of the error percentage from HystrixCommandMetrics.getHealthCounts(). The circuitBreakerForceOpen() property takes precedence so if it set to true this property does nothing."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-force-open",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "If true the HystrixCircuitBreaker.allowRequest() will always return false, causing the circuit to be open (tripped) and reject all requests. This property takes precedence over circuitBreakerForceClosed();"
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-request-volume-threshold",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Minimum number of requests in the metricsRollingStatisticalWindowInMilliseconds() that must exist before the HystrixCircuitBreaker will trip. If below this number the circuit will not trip regardless of error percentage."
-    },
-    {
-      "name": "camel.hystrix.circuit-breaker-sleep-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "The time in milliseconds after a HystrixCircuitBreaker trips open that it should wait before trying requests again."
-    },
-    {
-      "name": "camel.hystrix.core-pool-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Core thread-pool size that gets passed to java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int)"
-    },
-    {
-      "name": "camel.hystrix.execution-isolation-semaphore-max-concurrent-requests",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of concurrent requests permitted to HystrixCommand.run(). Requests beyond the concurrent limit will be rejected. Applicable only when executionIsolationStrategy == SEMAPHORE."
-    },
-    {
-      "name": "camel.hystrix.execution-isolation-strategy",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "What isolation strategy HystrixCommand.run() will be executed with. If THREAD then it will be executed on a separate thread and concurrent requests limited by the number of threads in the thread-pool. If SEMAPHORE then it will be executed on the calling thread and concurrent requests limited by the semaphore count."
-    },
-    {
-      "name": "camel.hystrix.execution-isolation-thread-interrupt-on-timeout",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether the execution thread should attempt an interrupt (using Future#cancel ) when a thread times out. Applicable only when executionIsolationStrategy() == THREAD."
-    },
-    {
-      "name": "camel.hystrix.execution-timeout-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether the timeout mechanism is enabled for this command"
-    },
-    {
-      "name": "camel.hystrix.execution-timeout-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Time in milliseconds at which point the command will timeout and halt execution. If executionIsolationThreadInterruptOnTimeout == true and the command is thread-isolated, the executing thread will be interrupted. If the command is semaphore-isolated and a HystrixObservableCommand, that command will get unsubscribed."
-    },
-    {
-      "name": "camel.hystrix.fallback-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether HystrixCommand.getFallback() should be attempted when failure occurs."
-    },
-    {
-      "name": "camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of concurrent requests permitted to HystrixCommand.getFallback(). Requests beyond the concurrent limit will fail-fast and not attempt retrieving a fallback."
-    },
-    {
-      "name": "camel.hystrix.group-key",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Sets the group key to use. The default value is CamelHystrix."
-    },
-    {
-      "name": "camel.hystrix.keep-alive-time",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Keep-alive time in minutes that gets passed to ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit)"
-    },
-    {
-      "name": "camel.hystrix.maximum-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Maximum thread-pool size that gets passed to ThreadPoolExecutor#setMaximumPoolSize(int) . This is the maximum amount of concurrency that can be supported without starting to reject HystrixCommands. Please note that this setting only takes effect if you also set allowMaximumSizeToDivergeFromCoreSize"
-    },
-    {
-      "name": "camel.hystrix.max-queue-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Max queue size that gets passed to BlockingQueue in HystrixConcurrencyStrategy.getBlockingQueue(int) This should only affect the instantiation of a threadpool - it is not eliglible to change a queue size on the fly. For that, use queueSizeRejectionThreshold()."
-    },
-    {
-      "name": "camel.hystrix.metrics-health-snapshot-interval-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Time in milliseconds to wait between allowing health snapshots to be taken that calculate success and error percentages and affect HystrixCircuitBreaker.isOpen() status. On high-volume circuits the continual calculation of error percentage can become CPU intensive thus this controls how often it is calculated."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-bucket-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Maximum number of values stored in each bucket of the rolling percentile. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether percentile metrics should be captured using HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-window-buckets",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of buckets the rolling percentile window is broken into. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-percentile-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Duration of percentile rolling window in milliseconds. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-statistical-window-buckets",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside HystrixCommandMetrics."
-    },
-    {
-      "name": "camel.hystrix.metrics-rolling-statistical-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "This property sets the duration of the statistical rolling window, in milliseconds. This is how long metrics are kept for the thread pool. The window is divided into buckets and rolls by those increments."
-    },
-    {
-      "name": "camel.hystrix.queue-size-rejection-threshold",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Queue size rejection threshold is an artificial max size at which rejections will occur even if maxQueueSize has not been reached. This is done because the maxQueueSize of a BlockingQueue can not be dynamically changed and we want to support dynamically changing the queue size that affects rejections. This is used by HystrixCommand when queuing a thread for execution."
-    },
-    {
-      "name": "camel.hystrix.request-log-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Whether HystrixCommand execution and events should be logged to HystrixRequestLog."
-    },
-    {
-      "name": "camel.hystrix.thread-pool-key",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Sets the thread pool key to use. Will by default use the same value as groupKey has been configured to use."
-    },
-    {
-      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-buckets",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
-    },
-    {
-      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
-      "description": "Duration of statistical rolling window in milliseconds. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
-    },
-    {
       "name": "camel.main.allow-use-original-message",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
@@ -499,173 +313,359 @@
       "description": "To turn on MDC logging"
     },
     {
-      "name": "rest.api-component",
+      "name": "camel.hystrix.allow-maximum-size-to-diverge-from-core-size",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Allows the configuration for maximumSize to take effect. That value can then be equal to, or higher, than coreSize"
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether to use a HystrixCircuitBreaker or not. If false no circuit-breaker logic will be used and all requests permitted. This is similar in effect to circuitBreakerForceClosed() except that continues tracking metrics and knowing whether it should be open/closed, this property results in not even instantiating a circuit-breaker."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-error-threshold-percentage",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Error percentage threshold (as whole number such as 50) at which point the circuit breaker will trip open and reject requests. It will stay tripped for the duration defined in circuitBreakerSleepWindowInMilliseconds; The error percentage this is compared against comes from HystrixCommandMetrics.getHealthCounts()."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-force-closed",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "If true the HystrixCircuitBreaker#allowRequest() will always return true to allow requests regardless of the error percentage from HystrixCommandMetrics.getHealthCounts(). The circuitBreakerForceOpen() property takes precedence so if it set to true this property does nothing."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-force-open",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "If true the HystrixCircuitBreaker.allowRequest() will always return false, causing the circuit to be open (tripped) and reject all requests. This property takes precedence over circuitBreakerForceClosed();"
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-request-volume-threshold",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Minimum number of requests in the metricsRollingStatisticalWindowInMilliseconds() that must exist before the HystrixCircuitBreaker will trip. If below this number the circuit will not trip regardless of error percentage."
+    },
+    {
+      "name": "camel.hystrix.circuit-breaker-sleep-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "The time in milliseconds after a HystrixCircuitBreaker trips open that it should wait before trying requests again."
+    },
+    {
+      "name": "camel.hystrix.core-pool-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Core thread-pool size that gets passed to java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int)"
+    },
+    {
+      "name": "camel.hystrix.execution-isolation-semaphore-max-concurrent-requests",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of concurrent requests permitted to HystrixCommand.run(). Requests beyond the concurrent limit will be rejected. Applicable only when executionIsolationStrategy == SEMAPHORE."
+    },
+    {
+      "name": "camel.hystrix.execution-isolation-strategy",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "What isolation strategy HystrixCommand.run() will be executed with. If THREAD then it will be executed on a separate thread and concurrent requests limited by the number of threads in the thread-pool. If SEMAPHORE then it will be executed on the calling thread and concurrent requests limited by the semaphore count."
+    },
+    {
+      "name": "camel.hystrix.execution-isolation-thread-interrupt-on-timeout",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether the execution thread should attempt an interrupt (using Future#cancel ) when a thread times out. Applicable only when executionIsolationStrategy() == THREAD."
+    },
+    {
+      "name": "camel.hystrix.execution-timeout-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether the timeout mechanism is enabled for this command"
+    },
+    {
+      "name": "camel.hystrix.execution-timeout-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Time in milliseconds at which point the command will timeout and halt execution. If executionIsolationThreadInterruptOnTimeout == true and the command is thread-isolated, the executing thread will be interrupted. If the command is semaphore-isolated and a HystrixObservableCommand, that command will get unsubscribed."
+    },
+    {
+      "name": "camel.hystrix.fallback-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether HystrixCommand.getFallback() should be attempted when failure occurs."
+    },
+    {
+      "name": "camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of concurrent requests permitted to HystrixCommand.getFallback(). Requests beyond the concurrent limit will fail-fast and not attempt retrieving a fallback."
+    },
+    {
+      "name": "camel.hystrix.group-key",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Sets the group key to use. The default value is CamelHystrix."
+    },
+    {
+      "name": "camel.hystrix.keep-alive-time",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Keep-alive time in minutes that gets passed to ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit)"
+    },
+    {
+      "name": "camel.hystrix.maximum-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Maximum thread-pool size that gets passed to ThreadPoolExecutor#setMaximumPoolSize(int) . This is the maximum amount of concurrency that can be supported without starting to reject HystrixCommands. Please note that this setting only takes effect if you also set allowMaximumSizeToDivergeFromCoreSize"
+    },
+    {
+      "name": "camel.hystrix.max-queue-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Max queue size that gets passed to BlockingQueue in HystrixConcurrencyStrategy.getBlockingQueue(int) This should only affect the instantiation of a threadpool - it is not eliglible to change a queue size on the fly. For that, use queueSizeRejectionThreshold()."
+    },
+    {
+      "name": "camel.hystrix.metrics-health-snapshot-interval-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Time in milliseconds to wait between allowing health snapshots to be taken that calculate success and error percentages and affect HystrixCircuitBreaker.isOpen() status. On high-volume circuits the continual calculation of error percentage can become CPU intensive thus this controls how often it is calculated."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-bucket-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Maximum number of values stored in each bucket of the rolling percentile. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether percentile metrics should be captured using HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-window-buckets",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of buckets the rolling percentile window is broken into. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-percentile-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Duration of percentile rolling window in milliseconds. This is passed into HystrixRollingPercentile inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-statistical-window-buckets",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside HystrixCommandMetrics."
+    },
+    {
+      "name": "camel.hystrix.metrics-rolling-statistical-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "This property sets the duration of the statistical rolling window, in milliseconds. This is how long metrics are kept for the thread pool. The window is divided into buckets and rolls by those increments."
+    },
+    {
+      "name": "camel.hystrix.queue-size-rejection-threshold",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Queue size rejection threshold is an artificial max size at which rejections will occur even if maxQueueSize has not been reached. This is done because the maxQueueSize of a BlockingQueue can not be dynamically changed and we want to support dynamically changing the queue size that affects rejections. This is used by HystrixCommand when queuing a thread for execution."
+    },
+    {
+      "name": "camel.hystrix.request-log-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Whether HystrixCommand execution and events should be logged to HystrixRequestLog."
+    },
+    {
+      "name": "camel.hystrix.thread-pool-key",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Sets the thread pool key to use. Will by default use the same value as groupKey has been configured to use."
+    },
+    {
+      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-buckets",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Number of buckets the rolling statistical window is broken into. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
+    },
+    {
+      "name": "camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Duration of statistical rolling window in milliseconds. This is passed into HystrixRollingNumber inside each HystrixThreadPoolMetrics instance."
+    },
+    {
+      "name": "camel.rest.api-component",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the name of the Camel component to use as the REST API (such as swagger)"
     },
     {
-      "name": "rest.api-context-id-pattern",
+      "name": "camel.rest.api-context-id-pattern",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Optional CamelContext id pattern to only allow Rest APIs from rest services within CamelContext's which name matches the pattern. The pattern #name# refers to the CamelContext name, to match on the current CamelContext only. For any other value, the pattern uses the rules from org.apache.camel.support.EndpointHelper#matchPattern(String,String)"
     },
     {
-      "name": "rest.api-context-listing",
+      "name": "camel.rest.api-context-listing",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets whether listing of all available CamelContext's with REST services in the JVM is enabled. If enabled it allows to discover these contexts, if false then only the current CamelContext is in use."
     },
     {
-      "name": "rest.api-context-path",
+      "name": "camel.rest.api-context-path",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a leading API context-path the REST API services will be using. This can be used when using components such as camel-servlet where the deployed web application is deployed using a context-path."
     },
     {
-      "name": "rest.api-context-route-id",
+      "name": "camel.rest.api-context-route-id",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the route id to use for the route that services the REST API. The route will by default use an auto assigned route id."
     },
     {
-      "name": "rest.api-host",
+      "name": "camel.rest.api-host",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "To use an specific hostname for the API documentation (eg swagger) This can be used to override the generated host with this configured hostname"
     },
     {
-      "name": "rest.api-properties",
+      "name": "camel.rest.api-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on api level"
     },
     {
-      "name": "rest.api-vendor-extension",
+      "name": "camel.rest.api-vendor-extension",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Whether vendor extension is enabled in the Rest APIs. If enabled then Camel will include additional information as vendor extension (eg keys starting with x-) such as route ids, class names etc. Not all 3rd party API gateways and tools supports vendor-extensions when importing your API docs."
     },
     {
-      "name": "rest.binding-mode",
+      "name": "camel.rest.binding-mode",
       "type": "org.apache.camel.spi.RestBindingMode",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the binding mode to be used by the REST consumer",
       "defaultValue": "RestBindingMode.off"
     },
     {
-      "name": "rest.client-request-validation",
+      "name": "camel.rest.client-request-validation",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Whether to enable validation of the client request to check whether the Content-Type and Accept headers from the client is supported by the Rest-DSL configuration of its consumes/produces settings. This can be turned on, to enable this check. In case of validation error, then HTTP Status codes 415 or 406 is returned. The default value is false."
     },
     {
-      "name": "rest.component",
+      "name": "camel.rest.component",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the name of the Camel component to use as the REST consumer"
     },
     {
-      "name": "rest.component-properties",
+      "name": "camel.rest.component-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on component level"
     },
     {
-      "name": "rest.consumer-properties",
+      "name": "camel.rest.consumer-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on consumer level"
     },
     {
-      "name": "rest.context-path",
+      "name": "camel.rest.context-path",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a leading context-path the REST services will be using. This can be used when using components such as camel-servlet where the deployed web application is deployed using a context-path. Or for components such as camel-jetty or camel-netty4-http that includes a HTTP server."
     },
     {
-      "name": "rest.cors-headers",
+      "name": "camel.rest.cors-headers",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the CORS headers to use if CORS has been enabled."
     },
     {
-      "name": "rest.data-format-properties",
+      "name": "camel.rest.data-format-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on data format level"
     },
     {
-      "name": "rest.enable-cors",
+      "name": "camel.rest.enable-cors",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "To specify whether to enable CORS which means Camel will automatic include CORS in the HTTP headers in the response. This option is default false"
     },
     {
-      "name": "rest.endpoint-properties",
+      "name": "camel.rest.endpoint-properties",
       "type": "java.util.Map",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets additional options on endpoint level"
     },
     {
-      "name": "rest.host",
+      "name": "camel.rest.host",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the hostname to use by the REST consumer"
     },
     {
-      "name": "rest.host-name-resolver",
+      "name": "camel.rest.host-name-resolver",
       "type": "org.apache.camel.spi.RestHostNameResolver",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the resolver to use for resolving hostname",
       "defaultValue": "RestHostNameResolver.allLocalIp"
     },
     {
-      "name": "rest.json-data-format",
+      "name": "camel.rest.json-data-format",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a custom json data format to be used Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance."
     },
     {
-      "name": "rest.port",
+      "name": "camel.rest.port",
       "type": "java.lang.Integer",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the port to use by the REST consumer"
     },
     {
-      "name": "rest.producer-api-doc",
+      "name": "camel.rest.producer-api-doc",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the location of the api document (swagger api) the REST producer will use to validate the REST uri and query parameters are valid accordingly to the api document. This requires adding camel-swagger-java to the classpath, and any miss configuration will let Camel fail on startup and report the error(s). The location of the api document is loaded from classpath by default, but you can use file: or http: to refer to resources to load from file or http url."
     },
     {
-      "name": "rest.producer-component",
+      "name": "camel.rest.producer-component",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the name of the Camel component to use as the REST producer"
     },
     {
-      "name": "rest.scheme",
+      "name": "camel.rest.scheme",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets the scheme to use by the REST consumer"
     },
     {
-      "name": "rest.skip-binding-on-error-code",
+      "name": "camel.rest.skip-binding-on-error-code",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Whether to skip binding output if there is a custom HTTP error code, and instead use the response body as-is. This option is default true.",
       "defaultValue": true
     },
     {
-      "name": "rest.use-x-forward-headers",
+      "name": "camel.rest.use-x-forward-headers",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "WWhether to use X-Forward headers to set host etc. for Swagger. This option is default true.",
       "defaultValue": true
     },
     {
-      "name": "rest.xml-data-format",
+      "name": "camel.rest.xml-data-format",
       "type": "java.lang.String",
       "sourceType": "org.apache.camel.spi.RestConfiguration",
       "description": "Sets a custom xml data format to be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance."
diff --git a/tooling/maven/camel-main-package-maven-plugin/src/main/java/org/apache/camel/maven/PrepareCamelMainMojo.java b/tooling/maven/camel-main-package-maven-plugin/src/main/java/org/apache/camel/maven/PrepareCamelMainMojo.java
index c89661f..e2333b7 100644
--- a/tooling/maven/camel-main-package-maven-plugin/src/main/java/org/apache/camel/maven/PrepareCamelMainMojo.java
+++ b/tooling/maven/camel-main-package-maven-plugin/src/main/java/org/apache/camel/maven/PrepareCamelMainMojo.java
@@ -67,13 +67,13 @@ public class PrepareCamelMainMojo extends AbstractMojo {
             try {
                 List<ConfigurationModel> model = parser.parseConfigurationSource(file);
                 // compute prefix for name
-                String prefix = "camel.";
+                String prefix;
                 if (file.getName().contains("Hystrix")) {
-                    prefix += "hystrix.";
+                    prefix = "camel.hystrix.";
                 } else if (file.getName().contains("Rest")) {
-                    prefix += "rest.";
+                    prefix = "camel.rest.";
                 } else {
-                    prefix += "main.";
+                    prefix = "camel.main.";
                 }
                 final String namePrefix = prefix;
                 model.stream().forEach(m -> m.setName(namePrefix + m.getName()));
@@ -87,14 +87,22 @@ public class PrepareCamelMainMojo extends AbstractMojo {
         File restConfig = new File(buildDir, "../../camel-api/src/main/java/org/apache/camel/spi/RestConfiguration.java");
         try {
             List<ConfigurationModel> model = parser.parseConfigurationSource(restConfig);
-            model.stream().forEach(m -> m.setName("rest." + m.getName()));
+            model.stream().forEach(m -> m.setName("camel.rest." + m.getName()));
             data.addAll(model);
         } catch (Exception e) {
             throw new MojoFailureException("Error parsing file " + restConfig + " due " + e.getMessage(), e);
         }
 
-        // lets sort so they are always ordered
-        data.sort((o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName()));
+        // lets sort so they are always ordered (but camel.main in top)
+        data.sort((o1, o2) -> {
+            if (o1.getName().startsWith("camel.main.") && !o2.getName().startsWith("camel.main.")) {
+                return -1;
+            } else if (!o1.getName().startsWith("camel.main.") && o2.getName().startsWith("camel.main.")) {
+                return 1;
+            } else {
+                return o1.getName().compareToIgnoreCase(o2.getName());
+            }
+        });
 
         if (!data.isEmpty()) {
             StringBuilder sb = new StringBuilder();