CAMEL-11291: spring boot starters: allow to hook into auto configuration process


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/3eeb97ac
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3eeb97ac
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3eeb97ac

Branch: refs/heads/master
Commit: 3eeb97aca813e599b262fef0a6c397861f27cf01
Parents: 88225c8
Author: lburgazzoli <lburgazz...@gmail.com>
Authored: Wed May 17 18:22:13 2017 +0200
Committer: lburgazzoli <lburgazz...@gmail.com>
Committed: Fri May 19 13:52:15 2017 +0200

----------------------------------------------------------------------
 .../apache/camel/spi/ComponentCustomizer.java   |  29 +
 .../apache/camel/spi/DataFormatCustomizer.java  |  27 +
 .../apache/camel/spi/LanguageCustomizer.java    |  27 +
 .../boot/ComponentConfigurationProperties.java  |  12 +-
 .../ComponentConfigurationPropertiesCommon.java |  60 ++
 .../boot/DataFormatConfigurationProperties.java |  12 +-
 ...DataFormatConfigurationPropertiesCommon.java |  60 ++
 .../boot/LanguageConfigurationProperties.java   |  12 +-
 .../LanguageConfigurationPropertiesCommon.java  |  60 ++
 .../AhcComponentAutoConfiguration.java          |  94 +--
 .../springboot/AhcComponentConfiguration.java   |   5 +-
 .../WsComponentAutoConfiguration.java           |  94 +--
 .../ws/springboot/WsComponentConfiguration.java |   5 +-
 .../AMQPComponentAutoConfiguration.java         |  94 +--
 .../springboot/AMQPComponentConfiguration.java  |   5 +-
 .../ApnsComponentAutoConfiguration.java         |  94 +--
 .../springboot/ApnsComponentConfiguration.java  |   5 +-
 .../AsteriskComponentAutoConfiguration.java     | 116 ++--
 .../AsteriskComponentConfiguration.java         |   7 +-
 .../AtmosComponentAutoConfiguration.java        | 116 ++--
 .../springboot/AtmosComponentConfiguration.java |   7 +-
 .../WebsocketComponentAutoConfiguration.java    |  95 +--
 .../WebsocketComponentConfiguration.java        |   5 +-
 .../AtomComponentAutoConfiguration.java         | 116 ++--
 .../springboot/AtomComponentConfiguration.java  |   7 +-
 .../AvroComponentAutoConfiguration.java         |  94 +--
 .../springboot/AvroComponentConfiguration.java  |   5 +-
 .../AvroDataFormatAutoConfiguration.java        |  95 +--
 .../springboot/AvroDataFormatConfiguration.java |   5 +-
 .../CwComponentAutoConfiguration.java           | 116 ++--
 .../cw/springboot/CwComponentConfiguration.java |   7 +-
 .../DdbComponentAutoConfiguration.java          | 116 ++--
 .../springboot/DdbComponentConfiguration.java   |   7 +-
 .../DdbStreamComponentAutoConfiguration.java    | 116 ++--
 .../DdbStreamComponentConfiguration.java        |   7 +-
 .../EC2ComponentAutoConfiguration.java          | 116 ++--
 .../springboot/EC2ComponentConfiguration.java   |   7 +-
 ...nesisFirehoseComponentAutoConfiguration.java | 119 ++--
 .../KinesisFirehoseComponentConfiguration.java  |  50 ++
 .../KinesisComponentAutoConfiguration.java      | 116 ++--
 .../KinesisComponentConfiguration.java          |  11 +-
 .../S3ComponentAutoConfiguration.java           | 116 ++--
 .../s3/springboot/S3ComponentConfiguration.java |   7 +-
 .../SdbComponentAutoConfiguration.java          | 116 ++--
 .../springboot/SdbComponentConfiguration.java   |   7 +-
 .../SesComponentAutoConfiguration.java          | 116 ++--
 .../springboot/SesComponentConfiguration.java   |   7 +-
 .../SnsComponentAutoConfiguration.java          | 116 ++--
 .../springboot/SnsComponentConfiguration.java   |   7 +-
 .../SqsComponentAutoConfiguration.java          | 116 ++--
 .../springboot/SqsComponentConfiguration.java   |   7 +-
 .../SWFComponentAutoConfiguration.java          | 116 ++--
 .../springboot/SWFComponentConfiguration.java   |   7 +-
 .../BlobServiceComponentAutoConfiguration.java  | 117 ++--
 .../BlobServiceComponentConfiguration.java      |   7 +-
 .../QueueServiceComponentAutoConfiguration.java | 117 ++--
 .../QueueServiceComponentConfiguration.java     |   7 +-
 .../BarcodeDataFormatAutoConfiguration.java     |  96 ++--
 .../BarcodeDataFormatConfiguration.java         |   5 +-
 .../Base64DataFormatAutoConfiguration.java      |  96 ++--
 .../Base64DataFormatConfiguration.java          |   5 +-
 ...BeanValidatorComponentAutoConfiguration.java | 119 ++--
 .../BeanValidatorComponentConfiguration.java    |   7 +-
 .../BeanIODataFormatAutoConfiguration.java      |  96 ++--
 .../BeanIODataFormatConfiguration.java          |   5 +-
 .../BeanstalkComponentAutoConfiguration.java    |  95 +--
 .../BeanstalkComponentConfiguration.java        |   5 +-
 .../BindyCsvDataFormatAutoConfiguration.java    |  96 ++--
 .../BindyCsvDataFormatConfiguration.java        |   5 +-
 ...yFixedLengthDataFormatAutoConfiguration.java |  98 ++--
 ...BindyFixedLengthDataFormatConfiguration.java |   5 +-
 ...KeyValuePairDataFormatAutoConfiguration.java |  98 ++--
 ...indyKeyValuePairDataFormatConfiguration.java |   5 +-
 .../BonitaComponentAutoConfiguration.java       | 116 ++--
 .../BonitaComponentConfiguration.java           |   9 +-
 .../BoonDataFormatAutoConfiguration.java        |  95 +--
 .../springboot/BoonDataFormatConfiguration.java |   5 +-
 .../BoxComponentAutoConfiguration.java          |  94 +--
 .../springboot/BoxComponentConfiguration.java   |   5 +-
 .../BraintreeComponentAutoConfiguration.java    |  95 +--
 .../BraintreeComponentConfiguration.java        |   5 +-
 .../CacheComponentAutoConfiguration.java        |  94 +--
 .../springboot/CacheComponentConfiguration.java |   5 +-
 .../CassandraComponentAutoConfiguration.java    | 116 ++--
 .../CassandraComponentConfiguration.java        |   7 +-
 .../CastorDataFormatAutoConfiguration.java      |  96 ++--
 .../CastorDataFormatConfiguration.java          |   5 +-
 ...ronicleEngineComponentAutoConfiguration.java | 119 ++--
 .../ChronicleEngineComponentConfiguration.java  |   7 +-
 .../ChunkComponentAutoConfiguration.java        | 116 ++--
 .../springboot/ChunkComponentConfiguration.java |   7 +-
 .../CMComponentAutoConfiguration.java           | 116 ++--
 .../cm/springboot/CMComponentConfiguration.java |   7 +-
 .../CMISComponentAutoConfiguration.java         |  94 +--
 .../springboot/CMISComponentConfiguration.java  |   5 +-
 .../CoAPComponentAutoConfiguration.java         | 116 ++--
 .../springboot/CoAPComponentConfiguration.java  |   7 +-
 .../CometdComponentAutoConfiguration.java       |  94 +--
 .../CometdComponentConfiguration.java           |   5 +-
 .../ConsulComponentAutoConfiguration.java       |  94 +--
 .../ConsulComponentConfiguration.java           |   5 +-
 ...lifiedContextComponentAutoConfiguration.java | 119 ++--
 .../QualifiedContextComponentConfiguration.java |   7 +-
 .../camel-core-starter/pom.xml                  |   2 +-
 .../BeanComponentAutoConfiguration.java         | 116 ++--
 .../springboot/BeanComponentConfiguration.java  |   7 +-
 .../ClassComponentAutoConfiguration.java        | 116 ++--
 .../springboot/ClassComponentConfiguration.java |   7 +-
 .../BindingNameComponentAutoConfiguration.java  | 117 ++--
 .../BindingNameComponentConfiguration.java      |   7 +-
 .../BrowseComponentAutoConfiguration.java       | 116 ++--
 .../BrowseComponentConfiguration.java           |   7 +-
 .../ControlBusComponentAutoConfiguration.java   | 116 ++--
 .../ControlBusComponentConfiguration.java       |   7 +-
 .../DataFormatComponentAutoConfiguration.java   | 116 ++--
 .../DataFormatComponentConfiguration.java       |   7 +-
 .../DataSetComponentAutoConfiguration.java      | 116 ++--
 .../DataSetComponentConfiguration.java          |   7 +-
 .../DirectComponentAutoConfiguration.java       |  94 +--
 .../DirectComponentConfiguration.java           |   5 +-
 .../DirectVmComponentAutoConfiguration.java     |  95 +--
 .../DirectVmComponentConfiguration.java         |   5 +-
 .../FileComponentAutoConfiguration.java         | 116 ++--
 .../springboot/FileComponentConfiguration.java  |   7 +-
 .../LanguageComponentAutoConfiguration.java     | 116 ++--
 .../LanguageComponentConfiguration.java         |   7 +-
 .../LogComponentAutoConfiguration.java          |  94 +--
 .../springboot/LogComponentConfiguration.java   |   5 +-
 .../MockComponentAutoConfiguration.java         | 116 ++--
 .../springboot/MockComponentConfiguration.java  |   7 +-
 .../PropertiesComponentAutoConfiguration.java   |  95 +--
 .../PropertiesComponentConfiguration.java       |   5 +-
 .../RefComponentAutoConfiguration.java          | 116 ++--
 .../springboot/RefComponentConfiguration.java   |   7 +-
 .../RestApiComponentAutoConfiguration.java      | 116 ++--
 .../RestApiComponentConfiguration.java          |   7 +-
 .../RestComponentAutoConfiguration.java         |  94 +--
 .../springboot/RestComponentConfiguration.java  |   5 +-
 .../SchedulerComponentAutoConfiguration.java    |  95 +--
 .../SchedulerComponentConfiguration.java        |   5 +-
 .../SedaComponentAutoConfiguration.java         |  94 +--
 .../springboot/SedaComponentConfiguration.java  |   5 +-
 .../StubComponentAutoConfiguration.java         |  94 +--
 .../springboot/StubComponentConfiguration.java  |   5 +-
 .../TestComponentAutoConfiguration.java         | 116 ++--
 .../springboot/TestComponentConfiguration.java  |   7 +-
 .../TimerComponentAutoConfiguration.java        | 116 ++--
 .../springboot/TimerComponentConfiguration.java |   7 +-
 .../ValidatorComponentAutoConfiguration.java    |  95 +--
 .../ValidatorComponentConfiguration.java        |   5 +-
 .../VmComponentAutoConfiguration.java           |  93 +--
 .../vm/springboot/VmComponentConfiguration.java |   5 +-
 .../XsltComponentAutoConfiguration.java         |  94 +--
 .../springboot/XsltComponentConfiguration.java  |   5 +-
 .../GzipDataFormatAutoConfiguration.java        |  95 +--
 .../springboot/GzipDataFormatConfiguration.java |   5 +-
 ...erializationDataFormatAutoConfiguration.java |  98 ++--
 .../SerializationDataFormatConfiguration.java   |   5 +-
 .../StringDataFormatAutoConfiguration.java      |  96 ++--
 .../StringDataFormatConfiguration.java          |   5 +-
 .../ZipDataFormatAutoConfiguration.java         |  95 +--
 .../springboot/ZipDataFormatConfiguration.java  |   5 +-
 .../BeanLanguageAutoConfiguration.java          |  95 +--
 .../springboot/BeanLanguageConfiguration.java   |   5 +-
 .../ConstantLanguageAutoConfiguration.java      |  96 ++--
 .../ConstantLanguageConfiguration.java          |   5 +-
 .../HeaderLanguageAutoConfiguration.java        |  95 +--
 .../springboot/HeaderLanguageConfiguration.java |   5 +-
 ...changePropertyLanguageAutoConfiguration.java |  98 ++--
 .../ExchangePropertyLanguageConfiguration.java  |   5 +-
 .../RefLanguageAutoConfiguration.java           |  94 +--
 .../springboot/RefLanguageConfiguration.java    |   5 +-
 .../FileLanguageAutoConfiguration.java          |  95 +--
 .../springboot/FileLanguageConfiguration.java   |   5 +-
 .../SimpleLanguageAutoConfiguration.java        |  95 +--
 .../springboot/SimpleLanguageConfiguration.java |   5 +-
 .../TokenizeLanguageAutoConfiguration.java      |  96 ++--
 .../TokenizeLanguageConfiguration.java          |   5 +-
 .../XMLTokenizeLanguageAutoConfiguration.java   |  96 ++--
 .../XMLTokenizeLanguageConfiguration.java       |   5 +-
 .../XPathLanguageAutoConfiguration.java         |  95 +--
 .../springboot/XPathLanguageConfiguration.java  |   5 +-
 .../CouchbaseComponentAutoConfiguration.java    | 116 ++--
 .../CouchbaseComponentConfiguration.java        |   7 +-
 .../CouchDbComponentAutoConfiguration.java      | 116 ++--
 .../CouchDbComponentConfiguration.java          |   7 +-
 ...italSignatureComponentAutoConfiguration.java |  97 ++--
 .../DigitalSignatureComponentConfiguration.java |   5 +-
 .../CryptoDataFormatAutoConfiguration.java      |  96 ++--
 .../CryptoDataFormatConfiguration.java          |   5 +-
 .../PGPDataFormatAutoConfiguration.java         |  95 +--
 .../springboot/PGPDataFormatConfiguration.java  |   5 +-
 .../CsvDataFormatAutoConfiguration.java         |  95 +--
 .../springboot/CsvDataFormatConfiguration.java  |   5 +-
 .../CxfRsComponentAutoConfiguration.java        |  94 +--
 .../springboot/CxfRsComponentConfiguration.java |   5 +-
 .../CxfComponentAutoConfiguration.java          |  94 +--
 .../springboot/CxfComponentConfiguration.java   |   5 +-
 .../DigitalOceanComponentAutoConfiguration.java | 117 ++--
 .../DigitalOceanComponentConfiguration.java     |  50 ++
 .../DisruptorComponentAutoConfiguration.java    |  95 +--
 .../DisruptorComponentConfiguration.java        |   5 +-
 .../DisruptorVmComponentAutoConfiguration.java  |  96 ++--
 .../DisruptorVmComponentConfiguration.java      |   5 +-
 .../DnsComponentAutoConfiguration.java          | 116 ++--
 .../springboot/DnsComponentConfiguration.java   |   7 +-
 .../DockerComponentAutoConfiguration.java       |  94 +--
 .../DockerComponentConfiguration.java           |   5 +-
 .../DozerComponentAutoConfiguration.java        | 116 ++--
 .../springboot/DozerComponentConfiguration.java |   7 +-
 .../DrillComponentAutoConfiguration.java        | 116 ++--
 .../springboot/DrillComponentConfiguration.java |   7 +-
 .../DropboxComponentAutoConfiguration.java      | 116 ++--
 .../DropboxComponentConfiguration.java          |   7 +-
 .../EhcacheComponentAutoConfiguration.java      |  95 +--
 .../EhcacheComponentConfiguration.java          |   5 +-
 ...ElasticsearchComponentAutoConfiguration.java |  98 ++--
 .../ElasticsearchComponentConfiguration.java    |   5 +-
 ...ElasticsearchComponentAutoConfiguration.java | 119 ++--
 .../ElasticsearchComponentConfiguration.java    |   7 +-
 .../ElsqlComponentAutoConfiguration.java        |  94 +--
 .../springboot/ElsqlComponentConfiguration.java |   5 +-
 .../EtcdComponentAutoConfiguration.java         |  94 +--
 .../springboot/EtcdComponentConfiguration.java  |   5 +-
 .../ExecComponentAutoConfiguration.java         | 116 ++--
 .../springboot/ExecComponentConfiguration.java  |   7 +-
 .../FacebookComponentAutoConfiguration.java     |  95 +--
 .../FacebookComponentConfiguration.java         |   5 +-
 .../FlatpackComponentAutoConfiguration.java     | 116 ++--
 .../FlatpackComponentConfiguration.java         |   7 +-
 .../FlatpackDataFormatAutoConfiguration.java    |  96 ++--
 .../FlatpackDataFormatConfiguration.java        |   5 +-
 .../FlinkComponentAutoConfiguration.java        |  94 +--
 .../springboot/FlinkComponentConfiguration.java |   5 +-
 .../FopComponentAutoConfiguration.java          | 116 ++--
 .../springboot/FopComponentConfiguration.java   |   7 +-
 .../FreemarkerComponentAutoConfiguration.java   |  95 +--
 .../FreemarkerComponentConfiguration.java       |   5 +-
 .../FtpComponentAutoConfiguration.java          | 116 ++--
 .../springboot/FtpComponentConfiguration.java   |   7 +-
 .../FtpsComponentAutoConfiguration.java         |  94 +--
 .../springboot/FtpsComponentConfiguration.java  |   5 +-
 .../SftpComponentAutoConfiguration.java         | 116 ++--
 .../springboot/SftpComponentConfiguration.java  |   7 +-
 .../GangliaComponentAutoConfiguration.java      |  95 +--
 .../GangliaComponentConfiguration.java          |   5 +-
 .../GeoCoderComponentAutoConfiguration.java     | 116 ++--
 .../GeoCoderComponentConfiguration.java         |   7 +-
 .../GitComponentAutoConfiguration.java          | 116 ++--
 .../springboot/GitComponentConfiguration.java   |   7 +-
 .../GitHubComponentAutoConfiguration.java       | 116 ++--
 .../GitHubComponentConfiguration.java           |   7 +-
 ...oogleCalendarComponentAutoConfiguration.java |  97 ++--
 .../GoogleCalendarComponentConfiguration.java   |   5 +-
 .../GoogleDriveComponentAutoConfiguration.java  |  96 ++--
 .../GoogleDriveComponentConfiguration.java      |   5 +-
 .../GoogleMailComponentAutoConfiguration.java   |  95 +--
 .../GoogleMailComponentConfiguration.java       |   5 +-
 .../GooglePubsubComponentAutoConfiguration.java |  96 ++--
 .../GooglePubsubComponentConfiguration.java     |   5 +-
 .../GoraComponentAutoConfiguration.java         | 116 ++--
 .../springboot/GoraComponentConfiguration.java  |   7 +-
 .../GroovyLanguageAutoConfiguration.java        |  95 +--
 .../springboot/GroovyLanguageConfiguration.java |   5 +-
 .../GrpcComponentAutoConfiguration.java         | 116 ++--
 .../springboot/GrpcComponentConfiguration.java  |  49 ++
 .../GsonDataFormatAutoConfiguration.java        |  95 +--
 .../springboot/GsonDataFormatConfiguration.java |   5 +-
 ...GuavaEventBusComponentAutoConfiguration.java |  98 ++--
 .../GuavaEventBusComponentConfiguration.java    |   5 +-
 ...tAtomicnumberComponentAutoConfiguration.java |  97 ++--
 ...lcastAtomicnumberComponentConfiguration.java |   5 +-
 ...lcastInstanceComponentAutoConfiguration.java |  97 ++--
 ...HazelcastInstanceComponentConfiguration.java |   5 +-
 ...HazelcastListComponentAutoConfiguration.java |  98 ++--
 .../HazelcastListComponentConfiguration.java    |   5 +-
 .../HazelcastMapComponentAutoConfiguration.java |  96 ++--
 .../HazelcastMapComponentConfiguration.java     |   5 +-
 ...lcastMultimapComponentAutoConfiguration.java |  97 ++--
 ...HazelcastMultimapComponentConfiguration.java |   5 +-
 ...azelcastQueueComponentAutoConfiguration.java |  97 ++--
 .../HazelcastQueueComponentConfiguration.java   |   5 +-
 ...ReplicatedmapComponentAutoConfiguration.java |  97 ++--
 ...castReplicatedmapComponentConfiguration.java |   5 +-
 ...astRingbufferComponentAutoConfiguration.java |  97 ++--
 ...zelcastRingbufferComponentConfiguration.java |   5 +-
 ...HazelcastSedaComponentAutoConfiguration.java |  98 ++--
 .../HazelcastSedaComponentConfiguration.java    |   5 +-
 .../HazelcastSetComponentAutoConfiguration.java |  96 ++--
 .../HazelcastSetComponentConfiguration.java     |   5 +-
 ...azelcastTopicComponentAutoConfiguration.java |  97 ++--
 .../HazelcastTopicComponentConfiguration.java   |   5 +-
 .../HBaseComponentAutoConfiguration.java        |  94 +--
 .../springboot/HBaseComponentConfiguration.java |   5 +-
 .../HdfsComponentAutoConfiguration.java         |  94 +--
 .../springboot/HdfsComponentConfiguration.java  |   5 +-
 .../HdfsComponentAutoConfiguration.java         |  94 +--
 .../springboot/HdfsComponentConfiguration.java  |   5 +-
 .../HessianDataFormatAutoConfiguration.java     |  96 ++--
 .../HessianDataFormatConfiguration.java         |   5 +-
 .../HipchatComponentAutoConfiguration.java      | 116 ++--
 .../HipchatComponentConfiguration.java          |   7 +-
 .../HL7DataFormatAutoConfiguration.java         |  95 +--
 .../springboot/HL7DataFormatConfiguration.java  |   5 +-
 .../TerserLanguageAutoConfiguration.java        |  95 +--
 .../springboot/TerserLanguageConfiguration.java |   5 +-
 .../HttpComponentAutoConfiguration.java         |  94 +--
 .../springboot/HttpComponentConfiguration.java  |   5 +-
 .../HttpComponentAutoConfiguration.java         |  94 +--
 .../springboot/HttpComponentConfiguration.java  |   5 +-
 .../ICalDataFormatAutoConfiguration.java        |  95 +--
 .../springboot/ICalDataFormatConfiguration.java |   5 +-
 .../IgniteCacheComponentAutoConfiguration.java  |  96 ++--
 .../IgniteCacheComponentConfiguration.java      |   5 +-
 ...IgniteComputeComponentAutoConfiguration.java |  98 ++--
 .../IgniteComputeComponentConfiguration.java    |   5 +-
 .../IgniteEventsComponentAutoConfiguration.java |  96 ++--
 .../IgniteEventsComponentConfiguration.java     |   5 +-
 .../IgniteIdGenComponentAutoConfiguration.java  |  96 ++--
 .../IgniteIdGenComponentConfiguration.java      |   5 +-
 ...niteMessagingComponentAutoConfiguration.java |  97 ++--
 .../IgniteMessagingComponentConfiguration.java  |   5 +-
 .../IgniteQueueComponentAutoConfiguration.java  |  96 ++--
 .../IgniteQueueComponentConfiguration.java      |   5 +-
 .../IgniteSetComponentAutoConfiguration.java    |  95 +--
 .../IgniteSetComponentConfiguration.java        |   5 +-
 .../InfinispanComponentAutoConfiguration.java   |  95 +--
 .../InfinispanComponentConfiguration.java       |   5 +-
 .../InfluxDbComponentAutoConfiguration.java     | 116 ++--
 .../InfluxDbComponentConfiguration.java         |   7 +-
 .../IrcComponentAutoConfiguration.java          |  94 +--
 .../springboot/IrcComponentConfiguration.java   |   5 +-
 .../IronMQComponentAutoConfiguration.java       | 116 ++--
 .../IronMQComponentConfiguration.java           |   7 +-
 .../JacksonDataFormatAutoConfiguration.java     |  96 ++--
 .../JacksonDataFormatConfiguration.java         |   5 +-
 .../JacksonXMLDataFormatAutoConfiguration.java  |  96 ++--
 .../JacksonXMLDataFormatConfiguration.java      |   5 +-
 .../JavaSpaceComponentAutoConfiguration.java    | 116 ++--
 .../JavaSpaceComponentConfiguration.java        |   7 +-
 .../JaxbDataFormatAutoConfiguration.java        |  95 +--
 .../springboot/JaxbDataFormatConfiguration.java |   5 +-
 .../JBPMComponentAutoConfiguration.java         | 116 ++--
 .../springboot/JBPMComponentConfiguration.java  |   7 +-
 .../JCacheComponentAutoConfiguration.java       |  94 +--
 .../JCacheComponentConfiguration.java           |   5 +-
 .../JcrComponentAutoConfiguration.java          | 116 ++--
 .../springboot/JcrComponentConfiguration.java   |   7 +-
 .../JdbcComponentAutoConfiguration.java         |  94 +--
 .../springboot/JdbcComponentConfiguration.java  |   5 +-
 .../JettyHttpComponentAutoConfiguration9.java   |  95 +--
 .../JettyHttpComponentConfiguration9.java       |   5 +-
 .../JGroupsComponentAutoConfiguration.java      |  95 +--
 .../JGroupsComponentConfiguration.java          |   5 +-
 .../JibxDataFormatAutoConfiguration.java        |  95 +--
 .../springboot/JibxDataFormatConfiguration.java |   5 +-
 .../JingComponentAutoConfiguration.java         | 116 ++--
 .../springboot/JingComponentConfiguration.java  |   7 +-
 .../JIRAComponentAutoConfiguration.java         | 116 ++--
 .../springboot/JIRAComponentConfiguration.java  |   7 +-
 .../JmsComponentAutoConfiguration.java          |  94 +--
 .../springboot/JmsComponentConfiguration.java   |   5 +-
 .../JMXComponentAutoConfiguration.java          | 116 ++--
 .../springboot/JMXComponentConfiguration.java   |   7 +-
 .../JohnzonDataFormatAutoConfiguration.java     |  96 ++--
 .../JohnzonDataFormatConfiguration.java         |   5 +-
 .../JoltComponentAutoConfiguration.java         |  94 +--
 .../springboot/JoltComponentConfiguration.java  |   5 +-
 .../SqlLanguageAutoConfiguration.java           |  94 +--
 .../springboot/SqlLanguageConfiguration.java    |   5 +-
 .../JpaComponentAutoConfiguration.java          |  94 +--
 .../springboot/JpaComponentConfiguration.java   |   5 +-
 .../ScpComponentAutoConfiguration.java          |  94 +--
 .../springboot/ScpComponentConfiguration.java   |   5 +-
 .../JsonPathLanguageAutoConfiguration.java      |  96 ++--
 .../JsonPathLanguageConfiguration.java          |   5 +-
 .../Jt400ComponentAutoConfiguration.java        |  94 +--
 .../springboot/Jt400ComponentConfiguration.java |   5 +-
 .../JuelLanguageAutoConfiguration.java          |  94 +--
 .../springboot/JuelLanguageConfiguration.java   |   5 +-
 .../JXPathLanguageAutoConfiguration.java        |  95 +--
 .../springboot/JXPathLanguageConfiguration.java |   5 +-
 .../KafkaComponentAutoConfiguration.java        |  94 +--
 .../springboot/KafkaComponentConfiguration.java |   5 +-
 .../KestrelComponentAutoConfiguration.java      |  95 +--
 .../KestrelComponentConfiguration.java          |   5 +-
 .../KratiComponentAutoConfiguration.java        | 116 ++--
 .../springboot/KratiComponentConfiguration.java |   7 +-
 .../KubernetesComponentAutoConfiguration.java   | 116 ++--
 .../KubernetesComponentConfiguration.java       |   7 +-
 .../LdapComponentAutoConfiguration.java         | 116 ++--
 .../springboot/LdapComponentConfiguration.java  |   7 +-
 .../LinkedInComponentAutoConfiguration.java     |  95 +--
 .../LinkedInComponentConfiguration.java         |   5 +-
 .../LuceneComponentAutoConfiguration.java       |  94 +--
 .../LuceneComponentConfiguration.java           |   5 +-
 .../LumberjackComponentAutoConfiguration.java   |  95 +--
 .../LumberjackComponentConfiguration.java       |   5 +-
 .../LZFDataFormatAutoConfiguration.java         |  95 +--
 .../springboot/LZFDataFormatConfiguration.java  |   5 +-
 .../MailComponentAutoConfiguration.java         |  94 +--
 .../springboot/MailComponentConfiguration.java  |   5 +-
 ...imeMultipartDataFormatAutoConfiguration.java |  98 ++--
 .../MimeMultipartDataFormatConfiguration.java   |   5 +-
 .../MetricsComponentAutoConfiguration.java      |  95 +--
 .../MetricsComponentConfiguration.java          |   5 +-
 .../MiloClientComponentAutoConfiguration.java   |  95 +--
 .../MiloClientComponentConfiguration.java       |   5 +-
 .../MiloServerComponentAutoConfiguration.java   |  95 +--
 .../MiloServerComponentConfiguration.java       |   5 +-
 .../Mina2ComponentAutoConfiguration.java        |  94 +--
 .../springboot/Mina2ComponentConfiguration.java |   5 +-
 .../MllpComponentAutoConfiguration.java         | 116 ++--
 .../springboot/MllpComponentConfiguration.java  |   7 +-
 .../GridFsComponentAutoConfiguration.java       | 116 ++--
 .../GridFsComponentConfiguration.java           |   7 +-
 .../MongoDbComponentAutoConfiguration.java      | 116 ++--
 .../MongoDbComponentConfiguration.java          |   7 +-
 .../MongoDbComponentAutoConfiguration.java      | 116 ++--
 .../MongoDbComponentConfiguration.java          |   7 +-
 .../MQTTComponentAutoConfiguration.java         |  94 +--
 .../springboot/MQTTComponentConfiguration.java  |   5 +-
 .../MsvComponentAutoConfiguration.java          |  94 +--
 .../springboot/MsvComponentConfiguration.java   |   5 +-
 .../MustacheComponentAutoConfiguration.java     |  95 +--
 .../MustacheComponentConfiguration.java         |   5 +-
 .../MvelComponentAutoConfiguration.java         | 116 ++--
 .../springboot/MvelComponentConfiguration.java  |   7 +-
 .../MvelLanguageAutoConfiguration.java          |  95 +--
 .../springboot/MvelLanguageConfiguration.java   |   5 +-
 .../MyBatisComponentAutoConfiguration.java      |  95 +--
 .../MyBatisComponentConfiguration.java          |   5 +-
 .../NagiosComponentAutoConfiguration.java       |  94 +--
 .../NagiosComponentConfiguration.java           |   5 +-
 .../NatsComponentAutoConfiguration.java         |  94 +--
 .../springboot/NatsComponentConfiguration.java  |   5 +-
 .../NettyHttpComponentAutoConfiguration.java    |  95 +--
 .../NettyHttpComponentConfiguration.java        |   5 +-
 .../NettyComponentAutoConfiguration.java        |  94 +--
 .../springboot/NettyComponentConfiguration.java |   5 +-
 .../NettyHttpComponentAutoConfiguration.java    |  95 +--
 .../NettyHttpComponentConfiguration.java        |   5 +-
 .../NettyComponentAutoConfiguration.java        |  94 +--
 .../springboot/NettyComponentConfiguration.java |   5 +-
 .../OgnlLanguageAutoConfiguration.java          |  95 +--
 .../springboot/OgnlLanguageConfiguration.java   |   5 +-
 .../Olingo2ComponentAutoConfiguration.java      |  95 +--
 .../Olingo2ComponentConfiguration.java          |   5 +-
 .../Olingo4ComponentAutoConfiguration.java      |  95 +--
 .../Olingo4ComponentConfiguration.java          |   5 +-
 .../OpenShiftComponentAutoConfiguration.java    |  95 +--
 .../OpenShiftComponentConfiguration.java        |   5 +-
 .../CinderComponentAutoConfiguration.java       | 116 ++--
 .../CinderComponentConfiguration.java           |   7 +-
 .../GlanceComponentAutoConfiguration.java       | 116 ++--
 .../GlanceComponentConfiguration.java           |   7 +-
 .../KeystoneComponentAutoConfiguration.java     | 116 ++--
 .../KeystoneComponentConfiguration.java         |   7 +-
 .../NeutronComponentAutoConfiguration.java      | 116 ++--
 .../NeutronComponentConfiguration.java          |   7 +-
 .../NovaComponentAutoConfiguration.java         | 116 ++--
 .../springboot/NovaComponentConfiguration.java  |   7 +-
 .../SwiftComponentAutoConfiguration.java        | 116 ++--
 .../springboot/SwiftComponentConfiguration.java |   7 +-
 .../OptaPlannerComponentAutoConfiguration.java  | 117 ++--
 .../OptaPlannerComponentConfiguration.java      |   7 +-
 .../PahoComponentAutoConfiguration.java         |  94 +--
 .../springboot/PahoComponentConfiguration.java  |   5 +-
 .../PdfComponentAutoConfiguration.java          | 116 ++--
 .../springboot/PdfComponentConfiguration.java   |   7 +-
 .../PgEventComponentAutoConfiguration.java      | 116 ++--
 .../PgEventComponentConfiguration.java          |   7 +-
 .../PrinterComponentAutoConfiguration.java      | 116 ++--
 .../PrinterComponentConfiguration.java          |   7 +-
 .../ProtobufDataFormatAutoConfiguration.java    |  96 ++--
 .../ProtobufDataFormatConfiguration.java        |   5 +-
 .../PubNubComponentAutoConfiguration.java       | 116 ++--
 .../PubNubComponentConfiguration.java           |  50 ++
 .../QuartzComponentAutoConfiguration.java       |  94 +--
 .../QuartzComponentConfiguration.java           |   5 +-
 .../QuickfixjComponentAutoConfiguration.java    |  95 +--
 .../QuickfixjComponentConfiguration.java        |   5 +-
 .../RabbitMQComponentAutoConfiguration.java     | 116 ++--
 .../RabbitMQComponentConfiguration.java         |   7 +-
 ...activeStreamsComponentAutoConfiguration.java |  97 ++--
 .../ReactiveStreamsComponentConfiguration.java  |   5 +-
 .../RestSwaggerComponentAutoConfiguration.java  |  96 ++--
 .../RestSwaggerComponentConfiguration.java      |   5 +-
 .../RestletComponentAutoConfiguration.java      |  95 +--
 .../RestletComponentConfiguration.java          |   5 +-
 .../RmiComponentAutoConfiguration.java          | 116 ++--
 .../springboot/RmiComponentConfiguration.java   |   7 +-
 .../RouteboxComponentAutoConfiguration.java     | 116 ++--
 .../RouteboxComponentConfiguration.java         |   7 +-
 .../RssComponentAutoConfiguration.java          | 116 ++--
 .../springboot/RssComponentConfiguration.java   |   7 +-
 .../RssDataFormatAutoConfiguration.java         |  95 +--
 .../springboot/RssDataFormatConfiguration.java  |   5 +-
 .../SalesforceComponentAutoConfiguration.java   |  95 +--
 .../SalesforceComponentConfiguration.java       |   5 +-
 .../NetWeaverComponentAutoConfiguration.java    | 116 ++--
 .../NetWeaverComponentConfiguration.java        |   7 +-
 .../XQueryComponentAutoConfiguration.java       |  94 +--
 .../XQueryComponentConfiguration.java           |   5 +-
 .../XQueryLanguageAutoConfiguration.java        |  95 +--
 .../springboot/XQueryLanguageConfiguration.java |   5 +-
 .../SchematronComponentAutoConfiguration.java   | 116 ++--
 .../SchematronComponentConfiguration.java       |   7 +-
 .../JavaScriptLanguageAutoConfiguration.java    |  96 ++--
 .../JavaScriptLanguageConfiguration.java        |   5 +-
 .../PhpLanguageAutoConfiguration.java           |  94 +--
 .../springboot/PhpLanguageConfiguration.java    |   5 +-
 .../PythonLanguageAutoConfiguration.java        |  95 +--
 .../springboot/PythonLanguageConfiguration.java |   5 +-
 .../RubyLanguageAutoConfiguration.java          |  95 +--
 .../springboot/RubyLanguageConfiguration.java   |   5 +-
 .../ServiceNowComponentAutoConfiguration.java   |  95 +--
 .../ServiceNowComponentConfiguration.java       |   5 +-
 .../ServletComponentAutoConfiguration.java      |  95 +--
 .../ServletComponentConfiguration.java          |   5 +-
 .../SipComponentAutoConfiguration.java          | 116 ++--
 .../springboot/SipComponentConfiguration.java   |   7 +-
 .../SjmsBatchComponentAutoConfiguration.java    |  95 +--
 .../SjmsBatchComponentConfiguration.java        |   5 +-
 .../SjmsComponentAutoConfiguration.java         |  94 +--
 .../springboot/SjmsComponentConfiguration.java  |   5 +-
 .../Sjms2ComponentAutoConfiguration.java        |  94 +--
 .../springboot/Sjms2ComponentConfiguration.java |   5 +-
 .../SlackComponentAutoConfiguration.java        |  94 +--
 .../springboot/SlackComponentConfiguration.java |   5 +-
 .../SmppComponentAutoConfiguration.java         |  94 +--
 .../springboot/SmppComponentConfiguration.java  |   5 +-
 .../SnakeYAMLDataFormatAutoConfiguration.java   |  96 ++--
 .../SnakeYAMLDataFormatConfiguration.java       |   5 +-
 .../SnmpComponentAutoConfiguration.java         | 116 ++--
 .../springboot/SnmpComponentConfiguration.java  |   7 +-
 .../SoapJaxbDataFormatAutoConfiguration.java    |  96 ++--
 .../SoapJaxbDataFormatConfiguration.java        |   5 +-
 .../SolrComponentAutoConfiguration.java         | 116 ++--
 .../springboot/SolrComponentConfiguration.java  |  49 ++
 .../SparkComponentAutoConfiguration.java        |  94 +--
 .../springboot/SparkComponentConfiguration.java |   5 +-
 .../SplunkComponentAutoConfiguration.java       |  94 +--
 .../SplunkComponentConfiguration.java           |   5 +-
 .../SpringBatchComponentAutoConfiguration.java  |  96 ++--
 .../SpringBatchComponentConfiguration.java      |   5 +-
 ...ngIntegrationComponentAutoConfiguration.java | 119 ++--
 ...SpringIntegrationComponentConfiguration.java |   7 +-
 .../SpringLdapComponentAutoConfiguration.java   | 116 ++--
 .../SpringLdapComponentConfiguration.java       |   7 +-
 .../RedisComponentAutoConfiguration.java        | 116 ++--
 .../springboot/RedisComponentConfiguration.java |   7 +-
 .../EventComponentAutoConfiguration.java        | 116 ++--
 .../springboot/EventComponentConfiguration.java |  20 +-
 .../SpelLanguageAutoConfiguration.java          |  95 +--
 .../springboot/SpelLanguageConfiguration.java   |   5 +-
 ...ingWebserviceComponentAutoConfiguration.java |  97 ++--
 .../SpringWebserviceComponentConfiguration.java |   5 +-
 .../SqlComponentAutoConfiguration.java          |  94 +--
 .../springboot/SqlComponentConfiguration.java   |   5 +-
 .../SqlStoredComponentAutoConfiguration.java    |  95 +--
 .../SqlStoredComponentConfiguration.java        |   5 +-
 .../SshComponentAutoConfiguration.java          |  94 +--
 .../springboot/SshComponentConfiguration.java   |   5 +-
 .../StAXComponentAutoConfiguration.java         | 116 ++--
 .../springboot/StAXComponentConfiguration.java  |   7 +-
 .../StompComponentAutoConfiguration.java        |  94 +--
 .../springboot/StompComponentConfiguration.java |   5 +-
 .../StreamComponentAutoConfiguration.java       | 116 ++--
 .../StreamComponentConfiguration.java           |   7 +-
 ...tringTemplateComponentAutoConfiguration.java | 119 ++--
 .../StringTemplateComponentConfiguration.java   |   7 +-
 .../SyslogDataFormatAutoConfiguration.java      |  96 ++--
 .../SyslogDataFormatConfiguration.java          |   5 +-
 .../TidyMarkupDataFormatAutoConfiguration.java  |  96 ++--
 .../TidyMarkupDataFormatConfiguration.java      |   5 +-
 .../TarFileDataFormatAutoConfiguration.java     |  96 ++--
 .../TarFileDataFormatConfiguration.java         |   5 +-
 .../TelegramComponentAutoConfiguration.java     |  95 +--
 .../TelegramComponentConfiguration.java         |   5 +-
 .../TikaComponentAutoConfiguration.java         | 116 ++--
 .../springboot/TikaComponentConfiguration.java  |   7 +-
 .../TwitterComponentAutoConfiguration.java      |  95 +--
 .../TwitterComponentConfiguration.java          |   5 +-
 .../UndertowComponentAutoConfiguration.java     |  95 +--
 .../UndertowComponentConfiguration.java         |   5 +-
 ...UniVocityCsvDataFormatAutoConfiguration.java |  98 ++--
 .../UniVocityCsvDataFormatConfiguration.java    |   5 +-
 ...tyFixedWidthDataFormatAutoConfiguration.java |  98 ++--
 ...VocityFixedWidthDataFormatConfiguration.java |   5 +-
 ...UniVocityTsvDataFormatAutoConfiguration.java |  98 ++--
 .../UniVocityTsvDataFormatConfiguration.java    |   5 +-
 .../VelocityComponentAutoConfiguration.java     |  95 +--
 .../VelocityComponentConfiguration.java         |   5 +-
 .../VertxComponentAutoConfiguration.java        |  94 +--
 .../springboot/VertxComponentConfiguration.java |   5 +-
 .../WeatherComponentAutoConfiguration.java      | 116 ++--
 .../WeatherComponentConfiguration.java          |   7 +-
 .../WebsocketComponentAutoConfiguration.java    |  95 +--
 .../WebsocketComponentConfiguration.java        |   5 +-
 .../XmlBeansDataFormatAutoConfiguration.java    |  96 ++--
 .../XmlBeansDataFormatConfiguration.java        |   5 +-
 .../XmlJsonDataFormatAutoConfiguration.java     |  96 ++--
 .../XmlJsonDataFormatConfiguration.java         |   5 +-
 .../XmlRpcComponentAutoConfiguration.java       | 116 ++--
 .../XmlRpcComponentConfiguration.java           |   7 +-
 .../XmlRpcDataFormatAutoConfiguration.java      |  96 ++--
 .../XmlRpcDataFormatConfiguration.java          |   5 +-
 .../XmlSignatureComponentAutoConfiguration.java |  96 ++--
 .../XmlSignatureComponentConfiguration.java     |   5 +-
 .../XMLSecurityDataFormatAutoConfiguration.java |  96 ++--
 .../XMLSecurityDataFormatConfiguration.java     |   5 +-
 .../XmppComponentAutoConfiguration.java         | 116 ++--
 .../springboot/XmppComponentConfiguration.java  |   7 +-
 .../JsonDataFormatAutoConfiguration.java        |  95 +--
 .../springboot/JsonDataFormatConfiguration.java |   5 +-
 .../XStreamDataFormatAutoConfiguration.java     |  96 ++--
 .../XStreamDataFormatConfiguration.java         |   5 +-
 .../YammerComponentAutoConfiguration.java       |  94 +--
 .../YammerComponentConfiguration.java           |   5 +-
 .../ZendeskComponentAutoConfiguration.java      |  95 +--
 .../ZendeskComponentConfiguration.java          |   5 +-
 .../ZipFileDataFormatAutoConfiguration.java     |  96 ++--
 .../ZipFileDataFormatConfiguration.java         |   5 +-
 .../MasterComponentAutoConfiguration.java       |  94 +--
 .../MasterComponentConfiguration.java           |   5 +-
 .../ZooKeeperComponentAutoConfiguration.java    |  95 +--
 .../ZooKeeperComponentConfiguration.java        |   5 +-
 .../SpringBootAutoConfigurationMojo.java        | 571 +++++++++++++------
 629 files changed, 22233 insertions(+), 12249 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/camel-core/src/main/java/org/apache/camel/spi/ComponentCustomizer.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/spi/ComponentCustomizer.java 
