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


The following commit(s) were added to refs/heads/master by this push:
     new edb162b  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.
edb162b is described below

commit edb162b6a5761866704f206670c21a850ba7e010
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Jun 21 15:26:04 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         |  268 ++--
 examples/camel-example-main/pom.xml                |   20 +
 .../META-INF/spring-configuration-metadata.json    | 1286 ++++++++++++++++++++
 .../apache/camel/maven/PrepareCamelMainMojo.java   |    4 +-
 4 files changed, 1443 insertions(+), 135 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 51834be..afb438b 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,295 +1,295 @@
 {
   "properties": [
     {
-      "name": "camel.main.allow-use-original-message",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
-      "description": "Sets whether to allow access to the original message 
from Camel's error handler, or from 
org.apache.camel.spi.UnitOfWork.getOriginalInMessage(). Turning this off can 
optimize performance, as defensive copy of the original message is not needed. 
Default is false."
-    },
-    {
-      "name": "camel.main.auto-configuration-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
-      "description": "Whether auto configuration of 
components/dataformats/languages is enabled or not. When enabled the 
configuration parameters are loaded from the properties component and 
optionally from the classpath file 
META-INF/services/org/apache/camel/autowire.properties. You can prefix the 
parameters in the properties file with: - camel.component.name.option1=value1 - 
camel.component.name.option2=value2 - camel.dataformat.name.option1=value1 - 
camel.dataformat.name.option2=valu [...]
-      "defaultValue": true
-    },
-    {
-      "name": "camel.main.auto-startup",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
-      "description": "Sets whether the object should automatically start when 
Camel starts. Important: Currently only routes can be disabled, as 
CamelContext's are always started. Note: When setting auto startup false on 
CamelContext then that takes precedence and no routes is started. You would 
need to start CamelContext explicit using the 
org.apache.camel.CamelContext.start() method, to start the context, and then 
you would need to start the routes manually using CamelContext.getRouteC [...]
-      "defaultValue": true
-    },
-    {
-      "name": "camel.main.autowire-component-properties",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
-      "description": "Whether autowiring components with properties that are 
of same type, which has been added to the Camel registry, as a singleton 
instance. This is used for convention over configuration to inject DataSource, 
AmazonLogin instances to the components. <p/> This option is default enabled.",
-      "defaultValue": true
-    },
-    {
-      "name": "camel.main.autowire-component-properties-allow-private-setter",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
-      "description": "Whether autowiring components allows to use private 
setter method when setting the value. This may be needed in some rare 
situations when some configuration classes may configure via constructors over 
setters. But constructor configuration is more cumbersome to use via 
.properties files etc.",
-      "defaultValue": true
-    },
-    {
-      "name": "camel.main.autowire-component-properties-deep",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
-      "description": "Whether autowiring components (with deep nesting by 
attempting to walk as deep down the object graph by creating new empty objects 
on the way if needed) with properties that are of same type, which has been 
added to the Camel registry, as a singleton instance. This is used for 
convention over configuration to inject DataSource, AmazonLogin instances to 
the components. <p/> This option is default disabled."
-    },
-    {
-      "name": "camel.main.consumer-template-cache-size",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
-      "description": "Consumer template endpoints cache size.",
-      "defaultValue": 1000
-    },
-    {
-      "name": "camel.main.duration",
-      "type": "java.lang.Long",
-      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
-      "description": "Sets the duration (in seconds) to run the application 
until it should be terminated. Defaults to -1. Any value <= 0 will run 
forever.",
-      "defaultValue": -1
-    },
-    {
-      "name": "camel.main.duration-hit-exit-code",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
-      "description": "Sets the exit code for the application if duration was 
hit"
-    },
-    {
-      "name": "camel.main.duration-max-idle-seconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
-      "description": "To specify for how long time in seconds Camel can be 
idle before automatic terminating the JVM. You can use this to run Camel for a 
short while."
-    },
-    {
-      "name": "camel.main.duration-max-messages",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
-      "description": "To specify how many messages to process by Camel before 
automatic terminating the JVM. You can use this to run Camel for a short while."
-    },
-    {
-      "name": "camel.main.duration-max-seconds",
-      "type": "java.lang.Integer",
-      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
-      "description": "To specify for how long time in seconds to keep running 
the JVM before automatic terminating the JVM. You can use this to run Camel for 
a short while."
-    },
-    {
-      "name": "camel.main.endpoint-runtime-statistics-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
-      "description": "Sets whether endpoint runtime statistics is enabled 
(gathers runtime usage of each incoming and outgoing endpoints). The default 
value is false."
-    },
-    {
-      "name": "camel.main.file-configurations",
-      "type": "java.lang.String",
-      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
-      "description": "Directory to load additional configuration files that 
contains configuration values that takes precedence over any other 
configuration. This can be used to refer to files that may have secret 
configuration that has been mounted on the file system for containers. You can 
specify a pattern to load from sub directories and a name pattern such as 
/var/app/secret/*.properties, multiple directories can be separated by comma."
-    },
-    {
-      "name": "camel.main.handle-fault",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
-      "description": "Sets whether fault handling is enabled or not. Default 
is false."
-    },
-    {
-      "name": "camel.main.hangup-interceptor-enabled",
-      "type": "java.lang.Boolean",
-      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
-      "description": "Whether to use graceful hangup when Camel is stopping or 
when the JVM terminates.",
-      "defaultValue": true
-    },
-    {
-      "name": 
"camel.main.hystrix.allow-maximum-size-to-diverge-from-core-size",
+      "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.main.hystrix.circuit-breaker-enabled",
+      "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. <p> 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.main.hystrix.circuit-breaker-error-threshold-percentage",
+      "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. <p> It 
will stay tripped for the duration defined in 
circuitBreakerSleepWindowInMilliseconds; <p> The error percentage this is 
compared against comes from HystrixCommandMetrics.getHealthCounts()."
     },
     {
-      "name": "camel.main.hystrix.circuit-breaker-force-closed",
+      "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(). <p> The circuitBreakerForceOpen() 
property takes precedence so if it set to true this property does nothing."
     },
     {
-      "name": "camel.main.hystrix.circuit-breaker-force-open",
+      "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. <p> This property takes precedence over circuitBreakerForceClosed();"
     },
     {
-      "name": "camel.main.hystrix.circuit-breaker-request-volume-threshold",
+      "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. <p> If below this number the circuit will not 
trip regardless of error percentage."
     },
     {
-      "name": 
"camel.main.hystrix.circuit-breaker-sleep-window-in-milliseconds",
+      "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.main.hystrix.core-pool-size",
+      "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  {@link 
java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int)}"
     },
     {
-      "name": 
"camel.main.hystrix.execution-isolation-semaphore-max-concurrent-requests",
+      "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. 
<p> Applicable only when executionIsolationStrategy == SEMAPHORE."
     },
     {
-      "name": "camel.main.hystrix.execution-isolation-strategy",
+      "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. <p> If THREAD then it will be executed on a separate thread and 
concurrent requests limited by the number of threads in the thread-pool. <p> If 
SEMAPHORE then it will be executed on the calling thread and concurrent 
requests limited by the semaphore count."
     },
     {
-      "name": 
"camel.main.hystrix.execution-isolation-thread-interrupt-on-timeout",
+      "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  {@link Future#cancel} ) when a thread times out. <p> Applicable only 
when executionIsolationStrategy() == THREAD."
     },
     {
-      "name": "camel.main.hystrix.execution-timeout-enabled",
+      "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.main.hystrix.execution-timeout-in-milliseconds",
+      "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. <p> If  {@link 
#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.main.hystrix.fallback-enabled",
+      "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.main.hystrix.fallback-isolation-semaphore-max-concurrent-requests",
+      "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.main.hystrix.group-key",
+      "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.main.hystrix.keep-alive-time",
+      "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  {@link 
ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit)}"
     },
     {
-      "name": "camel.main.hystrix.maximum-size",
+      "name": "camel.hystrix.maximum-size",
       "type": "java.lang.Integer",
       "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
       "description": "Maximum thread-pool size that gets passed to  {@link 
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.main.hystrix.max-queue-size",
+      "name": "camel.hystrix.max-queue-size",
       "type": "java.lang.Integer",
       "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
       "description": "Max queue size that gets passed to  {@link 
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.main.hystrix.metrics-health-snapshot-interval-in-milliseconds",
+      "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. <p> On high-volume circuits the 
continual calculation of error percentage can become CPU intensive thus this 
controls how often it is calculated."
     },
     {
-      "name": "camel.main.hystrix.metrics-rolling-percentile-bucket-size",
+      "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.main.hystrix.metrics-rolling-percentile-enabled",
+      "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.main.hystrix.metrics-rolling-percentile-window-buckets",
+      "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.main.hystrix.metrics-rolling-percentile-window-in-milliseconds",
+      "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.main.hystrix.metrics-rolling-statistical-window-buckets",
+      "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.main.hystrix.metrics-rolling-statistical-window-in-milliseconds",
+      "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.main.hystrix.queue-size-rejection-threshold",
+      "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  {@link #maxQueueSize}  has not been 
reached. This is done because the  {@link #maxQueueSize} of a  {@link 
BlockingQueue}  can not be dynamically changed and we want to support 
dynamically changing the queue size that affects rejections. <p> This is used 
by HystrixCommand when queuing a thread for execution."
     },
     {
-      "name": "camel.main.hystrix.request-log-enabled",
+      "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.main.hystrix.thread-pool-key",
+      "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.main.hystrix.thread-pool-rolling-number-statistical-window-buckets",
+      "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.main.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds",
+      "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",
+      "description": "Sets whether to allow access to the original message 
from Camel's error handler, or from 
org.apache.camel.spi.UnitOfWork.getOriginalInMessage(). Turning this off can 
optimize performance, as defensive copy of the original message is not needed. 
Default is false."
+    },
+    {
+      "name": "camel.main.auto-configuration-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether auto configuration of 
components/dataformats/languages is enabled or not. When enabled the 
configuration parameters are loaded from the properties component and 
optionally from the classpath file 
META-INF/services/org/apache/camel/autowire.properties. You can prefix the 
parameters in the properties file with: - camel.component.name.option1=value1 - 
camel.component.name.option2=value2 - camel.dataformat.name.option1=value1 - 
camel.dataformat.name.option2=valu [...]
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.auto-startup",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether the object should automatically start when 
Camel starts. Important: Currently only routes can be disabled, as 
CamelContext's are always started. Note: When setting auto startup false on 
CamelContext then that takes precedence and no routes is started. You would 
need to start CamelContext explicit using the 
org.apache.camel.CamelContext.start() method, to start the context, and then 
you would need to start the routes manually using CamelContext.getRouteC [...]
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.autowire-component-properties",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether autowiring components with properties that are 
of same type, which has been added to the Camel registry, as a singleton 
instance. This is used for convention over configuration to inject DataSource, 
AmazonLogin instances to the components. <p/> This option is default enabled.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.autowire-component-properties-allow-private-setter",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether autowiring components allows to use private 
setter method when setting the value. This may be needed in some rare 
situations when some configuration classes may configure via constructors over 
setters. But constructor configuration is more cumbersome to use via 
.properties files etc.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.autowire-component-properties-deep",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether autowiring components (with deep nesting by 
attempting to walk as deep down the object graph by creating new empty objects 
on the way if needed) with properties that are of same type, which has been 
added to the Camel registry, as a singleton instance. This is used for 
convention over configuration to inject DataSource, AmazonLogin instances to 
the components. <p/> This option is default disabled."
+    },
+    {
+      "name": "camel.main.consumer-template-cache-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Consumer template endpoints cache size.",
+      "defaultValue": 1000
+    },
+    {
+      "name": "camel.main.duration",
+      "type": "java.lang.Long",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Sets the duration (in seconds) to run the application 
until it should be terminated. Defaults to -1. Any value <= 0 will run 
forever.",
+      "defaultValue": -1
+    },
+    {
+      "name": "camel.main.duration-hit-exit-code",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Sets the exit code for the application if duration was 
hit"
+    },
+    {
+      "name": "camel.main.duration-max-idle-seconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "To specify for how long time in seconds Camel can be 
idle before automatic terminating the JVM. You can use this to run Camel for a 
short while."
+    },
+    {
+      "name": "camel.main.duration-max-messages",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "To specify how many messages to process by Camel before 
automatic terminating the JVM. You can use this to run Camel for a short while."
+    },
+    {
+      "name": "camel.main.duration-max-seconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "To specify for how long time in seconds to keep running 
the JVM before automatic terminating the JVM. You can use this to run Camel for 
a short while."
+    },
+    {
+      "name": "camel.main.endpoint-runtime-statistics-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether endpoint runtime statistics is enabled 
(gathers runtime usage of each incoming and outgoing endpoints). The default 
value is false."
+    },
+    {
+      "name": "camel.main.file-configurations",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Directory to load additional configuration files that 
contains configuration values that takes precedence over any other 
configuration. This can be used to refer to files that may have secret 
configuration that has been mounted on the file system for containers. You can 
specify a pattern to load from sub directories and a name pattern such as 
/var/app/secret/*.properties, multiple directories can be separated by comma."
+    },
+    {
+      "name": "camel.main.handle-fault",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether fault handling is enabled or not. Default 
is false."
+    },
+    {
+      "name": "camel.main.hangup-interceptor-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether to use graceful hangup when Camel is stopping or 
when the JVM terminates.",
+      "defaultValue": true
+    },
+    {
       "name": "camel.main.jmx-create-connector",
       "type": "java.lang.Boolean",
       "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
diff --git a/examples/camel-example-main/pom.xml 
b/examples/camel-example-main/pom.xml
index 43d1ee8..956a57b 100644
--- a/examples/camel-example-main/pom.xml
+++ b/examples/camel-example-main/pom.xml
@@ -88,6 +88,26 @@
                 </configuration>
             </plugin>
 
+            <!-- generate autowire.properties file that can automatic detect 
resources
+                 from the classpath to make convention over configuration for 
Camel components -->
+            <plugin>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-main-maven-plugin</artifactId>
+                <version>${project.version}</version>
+                <configuration>
+                    <logClasspath>false</logClasspath>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>generate</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <phase>process-classes</phase>
+                    </execution>
+                </executions>
+            </plugin>
+
         </plugins>
     </build>
 
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
new file mode 100644
index 0000000..60787c4
--- /dev/null
+++ 
b/examples/camel-example-main/src/main/resources/META-INF/spring-configuration-metadata.json
@@ -0,0 +1,1286 @@
+{
+  "properties": [
+    {
+      "name": "camel.main.allow-use-original-message",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether to allow access to the original message 
from Camel's error handler, or from 
org.apache.camel.spi.UnitOfWork.getOriginalInMessage(). Turning this off can 
optimize performance, as defensive copy of the original message is not needed. 
Default is false."
+    },
+    {
+      "name": "camel.main.auto-configuration-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether auto configuration of 
components/dataformats/languages is enabled or not. When enabled the 
configuration parameters are loaded from the properties component and 
optionally from the classpath file 
META-INF/services/org/apache/camel/autowire.properties. You can prefix the 
parameters in the properties file with: - camel.component.name.option1=value1 - 
camel.component.name.option2=value2 - camel.dataformat.name.option1=value1 - 
camel.dataformat.name.option2=valu [...]
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.auto-startup",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether the object should automatically start when 
Camel starts. Important: Currently only routes can be disabled, as 
CamelContext's are always started. Note: When setting auto startup false on 
CamelContext then that takes precedence and no routes is started. You would 
need to start CamelContext explicit using the 
org.apache.camel.CamelContext.start() method, to start the context, and then 
you would need to start the routes manually using CamelContext.getRouteC [...]
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.autowire-component-properties",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether autowiring components with properties that are 
of same type, which has been added to the Camel registry, as a singleton 
instance. This is used for convention over configuration to inject DataSource, 
AmazonLogin instances to the components. <p/> This option is default enabled.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.autowire-component-properties-allow-private-setter",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether autowiring components allows to use private 
setter method when setting the value. This may be needed in some rare 
situations when some configuration classes may configure via constructors over 
setters. But constructor configuration is more cumbersome to use via 
.properties files etc.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.autowire-component-properties-deep",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether autowiring components (with deep nesting by 
attempting to walk as deep down the object graph by creating new empty objects 
on the way if needed) with properties that are of same type, which has been 
added to the Camel registry, as a singleton instance. This is used for 
convention over configuration to inject DataSource, AmazonLogin instances to 
the components. <p/> This option is default disabled."
+    },
+    {
+      "name": "camel.main.consumer-template-cache-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Consumer template endpoints cache size.",
+      "defaultValue": 1000
+    },
+    {
+      "name": "camel.main.duration",
+      "type": "java.lang.Long",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Sets the duration (in seconds) to run the application 
until it should be terminated. Defaults to -1. Any value <= 0 will run 
forever.",
+      "defaultValue": -1
+    },
+    {
+      "name": "camel.main.duration-hit-exit-code",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Sets the exit code for the application if duration was 
hit"
+    },
+    {
+      "name": "camel.main.duration-max-idle-seconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "To specify for how long time in seconds Camel can be 
idle before automatic terminating the JVM. You can use this to run Camel for a 
short while."
+    },
+    {
+      "name": "camel.main.duration-max-messages",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "To specify how many messages to process by Camel before 
automatic terminating the JVM. You can use this to run Camel for a short while."
+    },
+    {
+      "name": "camel.main.duration-max-seconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "To specify for how long time in seconds to keep running 
the JVM before automatic terminating the JVM. You can use this to run Camel for 
a short while."
+    },
+    {
+      "name": "camel.main.endpoint-runtime-statistics-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether endpoint runtime statistics is enabled 
(gathers runtime usage of each incoming and outgoing endpoints). The default 
value is false."
+    },
+    {
+      "name": "camel.main.file-configurations",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Directory to load additional configuration files that 
contains configuration values that takes precedence over any other 
configuration. This can be used to refer to files that may have secret 
configuration that has been mounted on the file system for containers. You can 
specify a pattern to load from sub directories and a name pattern such as 
/var/app/secret/*.properties, multiple directories can be separated by comma."
+    },
+    {
+      "name": "camel.main.handle-fault",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether fault handling is enabled or not. Default 
is false."
+    },
+    {
+      "name": "camel.main.hangup-interceptor-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.MainConfigurationProperties",
+      "description": "Whether to use graceful hangup when Camel is stopping or 
when the JVM terminates.",
+      "defaultValue": true
+    },
+    {
+      "name": 
"camel.main.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.main.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. <p> 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.main.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. <p> It 
will stay tripped for the duration defined in 
circuitBreakerSleepWindowInMilliseconds; <p> The error percentage this is 
compared against comes from HystrixCommandMetrics.getHealthCounts()."
+    },
+    {
+      "name": "camel.main.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(). <p> The circuitBreakerForceOpen() 
property takes precedence so if it set to true this property does nothing."
+    },
+    {
+      "name": "camel.main.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. <p> This property takes precedence over circuitBreakerForceClosed();"
+    },
+    {
+      "name": "camel.main.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. <p> If below this number the circuit will not 
trip regardless of error percentage."
+    },
+    {
+      "name": 
"camel.main.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.main.hystrix.core-pool-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Core thread-pool size that gets passed to  {@link 
java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int)}"
+    },
+    {
+      "name": 
"camel.main.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. 
<p> Applicable only when executionIsolationStrategy == SEMAPHORE."
+    },
+    {
+      "name": "camel.main.hystrix.execution-isolation-strategy",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "What isolation strategy HystrixCommand.run() will be 
executed with. <p> If THREAD then it will be executed on a separate thread and 
concurrent requests limited by the number of threads in the thread-pool. <p> If 
SEMAPHORE then it will be executed on the calling thread and concurrent 
requests limited by the semaphore count."
+    },
+    {
+      "name": 
"camel.main.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  {@link Future#cancel} ) when a thread times out. <p> Applicable only 
when executionIsolationStrategy() == THREAD."
+    },
+    {
+      "name": "camel.main.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.main.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. <p> If  {@link 
#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.main.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.main.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.main.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.main.hystrix.keep-alive-time",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Keep-alive time in minutes that gets passed to  {@link 
ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit)}"
+    },
+    {
+      "name": "camel.main.hystrix.maximum-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Maximum thread-pool size that gets passed to  {@link 
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.main.hystrix.max-queue-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.HystrixConfigurationProperties",
+      "description": "Max queue size that gets passed to  {@link 
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.main.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. <p> On high-volume circuits the 
continual calculation of error percentage can become CPU intensive thus this 
controls how often it is calculated."
+    },
+    {
+      "name": "camel.main.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.main.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.main.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.main.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.main.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.main.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.main.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  {@link #maxQueueSize}  has not been 
reached. This is done because the  {@link #maxQueueSize} of a  {@link 
BlockingQueue}  can not be dynamically changed and we want to support 
dynamically changing the queue size that affects rejections. <p> This is used 
by HystrixCommand when queuing a thread for execution."
+    },
+    {
+      "name": "camel.main.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.main.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.main.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.main.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.jmx-create-connector",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Whether JMX connector is created, allowing clients to 
connect remotely The default value is false."
+    },
+    {
+      "name": "camel.main.jmx-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Enable JMX in your Camel application.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.jmx-management-name-pattern",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "The naming pattern for creating the CamelContext JMX 
management name. The default pattern is #name#",
+      "defaultValue": "#name#"
+    },
+    {
+      "name": "camel.main.jmx-management-statistics-level",
+      "type": "org.apache.camel.ManagementStatisticsLevel",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets the JMX statistics level The level can be set to 
Extended to gather additional information The default value is Default.",
+      "defaultValue": "ManagementStatisticsLevel.Default"
+    },
+    {
+      "name": "camel.main.load-type-converters",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Whether to load custom type converters by scanning 
classpath. This is used for backwards compatibility with Camel 2.x. Its 
recommended to migrate to use fast type converter loading by setting 
<tt>@Converter(loader = true)</tt> on your custom type converter classes.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.log-debug-max-chars",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Is used to limit the maximum length of the logging Camel 
message bodies. If the message body is longer than the limit, the log message 
is clipped. Use -1 to have unlimited length. Use for example 1000 to log at 
most 1000 characters."
+    },
+    {
+      "name": "camel.main.log-exhausted-message-body",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether to log exhausted message body with message 
history. Default is false."
+    },
+    {
+      "name": "camel.main.log-mask",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether log mask is enabled or not. Default is 
false."
+    },
+    {
+      "name": "camel.main.message-history",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether message history is enabled or not. Default 
is true.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.name",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets the name of the CamelContext."
+    },
+    {
+      "name": "camel.main.producer-template-cache-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Producer template endpoints cache size.",
+      "defaultValue": 1000
+    },
+    {
+      "name": "camel.main.route-filter-exclude-pattern",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Used for filtering routes routes matching the given 
pattern, which follows the following rules: - Match by route id - Match by 
route input endpoint uri The matching is using exact match, by wildcard and 
regular expression as documented by  {@link 
PatternHelper#matchPattern(String,String)} . For example to only include routes 
which starts with foo in their route id's, use: include=foo&#42; And to exclude 
routes which starts from JMS endpoints, use: exclude=jms:&#42;  [...]
+    },
+    {
+      "name": "camel.main.route-filter-include-pattern",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Used for filtering routes routes matching the given 
pattern, which follows the following rules: - Match by route id - Match by 
route input endpoint uri The matching is using exact match, by wildcard and 
regular expression as documented by  {@link 
PatternHelper#matchPattern(String,String)} . For example to only include routes 
which starts with foo in their route id's, use: include=foo&#42; And to exclude 
routes which starts from JMS endpoints, use: exclude=jms:&#42;  [...]
+    },
+    {
+      "name": "camel.main.shutdown-log-inflight-exchanges-on-timeout",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether to log information about the inflight 
Exchanges which are still running during a shutdown which didn't complete 
without the given timeout.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.shutdown-now-on-timeout",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether to force shutdown of all consumers when a 
timeout occurred and thus not all consumers was shutdown within that period. 
You should have good reasons to set this option to false as it means that the 
routes keep running and is halted abruptly when CamelContext has been 
shutdown.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.shutdown-routes-in-reverse-order",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether routes should be shutdown in reverse or the 
same order as they where started.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.shutdown-suppress-logging-on-timeout",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Whether Camel should try to suppress logging during 
shutdown and timeout was triggered, meaning forced shutdown is happening. And 
during forced shutdown we want to avoid logging errors/warnings et all in the 
logs as a side-effect of the forced timeout. Notice the suppress is a best 
effort as there may still be some logs coming from 3rd party libraries and 
whatnot, which Camel cannot control. This option is default false."
+    },
+    {
+      "name": "camel.main.shutdown-timeout",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Timeout in seconds to graceful shutdown Camel.",
+      "defaultValue": 300
+    },
+    {
+      "name": "camel.main.stream-caching-any-spool-rules",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether if just any of the 
org.apache.camel.spi.StreamCachingStrategy.SpoolRule rules returns true then 
shouldSpoolCache(long) returns true, to allow spooling to disk. If this option 
is false, then all the org.apache.camel.spi.StreamCachingStrategy.SpoolRule 
must return true. The default value is false which means that all the rules 
must return true."
+    },
+    {
+      "name": "camel.main.stream-caching-buffer-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets the stream caching buffer size to use when 
allocating in-memory buffers used for in-memory stream caches. The default size 
is 4096."
+    },
+    {
+      "name": "camel.main.stream-caching-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether stream caching is enabled or not. Default 
is false."
+    },
+    {
+      "name": "camel.main.stream-caching-remove-spool-directory-when-stopping",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Whether to remove stream caching temporary directory 
when stopping. This option is default true.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.main.stream-caching-spool-cipher",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets a stream caching cipher name to use when spooling 
to disk to write with encryption. By default the data is not encrypted."
+    },
+    {
+      "name": "camel.main.stream-caching-spool-directory",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets the stream caching spool (temporary) directory to 
use for overflow and spooling to disk. If no spool directory has been explicit 
configured, then a temporary directory is created in the java.io.tmpdir 
directory."
+    },
+    {
+      "name": "camel.main.stream-caching-spool-threshold",
+      "type": "java.lang.Long",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Stream caching threshold in bytes when overflow to disk 
is activated. The default threshold is 128kb. Use -1 to disable overflow to 
disk."
+    },
+    {
+      "name": "camel.main.stream-caching-spool-used-heap-memory-limit",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets what the upper bounds should be when 
streamCachingSpoolUsedHeapMemoryThreshold is in use."
+    },
+    {
+      "name": "camel.main.stream-caching-spool-used-heap-memory-threshold",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets a percentage (1-99) of used heap memory threshold 
to activate stream caching spooling to disk."
+    },
+    {
+      "name": "camel.main.stream-caching-statistics-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether stream caching statistics is enabled."
+    },
+    {
+      "name": "camel.main.thread-name-pattern",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets the thread name pattern used for creating the full 
thread name. The default pattern is: Camel (#camelId#) thread ##counter# - 
#name# Where #camelId# is the name of the CamelContext. and #counter# is a 
unique incrementing counter. and #name# is the regular thread name. You can 
also use #longName# which is the long thread name which can includes endpoint 
parameters etc."
+    },
+    {
+      "name": "camel.main.tracing",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Sets whether tracing is enabled or not. Default is 
false."
+    },
+    {
+      "name": "camel.main.use-breadcrumb",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Set whether breadcrumb is enabled. The default value is 
false."
+    },
+    {
+      "name": "camel.main.use-data-type",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "Whether to enable using data type on Camel messages. 
Data type are automatic turned on if one ore more routes has been explicit 
configured with input and output types. Otherwise data type is default off."
+    },
+    {
+      "name": "camel.main.use-mdc-logging",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.main.DefaultConfigurationProperties",
+      "description": "To turn on MDC logging"
+    },
+    {
+      "name": "camel.component.bean.cache",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.bean.BeanComponent",
+      "description": "If enabled, Camel will cache the result of the first 
Registry look-up. Cache can be enabled if the bean in the Registry is defined 
as a singleton scope."
+    },
+    {
+      "name": "camel.component.bean.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.bean.BeanComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.bean.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.bean.BeanComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.browse.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.browse.BrowseComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.browse.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.browse.BrowseComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.class.cache",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.beanclass.ClassComponent",
+      "description": "If enabled, Camel will cache the result of the first 
Registry look-up. Cache can be enabled if the bean in the Registry is defined 
as a singleton scope."
+    },
+    {
+      "name": "camel.component.class.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.beanclass.ClassComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.class.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.beanclass.ClassComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.controlbus.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.controlbus.ControlBusComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.controlbus.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.controlbus.ControlBusComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.dataformat.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.dataformat.DataFormatComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.dataformat.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.dataformat.DataFormatComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.dataset.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.dataset.DataSetComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.dataset.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.dataset.DataSetComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.dataset-test.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.dataset.DataSetTestComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.dataset-test.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.dataset.DataSetTestComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.direct.block",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.direct.DirectComponent",
+      "description": "If sending a message to a direct endpoint which has no 
active consumer, then we can tell the producer to block and wait for the 
consumer to become active.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.direct.timeout",
+      "type": "java.lang.Long",
+      "sourceType": "org.apache.camel.component.direct.DirectComponent",
+      "description": "The timeout value to use if block is enabled.",
+      "defaultValue": 30000
+    },
+    {
+      "name": "camel.component.direct.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.direct.DirectComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.direct.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.direct.DirectComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.direct-vm.block",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.directvm.DirectVmComponent",
+      "description": "If sending a message to a direct endpoint which has no 
active consumer, then we can tell the producer to block and wait for the 
consumer to become active.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.direct-vm.timeout",
+      "type": "java.lang.Long",
+      "sourceType": "org.apache.camel.component.directvm.DirectVmComponent",
+      "description": "The timeout value to use if block is enabled.",
+      "defaultValue": 30000
+    },
+    {
+      "name": "camel.component.direct-vm.header-filter-strategy",
+      "type": "org.apache.camel.spi.HeaderFilterStrategy",
+      "sourceType": "org.apache.camel.component.directvm.DirectVmComponent",
+      "description": "Sets a HeaderFilterStrategy that will only be applied on 
producer endpoints (on both directions: request and response). Default value: 
none."
+    },
+    {
+      "name": "camel.component.direct-vm.propagate-properties",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.directvm.DirectVmComponent",
+      "description": "Whether to propagate or not properties from the producer 
side to the consumer side, and vice versa. Default value: true.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.direct-vm.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.directvm.DirectVmComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.direct-vm.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.directvm.DirectVmComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.file.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.file.FileComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.file.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.file.FileComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.language.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.language.LanguageComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.language.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.language.LanguageComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.log.exchange-formatter",
+      "type": "org.apache.camel.spi.ExchangeFormatter",
+      "sourceType": "org.apache.camel.component.log.LogComponent",
+      "description": "Sets a custom ExchangeFormatter to convert the Exchange 
to a String suitable for logging. If not specified, we default to 
DefaultExchangeFormatter."
+    },
+    {
+      "name": "camel.component.log.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.log.LogComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.log.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.log.LogComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.mock.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.mock.MockComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.mock.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.mock.MockComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.properties.locations",
+      "type": "java.util.List",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "A list of locations to load properties. This option will 
override any default locations and only use the locations from this option."
+    },
+    {
+      "name": "camel.component.properties.location",
+      "type": "java.lang.String",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "A list of locations to load properties. You can use 
comma to separate multiple locations. This option will override any default 
locations and only use the locations from this option."
+    },
+    {
+      "name": "camel.component.properties.encoding",
+      "type": "java.lang.String",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Encoding to use when loading properties file from the 
file system or classpath. If no encoding has been set, then the properties 
files is loaded using ISO-8859-1 encoding (latin-1) as documented by 
java.util.Properties#load(java.io.InputStream)"
+    },
+    {
+      "name": "camel.component.properties.properties-resolver",
+      "type": "org.apache.camel.component.properties.PropertiesResolver",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "To use a custom PropertiesResolver"
+    },
+    {
+      "name": "camel.component.properties.properties-parser",
+      "type": "org.apache.camel.component.properties.PropertiesParser",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "To use a custom PropertiesParser"
+    },
+    {
+      "name": "camel.component.properties.cache",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Whether or not to cache loaded properties. The default 
value is true.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.properties.property-prefix",
+      "type": "java.lang.String",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Optional prefix prepended to property names before 
resolution."
+    },
+    {
+      "name": "camel.component.properties.property-suffix",
+      "type": "java.lang.String",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Optional suffix appended to property names before 
resolution."
+    },
+    {
+      "name": "camel.component.properties.fallback-to-unaugmented-property",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "If true, first attempt resolution of property name 
augmented with propertyPrefix and propertySuffix before falling back the plain 
property name specified. If false, only the augmented property name is 
searched.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.properties.default-fallback-enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "If false, the component does not attempt to find a 
default for the key by looking after the colon separator.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.properties.ignore-missing-location",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Whether to silently ignore if a location cannot be 
located, such as a properties file not found.",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.properties.prefix-token",
+      "type": "java.lang.String",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Sets the value of the prefix token used to identify 
properties to replace. Setting a value of null restores the default token (link 
DEFAULT_PREFIX_TOKEN).",
+      "defaultValue": "{{"
+    },
+    {
+      "name": "camel.component.properties.suffix-token",
+      "type": "java.lang.String",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Sets the value of the suffix token used to identify 
properties to replace. Setting a value of null restores the default token (link 
DEFAULT_SUFFIX_TOKEN).",
+      "defaultValue": "}}"
+    },
+    {
+      "name": "camel.component.properties.initial-properties",
+      "type": "java.util.Properties",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Sets initial properties which will be used before any 
locations are resolved."
+    },
+    {
+      "name": "camel.component.properties.override-properties",
+      "type": "java.util.Properties",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Sets a special list of override properties that take 
precedence and will use first, if a property exist."
+    },
+    {
+      "name": "camel.component.properties.system-properties-mode",
+      "type": "java.lang.Integer",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Sets the system property mode. The default mode 
(override) is to use system properties if present, and override any existing 
properties.",
+      "defaultValue": 2
+    },
+    {
+      "name": "camel.component.properties.environment-variable-mode",
+      "type": "java.lang.Integer",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Sets the OS environment variables mode. The default mode 
(override) is to use OS environment variables if present, and override any 
existing properties.",
+      "defaultValue": 1
+    },
+    {
+      "name": "camel.component.properties.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.properties.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": 
"org.apache.camel.component.properties.PropertiesComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.quartz2.auto-start-scheduler",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "Whether or not the scheduler should be auto started. 
This options is default true",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.quartz2.start-delayed-seconds",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "Seconds to wait before starting the quartz scheduler."
+    },
+    {
+      "name": "camel.component.quartz2.prefix-job-name-with-endpoint-id",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "Whether to prefix the quartz job with the endpoint id. 
This option is default false.",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.quartz2.enable-jmx",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "Whether to enable Quartz JMX which allows to manage the 
Quartz scheduler from JMX. This options is default true",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.quartz2.properties",
+      "type": "java.util.Properties",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "Properties to configure the Quartz scheduler."
+    },
+    {
+      "name": "camel.component.quartz2.properties-file",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "File name of the properties to load from the classpath"
+    },
+    {
+      "name": "camel.component.quartz2.prefix-instance-name",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "Whether to prefix the Quartz Scheduler instance name 
with the CamelContext name. This is enabled by default, to let each 
CamelContext use its own Quartz scheduler instance by default. You can set this 
option to false to reuse Quartz scheduler instances between multiple 
CamelContext's.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.quartz2.interrupt-jobs-on-shutdown",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "Whether to interrupt jobs on shutdown which forces the 
scheduler to shutdown quicker and attempt to interrupt any running jobs. If 
this is enabled then any running jobs can fail due to being interrupted.",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.quartz2.scheduler-factory",
+      "type": "org.quartz.SchedulerFactory",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "To use the custom SchedulerFactory which is used to 
create the Scheduler."
+    },
+    {
+      "name": "camel.component.quartz2.scheduler",
+      "type": "org.quartz.Scheduler",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "To use the custom configured Quartz scheduler, instead 
of creating a new Scheduler."
+    },
+    {
+      "name": "camel.component.quartz2.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.quartz2.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.quartz2.QuartzComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.ref.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.ref.RefComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.ref.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.ref.RefComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.rest.consumer-component-name",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.component.rest.RestComponent",
+      "description": "The Camel Rest component to use for (consumer) the REST 
transport, such as jetty, servlet, undertow. If no component has been explicit 
configured, then Camel will lookup if there is a Camel component that 
integrates with the Rest DSL, or if a org.apache.camel.spi.RestConsumerFactory 
is registered in the registry. If either one is found, then that is being used."
+    },
+    {
+      "name": "camel.component.rest.producer-component-name",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.component.rest.RestComponent",
+      "description": "The Camel Rest component to use for (producer) the REST 
transport, such as http, undertow. If no component has been explicit 
configured, then Camel will lookup if there is a Camel component that 
integrates with the Rest DSL, or if a org.apache.camel.spi.RestProducerFactory 
is registered in the registry. If either one is found, then that is being used."
+    },
+    {
+      "name": "camel.component.rest.component-name",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.component.rest.RestComponent",
+      "description": "The Camel Rest component to use for (producer) the REST 
transport, such as http, undertow. If no component has been explicit 
configured, then Camel will lookup if there is a Camel component that 
integrates with the Rest DSL, or if a org.apache.camel.spi.RestProducerFactory 
is registered in the registry. If either one is found, then that is being used."
+    },
+    {
+      "name": "camel.component.rest.api-doc",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.component.rest.RestComponent",
+      "description": "The swagger api doc resource to use. The resource is 
loaded from classpath by default and must be in JSon format."
+    },
+    {
+      "name": "camel.component.rest.host",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.component.rest.RestComponent",
+      "description": "Host and port of HTTP service to use (override host in 
swagger schema)"
+    },
+    {
+      "name": "camel.component.rest.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.rest.RestComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.rest.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.rest.RestComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.rest-api.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.rest.RestApiComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.rest-api.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.rest.RestApiComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.saga.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.saga.SagaComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.saga.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.saga.SagaComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.scheduler.concurrent-tasks",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.component.scheduler.SchedulerComponent",
+      "description": "Number of threads used by the scheduling thread pool. Is 
by default using a single thread",
+      "defaultValue": 1
+    },
+    {
+      "name": "camel.component.scheduler.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.scheduler.SchedulerComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.scheduler.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.scheduler.SchedulerComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.seda.queue-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.component.seda.SedaComponent",
+      "description": "Sets the default maximum capacity of the SEDA queue 
(i.e., the number of messages it can hold).",
+      "defaultValue": 1000
+    },
+    {
+      "name": "camel.component.seda.concurrent-consumers",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.component.seda.SedaComponent",
+      "description": "Sets the default number of concurrent threads processing 
exchanges.",
+      "defaultValue": 1
+    },
+    {
+      "name": "camel.component.seda.default-queue-factory",
+      "type": "org.apache.camel.component.seda.BlockingQueueFactory",
+      "sourceType": "org.apache.camel.component.seda.SedaComponent",
+      "description": "Sets the default queue factory."
+    },
+    {
+      "name": "camel.component.seda.default-block-when-full",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.seda.SedaComponent",
+      "description": "Whether a thread that sends messages to a full SEDA 
queue will block until the queue's capacity is no longer exhausted. By default, 
an exception will be thrown stating that the queue is full. By enabling this 
option, the calling thread will instead block and wait until the message can be 
accepted.",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.seda.default-offer-timeout",
+      "type": "java.lang.Long",
+      "sourceType": "org.apache.camel.component.seda.SedaComponent",
+      "description": "Whether a thread that sends messages to a full SEDA 
queue will block until the queue's capacity is no longer exhausted. By default, 
an exception will be thrown stating that the queue is full. By enabling this 
option, where a configured timeout can be added to the block case. Utilizing 
the .offer(timeout) method of the underlining java queue"
+    },
+    {
+      "name": "camel.component.seda.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.seda.SedaComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.seda.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.seda.SedaComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.stub.queue-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.component.stub.StubComponent",
+      "description": "Sets the default maximum capacity of the SEDA queue 
(i.e., the number of messages it can hold).",
+      "defaultValue": 1000
+    },
+    {
+      "name": "camel.component.stub.concurrent-consumers",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.component.stub.StubComponent",
+      "description": "Sets the default number of concurrent threads processing 
exchanges.",
+      "defaultValue": 1
+    },
+    {
+      "name": "camel.component.stub.default-queue-factory",
+      "type": "org.apache.camel.component.seda.BlockingQueueFactory",
+      "sourceType": "org.apache.camel.component.stub.StubComponent",
+      "description": "Sets the default queue factory."
+    },
+    {
+      "name": "camel.component.stub.default-block-when-full",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.stub.StubComponent",
+      "description": "Whether a thread that sends messages to a full SEDA 
queue will block until the queue's capacity is no longer exhausted. By default, 
an exception will be thrown stating that the queue is full. By enabling this 
option, the calling thread will instead block and wait until the message can be 
accepted.",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.stub.default-offer-timeout",
+      "type": "java.lang.Long",
+      "sourceType": "org.apache.camel.component.stub.StubComponent",
+      "description": "Whether a thread that sends messages to a full SEDA 
queue will block until the queue's capacity is no longer exhausted. By default, 
an exception will be thrown stating that the queue is full. By enabling this 
option, where a configured timeout can be added to the block case. Utilizing 
the .offer(timeout) method of the underlining java queue"
+    },
+    {
+      "name": "camel.component.stub.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.stub.StubComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.stub.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.stub.StubComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.timer.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.timer.TimerComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.timer.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.timer.TimerComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.validator.resource-resolver-factory",
+      "type": 
"org.apache.camel.component.validator.ValidatorResourceResolverFactory",
+      "sourceType": "org.apache.camel.component.validator.ValidatorComponent",
+      "description": "To use a custom LSResourceResolver which depends on a 
dynamic endpoint resource URI"
+    },
+    {
+      "name": "camel.component.validator.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.validator.ValidatorComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.validator.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.validator.ValidatorComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.vm.queue-size",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.component.vm.VmComponent",
+      "description": "Sets the default maximum capacity of the SEDA queue 
(i.e., the number of messages it can hold).",
+      "defaultValue": 1000
+    },
+    {
+      "name": "camel.component.vm.concurrent-consumers",
+      "type": "java.lang.Integer",
+      "sourceType": "org.apache.camel.component.vm.VmComponent",
+      "description": "Sets the default number of concurrent threads processing 
exchanges.",
+      "defaultValue": 1
+    },
+    {
+      "name": "camel.component.vm.default-queue-factory",
+      "type": "org.apache.camel.component.seda.BlockingQueueFactory",
+      "sourceType": "org.apache.camel.component.vm.VmComponent",
+      "description": "Sets the default queue factory."
+    },
+    {
+      "name": "camel.component.vm.default-block-when-full",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.vm.VmComponent",
+      "description": "Whether a thread that sends messages to a full SEDA 
queue will block until the queue's capacity is no longer exhausted. By default, 
an exception will be thrown stating that the queue is full. By enabling this 
option, the calling thread will instead block and wait until the message can be 
accepted.",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.vm.default-offer-timeout",
+      "type": "java.lang.Long",
+      "sourceType": "org.apache.camel.component.vm.VmComponent",
+      "description": "Whether a thread that sends messages to a full SEDA 
queue will block until the queue's capacity is no longer exhausted. By default, 
an exception will be thrown stating that the queue is full. By enabling this 
option, where a configured timeout can be added to the block case. Utilizing 
the .offer(timeout) method of the underlining java queue"
+    },
+    {
+      "name": "camel.component.vm.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.vm.VmComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.vm.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.vm.VmComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.xslt.uri-resolver-factory",
+      "type": "org.apache.camel.component.xslt.XsltUriResolverFactory",
+      "sourceType": "org.apache.camel.component.xslt.XsltComponent",
+      "description": "To use a custom UriResolver which depends on a dynamic 
endpoint resource URI. Should not be used together with the option 
'uriResolver'."
+    },
+    {
+      "name": "camel.component.xslt.uri-resolver",
+      "type": "javax.xml.transform.URIResolver",
+      "sourceType": "org.apache.camel.component.xslt.XsltComponent",
+      "description": "To use a custom UriResolver. Should not be used together 
with the option 'uriResolverFactory'."
+    },
+    {
+      "name": "camel.component.xslt.content-cache",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.xslt.XsltComponent",
+      "description": "Cache for the resource content (the stylesheet file) 
when it is loaded. If set to false Camel will reload the stylesheet file on 
each message processing. This is good for development. A cached stylesheet can 
be forced to reload at runtime via JMX using the clearCachedStylesheet 
operation.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.xslt.saxon",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.xslt.XsltComponent",
+      "description": "Whether to use Saxon as the transformerFactoryClass. If 
enabled then the class net.sf.saxon.TransformerFactoryImpl. You would need to 
add Saxon to the classpath.",
+      "defaultValue": false
+    },
+    {
+      "name": "camel.component.xslt.saxon-extension-functions",
+      "type": "java.lang.String",
+      "sourceType": "org.apache.camel.component.xslt.XsltComponent",
+      "description": "Allows you to use a custom 
net.sf.saxon.lib.ExtensionFunctionDefinition. You would need to add camel-saxon 
to the classpath. The function is looked up in the registry, where you can 
comma to separate multiple values to lookup."
+    },
+    {
+      "name": "camel.component.xslt.saxon-configuration",
+      "type": "java.lang.Object",
+      "sourceType": "org.apache.camel.component.xslt.XsltComponent",
+      "description": "To use a custom Saxon configuration"
+    },
+    {
+      "name": "camel.component.xslt.saxon-configuration-properties",
+      "type": "java.util.Map",
+      "sourceType": "org.apache.camel.component.xslt.XsltComponent",
+      "description": "To set custom Saxon configuration properties"
+    },
+    {
+      "name": "camel.component.xslt.resolve-property-placeholders",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.xslt.XsltComponent",
+      "description": "Whether the component should resolve property 
placeholders on itself when starting. Only properties which are of String type 
can use property placeholders.",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.xslt.basic-property-binding",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.component.xslt.XsltComponent",
+      "description": "Whether the component should use basic property binding 
(Camel 2.x) or the newer property binding with additional capabilities",
+      "defaultValue": false
+    }
+  ]
+}
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 37decbd..e75dc6a 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
@@ -66,11 +66,13 @@ public class PrepareCamelMainMojo extends AbstractMojo {
             try {
                 List<ConfigurationModel> model = 
parser.parseConfigurationSource(file);
                 // compute prefix for name
-                String prefix = "camel.main.";
+                String prefix = "camel.";
                 if (file.getName().contains("Hystrix")) {
                     prefix += "hystrix.";
                 } else if (file.getName().contains("Rest")) {
                     prefix += "rest.";
+                } else {
+                    prefix += "main.";
                 }
                 final String namePrefix = prefix;
                 model.stream().forEach(m -> m.setName(namePrefix + 
m.getName()));

Reply via email to