b/camel-core/src/main/java/org/apache/camel/spi/ComponentCustomizer.java
new file mode 100644
index 0000000..febad71
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/spi/ComponentCustomizer.java
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spi;
+
+import org.apache.camel.Component;
+
+@FunctionalInterface
+public interface ComponentCustomizer<T extends Component> {
+    /**
+     * Customize the specified {@link Component}.
+     *
+     * @param component the component to customize
+     */
+    void customize(T component);
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/camel-core/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java 
b/camel-core/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java
new file mode 100644
index 0000000..bee9e22
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/spi/DataFormatCustomizer.java
@@ -0,0 +1,27 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spi;
+
+@FunctionalInterface
+public interface DataFormatCustomizer<T extends DataFormat> {
+    /**
+     * Customize the specified {@link DataFormat}
+     *
+     * @param dataformat the dataformat to customize
+     */
+    void customize(T dataformat);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/camel-core/src/main/java/org/apache/camel/spi/LanguageCustomizer.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/spi/LanguageCustomizer.java 
b/camel-core/src/main/java/org/apache/camel/spi/LanguageCustomizer.java
new file mode 100644
index 0000000..fa596bf
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/spi/LanguageCustomizer.java
@@ -0,0 +1,27 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spi;
+
+@FunctionalInterface
+public interface LanguageCustomizer<T extends Language> {
+    /**
+     * Customize the specified {@link Language}
+     *
+     * @param language the language to customize
+     */
+    void customize(T language);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/ComponentConfigurationProperties.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/ComponentConfigurationProperties.java
 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/ComponentConfigurationProperties.java
index 804dc45..e6d7db4 100644
--- 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/ComponentConfigurationProperties.java
+++ 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/ComponentConfigurationProperties.java
@@ -14,20 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.spring.boot;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 @ConfigurationProperties(prefix = "camel.component")
-public class ComponentConfigurationProperties {
-    private boolean enabled = true;
-
-    public boolean isEnabled() {
-        return enabled;
-    }
-
-    public void setEnabled(boolean enabled) {
-        this.enabled = enabled;
-    }
+public class ComponentConfigurationProperties extends 
ComponentConfigurationPropertiesCommon {
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/ComponentConfigurationPropertiesCommon.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/ComponentConfigurationPropertiesCommon.java
 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/ComponentConfigurationPropertiesCommon.java
new file mode 100644
index 0000000..1655bd4
--- /dev/null
+++ 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/ComponentConfigurationPropertiesCommon.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot;
+
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+public class ComponentConfigurationPropertiesCommon {
+    /**
+     * Global option to enable/disable component auto-configuration, default 
is true.
+     */
+    private boolean enabled = true;
+
+    @NestedConfigurationProperty
+    private ConfigurerProperties configurer = new ConfigurerProperties();
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public ConfigurerProperties getConfigurer() {
+        return configurer;
+    }
+
+    // ********************************
+    // Configurer
+    // ********************************
+
+    public class ConfigurerProperties {
+        /**
+         * Global option to enable/disable component configurers, default is 
true.
+         */
+        private boolean enabled = true;
+
+        public boolean isEnabled() {
+            return enabled;
+        }
+
+        public void setEnabled(boolean enabled) {
+            this.enabled = enabled;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/DataFormatConfigurationProperties.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/DataFormatConfigurationProperties.java
 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/DataFormatConfigurationProperties.java
index 5c0e3d8..0805565 100644
--- 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/DataFormatConfigurationProperties.java
+++ 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/DataFormatConfigurationProperties.java
@@ -14,20 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.spring.boot;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 @ConfigurationProperties(prefix = "camel.dataformat")
-public class DataFormatConfigurationProperties {
-    private boolean enabled = true;
-
-    public boolean isEnabled() {
-        return enabled;
-    }
-
-    public void setEnabled(boolean enabled) {
-        this.enabled = enabled;
-    }
+public class DataFormatConfigurationProperties extends 
DataFormatConfigurationPropertiesCommon {
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/DataFormatConfigurationPropertiesCommon.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/DataFormatConfigurationPropertiesCommon.java
 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/DataFormatConfigurationPropertiesCommon.java
new file mode 100644
index 0000000..0589ff3
--- /dev/null
+++ 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/DataFormatConfigurationPropertiesCommon.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot;
+
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+public class DataFormatConfigurationPropertiesCommon {
+    /**
+     * Global option to enable/disable dataformat auto-configuration, default 
is true.
+     */
+    private boolean enabled = true;
+
+    @NestedConfigurationProperty
+    private ConfigurerProperties configurer = new ConfigurerProperties();
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public ConfigurerProperties getConfigurer() {
+        return configurer;
+    }
+
+    // ********************************
+    // Configurer
+    // ********************************
+
+    public class ConfigurerProperties {
+        /**
+         * Global option to enable/disable dataformat configurers, default is 
true.
+         */
+        private boolean enabled = true;
+
+        public boolean isEnabled() {
+            return enabled;
+        }
+
+        public void setEnabled(boolean enabled) {
+            this.enabled = enabled;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/LanguageConfigurationProperties.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/LanguageConfigurationProperties.java
 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/LanguageConfigurationProperties.java
index d577a3a..9e09089 100644
--- 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/LanguageConfigurationProperties.java
+++ 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/LanguageConfigurationProperties.java
@@ -14,20 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.spring.boot;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 @ConfigurationProperties(prefix = "camel.language")
-public class LanguageConfigurationProperties {
-    private boolean enabled = true;
-
-    public boolean isEnabled() {
-        return enabled;
-    }
-
-    public void setEnabled(boolean enabled) {
-        this.enabled = enabled;
-    }
+public class LanguageConfigurationProperties extends 
LanguageConfigurationPropertiesCommon {
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/LanguageConfigurationPropertiesCommon.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/LanguageConfigurationPropertiesCommon.java
 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/LanguageConfigurationPropertiesCommon.java
new file mode 100644
index 0000000..133bfe1
--- /dev/null
+++ 
b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/LanguageConfigurationPropertiesCommon.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot;
+
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+public class LanguageConfigurationPropertiesCommon {
+    /**
+     * Global option to enable/disable language auto-configuration, default is 
true.
+     */
+    private boolean enabled = true;
+
+    @NestedConfigurationProperty
+    private ConfigurerProperties configurer = new ConfigurerProperties();
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public ConfigurerProperties getConfigurer() {
+        return configurer;
+    }
+
+    // ********************************
+    // Configurer
+    // ********************************
+
+    public class ConfigurerProperties {
+        /**
+         * Global option to enable/disable language configurers, default is 
true.
+         */
+        private boolean enabled = true;
+
+        public boolean isEnabled() {
+            return enabled;
+        }
+
+        public void setEnabled(boolean enabled) {
+            this.enabled = enabled;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
index 671810a..318db22 100644
--- 
a/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java
@@ -17,49 +17,81 @@
 package org.apache.camel.component.ahc.springboot;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.ahc.AhcComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
 import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
 
 /**
  * Generated by camel-package-maven-plugin - do not edit this file!
  */
 @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
 @Configuration
-@ConditionalOnBean(type = 
"org.apache.camel.spring.boot.CamelAutoConfiguration")
 @Conditional(AhcComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = 
"org.apache.camel.spring.boot.CamelAutoConfiguration")
-@EnableConfigurationProperties(AhcComponentConfiguration.class)
-public class AhcComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+        AhcComponentConfiguration.class})
+public class AhcComponentAutoConfiguration extends AllNestedConditions {
+
+    private static final Logger LOGGER = LoggerFactory
+            .getLogger(AhcComponentAutoConfiguration.class);
+    @Autowired
+    private CamelContext camelContext;
+    @Autowired(required = false)
+    private List<ComponentCustomizer<AhcComponent>> customizers;
+    @Autowired
+    private ComponentConfigurationProperties globalConfiguration;
+    @Autowired
+    private AhcComponentConfiguration componentConfiguration;
+
+    public AhcComponentAutoConfiguration() {
+        super(ConfigurationPhase.REGISTER_BEAN);
+    }
+
+    @ConditionalOnBean(CamelContext.class)
+    public static class OnCamelContext {
+    }
+
+    @ConditionalOnBean(CamelAutoConfiguration.class)
+    public static class OnCamelAutoConfiguration {
+    }
+
+    public static class Condition extends GroupCondition {
+        public Condition() {
+            super("camel.component", "camel.component.ahc");
+        }
+    }
 
     @Lazy
     @Bean(name = "ahc-component")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(AhcComponent.class)
-    public AhcComponent configureAhcComponent(CamelContext camelContext,
-            AhcComponentConfiguration configuration) throws Exception {
+    public AhcComponent configureAhcComponent() throws Exception {
         AhcComponent component = new AhcComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(configuration, parameters, null,
-                false);
+        IntrospectionSupport.getProperties(componentConfiguration, parameters,
+                null, false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -82,32 +114,16 @@ public class AhcComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        return component;
-    }
-
-    
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-    public static class Condition extends SpringBootCondition {
-        @Override
-        public ConditionOutcome getMatchOutcome(
-                ConditionContext conditionContext,
-                AnnotatedTypeMetadata annotatedTypeMetadata) {
-            boolean groupEnabled = isEnabled(conditionContext,
-                    "camel.component.", true);
-            ConditionMessage.Builder message = ConditionMessage
-                    .forCondition("camel.component.ahc");
-            if (isEnabled(conditionContext, "camel.component.ahc.",
-                    groupEnabled)) {
-                return ConditionOutcome.match(message.because("enabled"));
+        boolean useConfigurers = globalConfiguration.getConfigurer()
+                .isEnabled()
+                && componentConfiguration.getConfigurer().isEnabled();
+        if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+            for (ComponentCustomizer<AhcComponent> configurer : customizers) {
+                LOGGER.debug("Configure component {}, with configurer {}",
+                        component, configurer);
+                configurer.customize(component);
             }
-            return ConditionOutcome.noMatch(message.because("not enabled"));
-        }
-
-        private boolean isEnabled(
-                org.springframework.context.annotation.ConditionContext 
context,
-                java.lang.String prefix, boolean defaultValue) {
-            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
-                    context.getEnvironment(), prefix);
-            return resolver.getProperty("enabled", Boolean.class, 
defaultValue);
         }
+        return component;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentConfiguration.java
index b810679..e51b907 100644
--- 
a/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentConfiguration.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.ahc.springboot;
 import javax.annotation.Generated;
 import org.apache.camel.component.ahc.AhcBinding;
 import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
 import org.apache.camel.util.jsse.SSLContextParameters;
 import org.asynchttpclient.AsyncHttpClient;
 import org.asynchttpclient.AsyncHttpClientConfig;
@@ -32,7 +33,9 @@ import 
org.springframework.boot.context.properties.NestedConfigurationProperty;
  */
 @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
 @ConfigurationProperties(prefix = "camel.component.ahc")
-public class AhcComponentConfiguration {
+public class AhcComponentConfiguration
+        extends
+            ComponentConfigurationPropertiesCommon {
 
     /**
      * To use a custom AsyncHttpClient

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
index d370983..7790e63 100644
--- 
a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java
@@ -17,49 +17,81 @@
 package org.apache.camel.component.ahc.ws.springboot;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.ahc.ws.WsComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
 import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
 
 /**
  * Generated by camel-package-maven-plugin - do not edit this file!
  */
 @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
 @Configuration
-@ConditionalOnBean(type = 
"org.apache.camel.spring.boot.CamelAutoConfiguration")
 @Conditional(WsComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = 
"org.apache.camel.spring.boot.CamelAutoConfiguration")
-@EnableConfigurationProperties(WsComponentConfiguration.class)
-public class WsComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+        WsComponentConfiguration.class})
+public class WsComponentAutoConfiguration extends AllNestedConditions {
+
+    private static final Logger LOGGER = LoggerFactory
+            .getLogger(WsComponentAutoConfiguration.class);
+    @Autowired
+    private CamelContext camelContext;
+    @Autowired(required = false)
+    private List<ComponentCustomizer<WsComponent>> customizers;
+    @Autowired
+    private ComponentConfigurationProperties globalConfiguration;
+    @Autowired
+    private WsComponentConfiguration componentConfiguration;
+
+    public WsComponentAutoConfiguration() {
+        super(ConfigurationPhase.REGISTER_BEAN);
+    }
+
+    @ConditionalOnBean(CamelContext.class)
+    public static class OnCamelContext {
+    }
+
+    @ConditionalOnBean(CamelAutoConfiguration.class)
+    public static class OnCamelAutoConfiguration {
+    }
+
+    public static class Condition extends GroupCondition {
+        public Condition() {
+            super("camel.component", "camel.component.ahc-ws");
+        }
+    }
 
     @Lazy
     @Bean(name = {"ahc-ws-component", "ahc-wss-component"})
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(WsComponent.class)
-    public WsComponent configureWsComponent(CamelContext camelContext,
-            WsComponentConfiguration configuration) throws Exception {
+    public WsComponent configureWsComponent() throws Exception {
         WsComponent component = new WsComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(configuration, parameters, null,
-                false);
+        IntrospectionSupport.getProperties(componentConfiguration, parameters,
+                null, false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -82,32 +114,16 @@ public class WsComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        return component;
-    }
-
-    
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-    public static class Condition extends SpringBootCondition {
-        @Override
-        public ConditionOutcome getMatchOutcome(
-                ConditionContext conditionContext,
-                AnnotatedTypeMetadata annotatedTypeMetadata) {
-            boolean groupEnabled = isEnabled(conditionContext,
-                    "camel.component.", true);
-            ConditionMessage.Builder message = ConditionMessage
-                    .forCondition("camel.component.ahc-ws");
-            if (isEnabled(conditionContext, "camel.component.ahc-ws.",
-                    groupEnabled)) {
-                return ConditionOutcome.match(message.because("enabled"));
+        boolean useConfigurers = globalConfiguration.getConfigurer()
+                .isEnabled()
+                && componentConfiguration.getConfigurer().isEnabled();
+        if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+            for (ComponentCustomizer<WsComponent> configurer : customizers) {
+                LOGGER.debug("Configure component {}, with configurer {}",
+                        component, configurer);
+                configurer.customize(component);
             }
-            return ConditionOutcome.noMatch(message.because("not enabled"));
-        }
-
-        private boolean isEnabled(
-                org.springframework.context.annotation.ConditionContext 
context,
-                java.lang.String prefix, boolean defaultValue) {
-            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
-                    context.getEnvironment(), prefix);
-            return resolver.getProperty("enabled", Boolean.class, 
defaultValue);
         }
+        return component;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentConfiguration.java
index 25dea26..04bc81f 100644
--- 
a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentConfiguration.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.ahc.ws.springboot;
 import javax.annotation.Generated;
 import org.apache.camel.component.ahc.AhcBinding;
 import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
 import org.apache.camel.util.jsse.SSLContextParameters;
 import org.asynchttpclient.AsyncHttpClient;
 import org.asynchttpclient.AsyncHttpClientConfig;
@@ -32,7 +33,9 @@ import 
org.springframework.boot.context.properties.NestedConfigurationProperty;
  */
 @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
 @ConfigurationProperties(prefix = "camel.component.ahc-ws")
-public class WsComponentConfiguration {
+public class WsComponentConfiguration
+        extends
+            ComponentConfigurationPropertiesCommon {
 
     /**
      * To use a custom AsyncHttpClient

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
index 1805ce2..3054735 100644
--- 
a/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java
@@ -17,49 +17,81 @@
 package org.apache.camel.component.amqp.springboot;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import javax.annotation.Generated;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.amqp.AMQPComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
 import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import 
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
 import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
 
 /**
  * Generated by camel-package-maven-plugin - do not edit this file!
  */
 @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
 @Configuration
-@ConditionalOnBean(type = 
"org.apache.camel.spring.boot.CamelAutoConfiguration")
 @Conditional(AMQPComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = 
"org.apache.camel.spring.boot.CamelAutoConfiguration")
-@EnableConfigurationProperties(AMQPComponentConfiguration.class)
-public class AMQPComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+        AMQPComponentConfiguration.class})
+public class AMQPComponentAutoConfiguration extends AllNestedConditions {
+
+    private static final Logger LOGGER = LoggerFactory
+            .getLogger(AMQPComponentAutoConfiguration.class);
+    @Autowired
+    private CamelContext camelContext;
+    @Autowired(required = false)
+    private List<ComponentCustomizer<AMQPComponent>> customizers;
+    @Autowired
+    private ComponentConfigurationProperties globalConfiguration;
+    @Autowired
+    private AMQPComponentConfiguration componentConfiguration;
+
+    public AMQPComponentAutoConfiguration() {
+        super(ConfigurationPhase.REGISTER_BEAN);
+    }
+
+    @ConditionalOnBean(CamelContext.class)
+    public static class OnCamelContext {
+    }
+
+    @ConditionalOnBean(CamelAutoConfiguration.class)
+    public static class OnCamelAutoConfiguration {
+    }
+
+    public static class Condition extends GroupCondition {
+        public Condition() {
+            super("camel.component", "camel.component.amqp");
+        }
+    }
 
     @Lazy
     @Bean(name = "amqp-component")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(AMQPComponent.class)
-    public AMQPComponent configureAMQPComponent(CamelContext camelContext,
-            AMQPComponentConfiguration configuration) throws Exception {
+    public AMQPComponent configureAMQPComponent() throws Exception {
         AMQPComponent component = new AMQPComponent();
         component.setCamelContext(camelContext);
         Map<String, Object> parameters = new HashMap<>();
-        IntrospectionSupport.getProperties(configuration, parameters, null,
-                false);
+        IntrospectionSupport.getProperties(componentConfiguration, parameters,
+                null, false);
         for (Map.Entry<String, Object> entry : parameters.entrySet()) {
             Object value = entry.getValue();
             Class<?> paramClass = value.getClass();
@@ -82,32 +114,16 @@ public class AMQPComponentAutoConfiguration {
         }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
-        return component;
-    }
-
-    
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
-    public static class Condition extends SpringBootCondition {
-        @Override
-        public ConditionOutcome getMatchOutcome(
-                ConditionContext conditionContext,
-                AnnotatedTypeMetadata annotatedTypeMetadata) {
-            boolean groupEnabled = isEnabled(conditionContext,
-                    "camel.component.", true);
-            ConditionMessage.Builder message = ConditionMessage
-                    .forCondition("camel.component.amqp");
-            if (isEnabled(conditionContext, "camel.component.amqp.",
-                    groupEnabled)) {
-                return ConditionOutcome.match(message.because("enabled"));
+        boolean useConfigurers = globalConfiguration.getConfigurer()
+                .isEnabled()
+                && componentConfiguration.getConfigurer().isEnabled();
+        if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+            for (ComponentCustomizer<AMQPComponent> configurer : customizers) {
+                LOGGER.debug("Configure component {}, with configurer {}",
+                        component, configurer);
+                configurer.customize(component);
             }
-            return ConditionOutcome.noMatch(message.because("not enabled"));
-        }
-
-        private boolean isEnabled(
-                org.springframework.context.annotation.ConditionContext 
context,
-                java.lang.String prefix, boolean defaultValue) {
-            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
-                    context.getEnvironment(), prefix);
-            return resolver.getProperty("enabled", Boolean.class, 
defaultValue);
         }
+        return component;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentConfiguration.java
index ff88503..ebe4f8f 100644
--- 
a/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentConfiguration.java
@@ -28,6 +28,7 @@ import org.apache.camel.component.jms.MessageCreatedStrategy;
 import org.apache.camel.component.jms.QueueBrowseStrategy;
 import org.apache.camel.component.jms.ReplyToType;
 import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import 
org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
 import org.springframework.boot.context.properties.NestedConfigurationProperty;
@@ -45,7 +46,9 @@ import org.springframework.util.ErrorHandler;
  */
 @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
 @ConfigurationProperties(prefix = "camel.component.amqp")
-public class AMQPComponentConfiguration {
+public class AMQPComponentConfiguration
+        extends
+            ComponentConfigurationPropertiesCommon {
 
     /**
      * To use a shared JMS configuration

Reply via email to