You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/08/23 10:46:30 UTC

[camel] 01/05: CAMEL-13870: Fast property configuration of Camel endpoints.

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit bb22bc6e5d9cba48c9cbef107e7566d441e06252
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Aug 23 10:06:40 2019 +0200

    CAMEL-13870: Fast property configuration of Camel endpoints.
---
 .../src/main/docs/activemq-component.adoc          |   2 +-
 .../camel/component/activemq/ActiveMQEndpoint.java |   4 +-
 .../camel-amqp/src/main/docs/amqp-component.adoc   |   2 +-
 .../apache/camel/component/amqp/AMQPEndpoint.java  |   1 -
 .../camel-apns/src/main/docs/apns-component.adoc   |   2 +-
 .../apache/camel/component/as2/AS2Endpoint.java    |   4 -
 .../camel/component/atmos/AtmosEndpoint.java       |   1 +
 .../camel/component/atmos/AtmosComponentTest.java  |  92 ----
 .../camel-atom/src/main/docs/atom-component.adoc   |   2 +-
 .../src/main/docs/atomix-map-component.adoc        |   2 +-
 .../src/main/docs/atomix-messaging-component.adoc  |   2 +-
 .../src/main/docs/atomix-multimap-component.adoc   |   2 +-
 .../src/main/docs/atomix-queue-component.adoc      |   2 +-
 .../src/main/docs/atomix-set-component.adoc        |   2 +-
 .../src/main/docs/atomix-value-component.adoc      |   2 +-
 .../component/atomix/AtomixConfiguration.java      |  23 +-
 .../client/AbstractAtomixClientComponent.java      |   2 +-
 .../atomix/client/AtomixClientHelper.java          |  11 +-
 .../atomix/client/map/AtomixMapConsumer.java       |   2 +-
 .../atomix/client/map/AtomixMapEndpoint.java       |   2 +-
 .../atomix/client/map/AtomixMapProducer.java       |   2 +-
 .../client/messaging/AtomixMessagingConsumer.java  |   2 +-
 .../client/messaging/AtomixMessagingEndpoint.java  |   2 +-
 .../client/messaging/AtomixMessagingProducer.java  |   2 +-
 .../client/multimap/AtomixMultiMapEndpoint.java    |   2 +-
 .../client/multimap/AtomixMultiMapProducer.java    |   2 +-
 .../atomix/client/queue/AtomixQueueConsumer.java   |   2 +-
 .../atomix/client/queue/AtomixQueueEndpoint.java   |   2 +-
 .../atomix/client/queue/AtomixQueueProducer.java   |   2 +-
 .../atomix/client/set/AtomixSetConsumer.java       |   2 +-
 .../atomix/client/set/AtomixSetEndpoint.java       |   2 +-
 .../atomix/client/set/AtomixSetProducer.java       |   2 +-
 .../atomix/client/value/AtomixValueConsumer.java   |   2 +-
 .../atomix/client/value/AtomixValueEndpoint.java   |   2 +-
 .../atomix/client/value/AtomixValueProducer.java   |   2 +-
 .../atomix/cluster/AtomixClusterClientService.java |  11 +-
 .../atomix/cluster/AtomixClusterHelper.java        |  11 +-
 .../atomix/cluster/AtomixClusterService.java       |  12 +-
 .../src/main/docs/aws-ddbstream-component.adoc     |   2 +-
 .../src/main/docs/aws-kinesis-component.adoc       |   2 +-
 .../src/main/docs/aws-s3-component.adoc            |   2 +-
 .../src/main/docs/aws-sqs-component.adoc           |   6 +-
 .../camel/component/aws/sqs/SqsConfiguration.java  |   8 +
 .../src/main/docs/beanstalk-component.adoc         |   2 +-
 .../src/main/docs/caffeine-cache-component.adoc    |   8 +-
 .../main/docs/caffeine-loadcache-component.adoc    |   8 +-
 .../component/caffeine/CaffeineConfiguration.java  |  16 +-
 .../caffeine/cache/CaffeineCacheProducer.java      |  24 +-
 .../caffeine/load/CaffeineLoadCacheProducer.java   |  24 +-
 .../src/main/docs/cql-component.adoc               |   4 +-
 .../component/cassandra/CassandraEndpoint.java     |   2 +-
 .../src/main/docs/chatscript-component.adoc        |   4 +-
 .../component/chatscript/ChatScriptEndpoint.java   |  21 +-
 .../camel/component/cmis/CMISSessionFacade.java    |  28 ++
 components/camel-couchbase/pom.xml                 |  19 +-
 .../src/main/docs/couchbase-component.adoc         |   2 +-
 .../couchbase/CouchbaseComponentTest.java          |  41 +-
 .../component/couchdb/CouchDbComponentTest.java    |  29 +-
 .../src/main/docs/crypto-cms-component.adoc        |   6 +-
 .../component/crypto/cms/CryptoCmsEndpoint.java    |  16 +
 .../common/CryptoCmsUnMarshallerConfiguration.java |   5 +-
 .../crypto/cms/common/CryptoCmsUnmarshaller.java   |   2 +-
 .../cms/common/DefaultCryptoCmsConfiguration.java  |  11 +-
 .../DefaultCryptoCmsUnMarshallerConfiguration.java |   9 +-
 ...DefaultEnvelopedDataDecryptorConfiguration.java |  17 +-
 .../DefaultSignedDataVerifierConfiguration.java    |  14 +-
 .../crypto/cms/sig/SignedDataVerifier.java         |   4 +-
 .../cms/sig/SignedDataVerifierConfiguration.java   |   4 +-
 .../cms/sig/SignedDataVerifierFromHeader.java      |   4 +-
 .../src/main/docs/crypto-component.adoc            |   2 +-
 .../src/main/docs/crypto-dataformat.adoc           |   2 +-
 .../crypto/DigitalSignatureConfiguration.java      |  57 ++-
 .../component/crypto/DigitalSignatureEndpoint.java |   6 +-
 .../crypto/processor/SigningProcessor.java         |   2 +-
 .../camel-cxf/src/main/docs/cxf-component.adoc     |   2 +-
 .../camel-cxf/src/main/docs/cxfrs-component.adoc   |   4 +-
 ...ntConfigurer.java => ChainedCxfConfigurer.java} |  20 +-
 ...fEndpointConfigurer.java => CxfConfigurer.java} |   7 +-
 .../apache/camel/component/cxf/CxfConsumer.java    |   6 +-
 .../apache/camel/component/cxf/CxfEndpoint.java    | 140 +++---
 .../camel/component/cxf/CxfEndpointUtils.java      |  22 +-
 .../apache/camel/component/cxf/CxfProducer.java    |   4 +-
 .../camel/component/cxf/CxfSpringEndpoint.java     |  32 +-
 ...rer.java => HostnameVerifierCxfConfigurer.java} |  10 +-
 ...dpointConfigurer.java => SslCxfConfigurer.java} |  12 +-
 ...Configurer.java => ChainedCxfRsConfigurer.java} |  20 +-
 ...ndpointConfigurer.java => CxfRsConfigurer.java} |   7 +-
 .../camel/component/cxf/jaxrs/CxfRsEndpoint.java   |  60 +--
 ...r.java => HostnameVerifierCxfRsConfigurer.java} |  10 +-
 ...ointConfigurer.java => SslCxfRsConfigurer.java} |  12 +-
 .../spring/CxfEndpointBeanDefinitionParser.java    |   4 +-
 .../camel/component/cxf/CxfEndpointTest.java       |   4 +-
 .../cxf/CxfJavaOnlyCamelContextAwareTest.java      |   4 +-
 .../apache/camel/component/cxf/CxfTimeoutTest.java |   5 +-
 .../component/cxf/jaxrs/CxfRsConsumerTest.java     |   4 +-
 .../jaxrs/CxfRsProducerEndpointConfigurerTest.java |   4 +-
 .../component/cxf/spring/CxfEndpointBeanTest.java  |   4 +-
 .../cxf/spring/CxfEndpointBeansRouterTest.java     |   4 +-
 .../component/cxf/util/CxfEndpointUtilsTest.java   |   2 +-
 .../cxf/util/CxfEndpointUtilsWithSpringTest.java   |   2 +-
 .../component/cxf/cxfConduitTimeOutContext.xml     |   2 +-
 .../component/disruptor/DisruptorComponent.java    |  27 +-
 .../component/disruptor/DisruptorEndpoint.java     |  28 +-
 .../component/docker/DockerConfiguration.java      |   4 +-
 .../camel/component/dropbox/DropboxEndpoint.java   |   4 +
 .../src/main/docs/ehcache-component.adoc           |   8 +-
 .../component/ehcache/EhcacheConfiguration.java    |  16 +-
 .../camel/component/ehcache/EhcacheConsumer.java   |  11 +-
 .../camel/component/ehcache/EhcacheProducer.java   |  35 +-
 .../ehcache/EhcacheComponentConfigurationTest.java |   4 +-
 .../elasticsearch/ElasticsearchComponent.java      |   2 +-
 .../elasticsearch/ElasticsearchConfiguration.java  |  10 +-
 .../elasticsearch/ElasticsearchEndpoint.java       |   4 +
 .../elasticsearch/ElasticsearchProducer.java       |   8 +-
 .../camel-elsql/src/main/docs/elsql-component.adoc |   2 +-
 .../camel-etcd/src/main/docs/etcd-component.adoc   |   2 +-
 .../config/FacebookEndpointConfiguration.java      |   4 +-
 .../camel-file/src/main/docs/file-component.adoc   |   2 +-
 .../apache/camel/component/file/FileEndpoint.java  |   4 +-
 .../camel/component/file/GenericFileEndpoint.java  |   8 +
 .../src/main/docs/flatpack-component.adoc          |   2 +-
 .../camel-ftp/src/main/docs/ftp-component.adoc     |   2 +-
 .../camel-ftp/src/main/docs/ftps-component.adoc    |   4 +-
 .../camel-ftp/src/main/docs/sftp-component.adoc    |   2 +-
 .../camel/component/file/remote/FtpEndpoint.java   |   8 +
 .../component/file/remote/FtpsConfiguration.java   |  10 +-
 .../camel/component/file/remote/FtpsEndpoint.java  |  16 +
 ...LWithClientAuthAndSSLContextParametersTest.java |   2 +-
 .../FileToFtpsExplicitSSLWithClientAuthTest.java   |   2 +-
 ...lientAuthAndGlobalSSLContextParametersTest.java |   2 +-
 ...thoutClientAuthAndSSLContextParametersTest.java |   2 +-
 ...FileToFtpsExplicitSSLWithoutClientAuthTest.java |   2 +-
 ...SWithClientAuthAndSSLContextParametersTest.java |   2 +-
 .../FileToFtpsExplicitTLSWithClientAuthTest.java   |   2 +-
 ...thoutClientAuthAndSSLContextParametersTest.java |   2 +-
 ...FileToFtpsExplicitTLSWithoutClientAuthTest.java |   2 +-
 ...LWithClientAuthAndSSLContextParametersTest.java |   2 +-
 .../FileToFtpsImplicitSSLWithClientAuthTest.java   |   2 +-
 ...thoutClientAuthAndSSLContextParametersTest.java |   2 +-
 ...FileToFtpsImplicitSSLWithoutClientAuthTest.java |   2 +-
 ...SWithClientAuthAndSSLContextParametersTest.java |   2 +-
 .../FileToFtpsImplicitTLSWithClientAuthTest.java   |   2 +-
 ...thoutClientAuthAndSSLContextParametersTest.java |   2 +-
 ...FileToFtpsImplicitTLSWithoutClientAuthTest.java |   2 +-
 ...psWithCustomKeyAndTrustStorePropertiesTest.java |   2 +-
 ...leToFtpsWithCustomTrustStorePropertiesTest.java |   2 +-
 .../file/remote/UriConfigurationTest.java          |   4 +-
 .../camel/component/geocoder/GeoCoderEndpoint.java |   7 +-
 .../docs/google-calendar-stream-component.adoc     |   2 +-
 .../main/docs/google-mail-stream-component.adoc    |   2 +-
 .../main/docs/google-sheets-stream-component.adoc  |   2 +-
 .../google/sheets/GoogleSheetsEndpoint.java        |   8 +-
 .../apache/camel/component/grpc/GrpcEndpoint.java  |   4 +
 .../main/docs/hazelcast-atomicvalue-component.adoc |   8 +-
 .../main/docs/hazelcast-instance-component.adoc    |  11 +-
 .../src/main/docs/hazelcast-list-component.adoc    |  11 +-
 .../src/main/docs/hazelcast-map-component.adoc     |  11 +-
 .../main/docs/hazelcast-multimap-component.adoc    |  11 +-
 .../src/main/docs/hazelcast-queue-component.adoc   |   8 +-
 .../docs/hazelcast-replicatedmap-component.adoc    |  11 +-
 .../main/docs/hazelcast-ringbuffer-component.adoc  |   8 +-
 .../src/main/docs/hazelcast-seda-component.adoc    |   6 +-
 .../src/main/docs/hazelcast-set-component.adoc     |  11 +-
 .../src/main/docs/hazelcast-topic-component.adoc   |  10 +-
 .../hazelcast/HazelcastDefaultEndpoint.java        |   6 -
 .../hazelcast/queue/HazelcastQueueEndpoint.java    |   8 +-
 .../hazelcast/seda/HazelcastSedaEndpoint.java      |   3 +
 .../hazelcast/topic/HazelcastTopicEndpoint.java    |   6 +
 .../camel-hdfs/src/main/docs/hdfs-component.adoc   |   2 +-
 .../src/main/docs/hipchat-component.adoc           |   2 +-
 .../src/main/docs/iec60870-client-component.adoc   |   2 +-
 .../src/main/docs/iec60870-server-component.adoc   |   2 +-
 .../component/iec60870/AbstractIecEndpoint.java    |  20 +
 .../camel/component/iec60870/BaseOptions.java      |   2 +-
 .../component/iec60870/client/ClientOptions.java   |  17 +-
 .../src/main/docs/ignite-events-component.adoc     |   2 +-
 .../ignite/events/IgniteEventsConsumer.java        |  12 +-
 .../ignite/events/IgniteEventsEndpoint.java        |  66 ++-
 .../camel/component/ignite/IgniteEventsTest.java   |  29 --
 .../apache/camel/component/ipfs/IPFSEndpoint.java  |   3 +-
 .../src/main/docs/ironmq-component.adoc            |   2 +-
 .../camel/component/jcache/JCacheEndpoint.java     |  12 +-
 .../camel/component/jetty/JettyHttpComponent.java  |   2 +-
 .../camel/component/jetty/JettyHttpEndpoint.java   |   9 +-
 .../camel-jetty/src/main/docs/jetty-component.adoc |   4 +-
 .../camel/component/jetty/CustomFiltersTest.java   |   2 +-
 .../apache/camel/component/jira/JiraEndpoint.java  |   4 +
 .../camel-jms/src/main/docs/jms-component.adoc     |   2 +-
 .../camel/component/jms/JmsConfiguration.java      |   6 +-
 .../apache/camel/component/jmx/JMXConsumer.java    |   4 +-
 .../apache/camel/component/jmx/JMXEndpoint.java    |   4 +-
 .../camel-jooq/src/main/docs/jooq-component.adoc   |   2 +-
 .../camel-jpa/src/main/docs/jpa-component.adoc     |   2 +-
 .../apache/camel/component/jpa/JpaEndpoint.java    |   4 +-
 .../camel-jt400/src/main/docs/jt400-component.adoc |   2 +-
 .../camel/component/jt400/Jt400Endpoint.java       |   4 +
 .../camel/component/kafka/KafkaConfiguration.java  |   8 +-
 .../camel/component/kafka/KafkaConsumer.java       |   2 +-
 .../camel/component/kafka/KafkaComponentTest.java  |  45 +-
 .../kubernetes/AbstractKubernetesEndpoint.java     |   4 +
 .../camel/component/language/LanguageEndpoint.java |   5 +
 .../camel/component/language/LanguageProducer.java |   4 +
 .../camel-log/src/main/docs/log-component.adoc     |   3 +-
 .../apache/camel/component/log/LogComponent.java   |  30 +-
 .../apache/camel/component/log/LogEndpoint.java    | 215 +++++++-
 .../src/main/docs/lucene-component.adoc            |   4 +-
 .../component/lucene/LuceneConfiguration.java      |  28 +-
 .../camel/component/lucene/LuceneEndpoint.java     |   2 +-
 .../component/lucene/LuceneQueryProducer.java      |   2 +-
 .../camel-mail/src/main/docs/mail-component.adoc   |   4 +-
 .../apache/camel/component/mail/MailEndpoint.java  |   2 +-
 .../camel/component/mail/MailComponentTest.java    |   2 +-
 .../component/metrics/MetricsComponentTest.java    |   8 +-
 .../src/main/docs/milo-client-component.adoc       |   6 +-
 .../milo/client/MiloClientConfiguration.java       |   8 +-
 .../milo/client/MiloClientConnection.java          |   4 +
 .../component/milo/client/MiloClientEndpoint.java  |  47 +-
 .../apache/camel/component/mllp/MllpEndpoint.java  |   2 +-
 .../apache/camel/component/mock/MockEndpoint.java  |  18 +-
 .../src/main/docs/mongodb-gridfs-component.adoc    |   3 +-
 .../component/mongodb/gridfs/GridFsConverter.java} |  22 +-
 .../component/mongodb/gridfs/GridFsEndpoint.java   | 136 ++---
 .../src/main/docs/mongodb-component.adoc           |   2 +-
 .../camel/component/mongodb/MongoDbEndpoint.java   |  13 +-
 .../camel-mqtt/src/main/docs/mqtt-component.adoc   |   2 +-
 .../camel/component/mqtt/MQTTConfiguration.java    |   9 +-
 .../src/main/docs/mybatis-component.adoc           |   2 +-
 .../camel/component/nats/NatsConfiguration.java    |  20 +-
 .../apache/camel/component/nats/NatsConsumer.java  |  26 +-
 .../apache/camel/component/nats/NatsEndpoint.java  |  12 +-
 .../apache/camel/component/nats/NatsProducer.java  |  12 +-
 .../src/main/docs/netty-http-component.adoc        |   9 +-
 .../camel-netty/src/main/docs/netty-component.adoc |  13 +-
 .../camel/component/netty/NettyConfiguration.java  |  10 +-
 .../camel/component/netty/NettyEndpoint.java       |   3 -
 components/camel-nsq/pom.xml                       |  16 +
 .../apache/camel/component/nsq/NsqConsumer.java    |   2 +-
 .../apache/camel/component/nsq/NsqEndpoint.java    |   6 +-
 .../apache/camel/component/nsq/NsqProducer.java    |   4 +-
 .../component/olingo2/Olingo2Configuration.java    |   2 +-
 .../camel/component/olingo2/Olingo2Endpoint.java   |   2 +-
 .../component/olingo4/Olingo4Configuration.java    |   2 +-
 .../camel/component/olingo4/Olingo4Endpoint.java   |   2 +-
 .../component/optaplanner/OptaPlannerEndpoint.java |  20 +-
 .../main/docs/pg-replication-slot-component.adoc   |   2 +-
 .../src/main/docs/pubnub-component.adoc            |   2 +-
 .../component/pubnub/PubNubConfiguration.java      |   4 +-
 .../camel/component/pubnub/PubNubConsumer.java     |   2 +-
 .../src/main/docs/pulsar-component.adoc            |   2 +-
 .../pulsar/configuration/PulsarConfiguration.java  |  18 +-
 .../src/main/docs/rabbitmq-component.adoc          |   2 +-
 .../component/rabbitmq/RabbitMQComponent.java      |  16 +-
 .../camel/component/rabbitmq/RabbitMQEndpoint.java |  26 +-
 .../component/rabbitmq/RabbitMQComponentTest.java  |  20 +-
 .../component/rabbitmq/RabbitMQEndpointTest.java   |   6 +-
 .../rest/swagger/RestSwaggerEndpoint.java          |  12 +-
 .../src/main/docs/restlet-component.adoc           |   2 +-
 .../camel/component/restlet/RestletComponent.java  |   6 +-
 .../camel/component/restlet/RestletEndpoint.java   |  11 +-
 .../camel-rss/src/main/docs/rss-component.adoc     |   2 +-
 .../component/salesforce/SalesforceConsumer.java   |   2 +-
 .../component/salesforce/SalesforceEndpoint.java   |  41 +-
 .../salesforce/SalesforceEndpointConfig.java       |   2 +-
 .../processor/AbstractSalesforceProcessor.java     |   2 +-
 .../src/main/docs/xquery-component.adoc            |   2 +-
 .../src/main/docs/scheduler-component.adoc         |   2 +-
 .../src/main/docs/servicenow-component.adoc        |   6 +-
 .../servicenow/ServiceNowConfiguration.java        |  14 +-
 .../apache/camel/component/sjms/SjmsEndpoint.java  |   9 +-
 .../sjms/SjmsEndpointConnectionSettingsTest.java   |   4 +-
 .../sjms/batch/SjmsBatchEndpointTest.java          |   2 +-
 .../camel-slack/src/main/docs/slack-component.adoc |   2 +-
 .../camel/component/smpp/SmppConfiguration.java    |   2 +-
 .../component/smpp/SmppConnectionFactory.java      |   4 +-
 .../apache/camel/component/smpp/SmppEndpoint.java  |   2 +-
 .../component/smpp/SmppConfigurationTest.java      |   6 +-
 .../camel-snmp/src/main/docs/snmp-component.adoc   |   4 +-
 .../apache/camel/component/snmp/SnmpEndpoint.java  |   2 +-
 .../apache/camel/component/solr/SolrEndpoint.java  |  10 +-
 .../src/main/docs/splunk-component.adoc            |   4 +-
 .../component/splunk/SplunkConfiguration.java      |   4 +-
 .../spring/batch/SpringBatchEndpoint.java          |   2 +-
 .../src/main/docs/spring-boot.adoc                 |   4 +-
 .../spring/boot/CamelConfigurationProperties.java  |  14 +
 .../src/main/docs/spring-ws-component.adoc         |   6 +-
 .../spring/ws/SpringWebserviceComponent.java       |   4 +-
 .../spring/ws/SpringWebserviceConfiguration.java   |  84 +++-
 .../spring/ws/type/EndpointMappingKey.java         |  40 +-
 .../camel-sql/src/main/docs/sql-component.adoc     |   2 +-
 .../sql/stored/ProducerBatchInvalidTest.java       |   5 +-
 .../camel-ssh/src/main/docs/ssh-component.adoc     |   2 +-
 .../apache/camel/component/ssh/SshEndpoint.java    |   8 +-
 .../camel/component/stomp/StompEndpoint.java       |  12 +-
 .../src/main/docs/telegram-component.adoc          |   2 +-
 .../camel/component/thrift/ThriftEndpoint.java     |   4 +
 .../camel-tika/src/main/docs/tika-component.adoc   |   8 +-
 .../camel/component/tika/TikaConfiguration.java    |  32 +-
 .../camel/component/timer/TimerEndpoint.java       |  16 +-
 .../main/docs/twitter-directmessage-component.adoc |   2 +-
 .../src/main/docs/twitter-search-component.adoc    |   2 +-
 .../src/main/docs/twitter-timeline-component.adoc  |   2 +-
 .../twitter/timeline/TwitterTimelineEndpoint.java  |   8 +
 .../src/main/docs/weather-component.adoc           |   2 +-
 .../camel-web3j/src/main/docs/web3j-component.adoc |   6 +-
 .../camel/component/web3j/Web3jConfiguration.java  |  21 +
 .../camel/component/web3j/Web3jEndpoint.java       |   4 +
 components/camel-websocket-jsr356/pom.xml          |   2 +-
 .../src/main/docs/websocket-jsr356-component.adoc  |   3 +-
 .../camel/websocket/jsr356/JSR356Consumer.java     |   8 +-
 .../camel/websocket/jsr356/JSR356Endpoint.java     |   5 +-
 .../websocket/jsr356/JSR356WebSocketComponent.java |   6 +-
 .../src/main/docs/wordpress-component.adoc         |   5 +-
 .../wordpress/WordpressComponentConfiguration.java |  18 +-
 .../component/wordpress/WordpressEndpoint.java     |  26 +-
 .../consumer/AbstractWordpressConsumer.java        |   4 +-
 .../producer/AbstractWordpressProducer.java        |   2 +-
 .../wordpress/WordpressComponentTest.java          |  20 +-
 .../component/xchange/XChangeConfiguration.java    |   8 +
 .../xmlsecurity/XmlSignatureEndpoint.java          |   8 +
 .../src/main/docs/yammer-component.adoc            |   2 +-
 .../src/main/docs/zookeeper-component.adoc         |   6 +-
 .../zookeeper/ZooKeeperConfiguration.java          |  20 -
 .../component/zookeeper/ZooKeeperEndpoint.java     |  16 -
 .../component/zookeeper/ZooKeeperEndpointTest.java |  14 +-
 .../java/org/apache/camel/CamelContextAware.java   |   3 +-
 .../src/main/java/org/apache/camel/Component.java  |  11 +
 .../org/apache/camel/ExtendedCamelContext.java     |  11 +
 .../org/apache/camel/spi/BeanIntrospection.java    | 176 +++++++
 .../camel/spi/EndpointPropertyConfigurer.java      |  19 +-
 .../java/org/apache/camel/spi/FactoryFinder.java   |  10 +
 ...lderConfigurer.java => PropertyConfigurer.java} |  12 +-
 .../apache/camel/spi/PropertyConfigurerAware.java  |  19 +-
 .../camel/spi/PropertyPlaceholderConfigurer.java   |  25 +-
 .../camel/impl/engine/AbstractCamelContext.java    |  26 +-
 .../impl/engine/CamelPostProcessorHelper.java      |   5 +-
 .../impl/engine/DefaultBeanIntrospection.java      | 219 ++++++++
 .../camel/impl/engine/DefaultFactoryFinder.java    |  24 +-
 core/camel-core/pom.xml                            |  11 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |   7 +
 .../cloud/ServiceCallExpressionConfiguration.java  |   3 +-
 .../ServiceCallServiceChooserConfiguration.java    |   3 +-
 .../ServiceCallServiceDiscoveryConfiguration.java  |   3 +-
 .../ServiceCallServiceFilterConfiguration.java     |   3 +-
 ...erviceCallServiceLoadBalancerConfiguration.java |   3 +-
 .../camel/model/language/ExpressionDefinition.java |   4 +-
 .../reifier/dataformat/DataFormatReifier.java      |   6 +-
 .../camel/reifier/rest/RestBindingReifier.java     |  16 +-
 .../file/FileProducerChmodOptionTest.java          |   4 +-
 .../camel/impl/MultipleLifecycleStrategyTest.java  |   9 +-
 .../camel/processor/SimpleMockPlaceholderTest.java |   2 +-
 .../component/ApiMethodPropertiesHelperTest.java   |   4 +-
 .../endpoint/dsl/ApnsEndpointBuilderFactory.java   |  20 +-
 .../dsl/AtomixMapEndpointBuilderFactory.java       |  68 +--
 .../dsl/AtomixMessagingEndpointBuilderFactory.java |  70 +--
 .../dsl/AtomixMultiMapEndpointBuilderFactory.java  |  22 +-
 .../dsl/AtomixQueueEndpointBuilderFactory.java     |  68 +--
 .../dsl/AtomixSetEndpointBuilderFactory.java       |  68 +--
 .../dsl/AtomixValueEndpointBuilderFactory.java     |  68 +--
 .../dsl/BeanstalkEndpointBuilderFactory.java       |  20 +-
 .../dsl/CaffeineCacheEndpointBuilderFactory.java   |  96 +---
 .../CaffeineLoadCacheEndpointBuilderFactory.java   |  96 +---
 .../dsl/CassandraEndpointBuilderFactory.java       |  20 +-
 .../dsl/ChatScriptEndpointBuilderFactory.java      |  30 +-
 .../endpoint/dsl/ClientEndpointBuilderFactory.java |  19 +-
 .../dsl/CouchbaseEndpointBuilderFactory.java       |  20 +-
 .../dsl/CryptoCmsEndpointBuilderFactory.java       |  21 +-
 .../endpoint/dsl/CxfEndpointBuilderFactory.java    |  52 +-
 .../endpoint/dsl/CxfRsEndpointBuilderFactory.java  |  76 ++-
 .../DigitalSignatureEndpointBuilderFactory.java    |  14 +-
 .../dsl/EhcacheEndpointBuilderFactory.java         |  94 +---
 .../endpoint/dsl/ElsqlEndpointBuilderFactory.java  |  20 +-
 .../endpoint/dsl/EtcdEndpointBuilderFactory.java   |  20 +-
 .../endpoint/dsl/FileEndpointBuilderFactory.java   |  20 +-
 .../dsl/FlatpackEndpointBuilderFactory.java        |  20 +-
 .../endpoint/dsl/FtpEndpointBuilderFactory.java    |  20 +-
 .../endpoint/dsl/FtpsEndpointBuilderFactory.java   |  56 +--
 .../endpoint/dsl/GridFsEndpointBuilderFactory.java |  91 ----
 ...azelcastAtomicnumberEndpointBuilderFactory.java | 155 ------
 .../HazelcastInstanceEndpointBuilderFactory.java   | 160 ------
 .../dsl/HazelcastListEndpointBuilderFactory.java   | 541 --------------------
 .../dsl/HazelcastMapEndpointBuilderFactory.java    | 539 --------------------
 .../HazelcastMultimapEndpointBuilderFactory.java   | 549 --------------------
 .../dsl/HazelcastQueueEndpointBuilderFactory.java  | 462 -----------------
 ...zelcastReplicatedmapEndpointBuilderFactory.java | 555 ---------------------
 .../HazelcastRingbufferEndpointBuilderFactory.java | 152 ------
 .../dsl/HazelcastSedaEndpointBuilderFactory.java   | 147 ------
 .../dsl/HazelcastSetEndpointBuilderFactory.java    | 539 --------------------
 .../dsl/HazelcastTopicEndpointBuilderFactory.java  | 477 ------------------
 .../endpoint/dsl/HdfsEndpointBuilderFactory.java   |  20 +-
 .../dsl/HipchatEndpointBuilderFactory.java         |  20 +-
 .../endpoint/dsl/IronMQEndpointBuilderFactory.java |  20 +-
 .../dsl/JSR356WebSocketEndpointBuilderFactory.java |  33 --
 .../endpoint/dsl/JooqEndpointBuilderFactory.java   |  20 +-
 .../endpoint/dsl/JpaEndpointBuilderFactory.java    |  20 +-
 .../endpoint/dsl/Jt400EndpointBuilderFactory.java  |  20 +-
 .../dsl/KinesisEndpointBuilderFactory.java         |  20 +-
 .../endpoint/dsl/LogEndpointBuilderFactory.java    |  27 +
 .../endpoint/dsl/MQTTEndpointBuilderFactory.java   |  21 +-
 .../endpoint/dsl/MailEndpointBuilderFactory.java   |  20 +-
 .../dsl/MiloClientEndpointBuilderFactory.java      | 130 +----
 .../dsl/MongoDbEndpointBuilderFactory.java         |  18 +-
 .../dsl/MyBatisEndpointBuilderFactory.java         |  20 +-
 .../endpoint/dsl/NettyEndpointBuilderFactory.java  | 240 ---------
 .../dsl/NettyHttpEndpointBuilderFactory.java       | 240 ---------
 .../endpoint/dsl/PubNubEndpointBuilderFactory.java |   6 +-
 .../endpoint/dsl/PulsarEndpointBuilderFactory.java |  10 +-
 .../dsl/RabbitMQEndpointBuilderFactory.java        |  48 +-
 .../dsl/RestletEndpointBuilderFactory.java         |  20 +-
 .../endpoint/dsl/S3EndpointBuilderFactory.java     |  20 +-
 .../endpoint/dsl/ServerEndpointBuilderFactory.java |  19 +-
 .../endpoint/dsl/SftpEndpointBuilderFactory.java   |  20 +-
 .../endpoint/dsl/SlackEndpointBuilderFactory.java  |  20 +-
 .../endpoint/dsl/SplunkEndpointBuilderFactory.java |  27 +-
 .../SpringWebserviceEndpointBuilderFactory.java    |  17 +-
 .../endpoint/dsl/SqlEndpointBuilderFactory.java    |  20 +-
 .../endpoint/dsl/SqsEndpointBuilderFactory.java    |  20 +-
 .../endpoint/dsl/SshEndpointBuilderFactory.java    |  20 +-
 .../dsl/TelegramEndpointBuilderFactory.java        |  20 +-
 .../endpoint/dsl/TikaEndpointBuilderFactory.java   |  10 +-
 ...TwitterDirectMessageEndpointBuilderFactory.java |  20 +-
 .../dsl/TwitterSearchEndpointBuilderFactory.java   |  20 +-
 .../dsl/TwitterTimelineEndpointBuilderFactory.java |  20 +-
 .../dsl/WeatherEndpointBuilderFactory.java         |  20 +-
 .../dsl/WordpressEndpointBuilderFactory.java       |  21 +-
 .../endpoint/dsl/XQueryEndpointBuilderFactory.java |  20 +-
 .../endpoint/dsl/YammerEndpointBuilderFactory.java |  20 +-
 .../dsl/ZooKeeperEndpointBuilderFactory.java       |  76 ---
 .../builder/endpoint/FileConsumeCharsetTest.java   |   2 +-
 .../src/test/resources/log4j2.properties           |   2 +-
 .../camel/main/DefaultConfigurationConfigurer.java |   5 +
 .../camel/main/DefaultConfigurationProperties.java |  46 ++
 .../camel-main-configuration-metadata.json         |  12 +
 .../mbean/ManagedBeanIntrospectionMBean.java       |  26 +-
 .../management/JmxManagementLifecycleStrategy.java |   4 +
 .../management/mbean/ManagedBeanIntrospection.java |  60 +++
 .../management/ManagedBeanIntrospectionTest.java   |  85 ++++
 .../management/ManagedNonManagedServiceTest.java   |   2 +-
 ...edProducerRouteAddRemoveRegisterAlwaysTest.java |   2 +-
 .../management/ManagedRouteAddRemoveTest.java      |   2 +-
 .../DefaultComponentVerifierExtension.java         |   7 +-
 .../apache/camel/support/CamelContextHelper.java   |   4 +-
 .../org/apache/camel/support/DefaultComponent.java |  66 ++-
 .../org/apache/camel/support/DefaultEndpoint.java  |  24 +-
 .../org/apache/camel/support/EndpointHelper.java   |   3 +-
 .../apache/camel/support/IntrospectionSupport.java |  68 +--
 .../camel/support/PropertyBindingSupport.java      |  84 ++--
 .../camel/support/ScheduledPollConsumer.java       |   3 +-
 .../camel/support/ScheduledPollEndpoint.java       |  53 +-
 .../camel/support/builder/ExpressionBuilder.java   |   4 +-
 .../support/component/AbstractApiComponent.java    |   4 +-
 .../support/component/AbstractApiEndpoint.java     |   5 +-
 .../component/ApiMethodPropertiesHelper.java       |  14 +-
 .../EndpointPropertyConfigurerSupport.java         |  51 ++
 .../org/apache/camel/support/jndi/JndiContext.java |   1 +
 .../DefaultManagementMBeanAssembler.java           |   6 +-
 .../support/management/MBeanInfoAssembler.java     |  30 +-
 .../org/apache/camel/util/PropertiesHelper.java    |  86 ++++
 .../modules/ROOT/pages/activemq-component.adoc     |   2 +-
 .../modules/ROOT/pages/amqp-component.adoc         |   2 +-
 .../modules/ROOT/pages/apns-component.adoc         |   2 +-
 .../modules/ROOT/pages/atom-component.adoc         |   2 +-
 .../modules/ROOT/pages/atomix-map-component.adoc   |   2 +-
 .../ROOT/pages/atomix-messaging-component.adoc     |   2 +-
 .../ROOT/pages/atomix-multimap-component.adoc      |   2 +-
 .../modules/ROOT/pages/atomix-queue-component.adoc |   2 +-
 .../modules/ROOT/pages/atomix-set-component.adoc   |   2 +-
 .../modules/ROOT/pages/atomix-value-component.adoc |   2 +-
 .../ROOT/pages/aws-ddbstream-component.adoc        |   2 +-
 .../modules/ROOT/pages/aws-kinesis-component.adoc  |   2 +-
 .../modules/ROOT/pages/aws-s3-component.adoc       |   2 +-
 .../modules/ROOT/pages/aws-sqs-component.adoc      |   6 +-
 .../modules/ROOT/pages/beanstalk-component.adoc    |   2 +-
 .../ROOT/pages/caffeine-cache-component.adoc       |   8 +-
 .../ROOT/pages/caffeine-loadcache-component.adoc   |   8 +-
 .../modules/ROOT/pages/chatscript-component.adoc   |   4 +-
 .../modules/ROOT/pages/couchbase-component.adoc    |   2 +-
 .../modules/ROOT/pages/cql-component.adoc          |   4 +-
 .../modules/ROOT/pages/crypto-cms-component.adoc   |   6 +-
 .../modules/ROOT/pages/crypto-component.adoc       |   2 +-
 .../modules/ROOT/pages/crypto-dataformat.adoc      |   2 +-
 .../modules/ROOT/pages/cxf-component.adoc          |   2 +-
 .../modules/ROOT/pages/cxfrs-component.adoc        |   4 +-
 .../modules/ROOT/pages/ehcache-component.adoc      |   8 +-
 .../modules/ROOT/pages/elsql-component.adoc        |   2 +-
 .../modules/ROOT/pages/etcd-component.adoc         |   2 +-
 .../modules/ROOT/pages/file-component.adoc         |   2 +-
 .../modules/ROOT/pages/flatpack-component.adoc     |   2 +-
 .../modules/ROOT/pages/ftp-component.adoc          |   2 +-
 .../modules/ROOT/pages/ftps-component.adoc         |   4 +-
 .../pages/google-calendar-stream-component.adoc    |   2 +-
 .../ROOT/pages/google-mail-stream-component.adoc   |   2 +-
 .../ROOT/pages/google-sheets-stream-component.adoc |   2 +-
 .../pages/hazelcast-atomicvalue-component.adoc     |   8 +-
 .../ROOT/pages/hazelcast-instance-component.adoc   |  11 +-
 .../ROOT/pages/hazelcast-list-component.adoc       |  11 +-
 .../ROOT/pages/hazelcast-map-component.adoc        |  11 +-
 .../ROOT/pages/hazelcast-multimap-component.adoc   |  11 +-
 .../ROOT/pages/hazelcast-queue-component.adoc      |   8 +-
 .../pages/hazelcast-replicatedmap-component.adoc   |  11 +-
 .../ROOT/pages/hazelcast-ringbuffer-component.adoc |   8 +-
 .../ROOT/pages/hazelcast-seda-component.adoc       |   6 +-
 .../ROOT/pages/hazelcast-set-component.adoc        |  11 +-
 .../ROOT/pages/hazelcast-topic-component.adoc      |  10 +-
 .../modules/ROOT/pages/hdfs-component.adoc         |   2 +-
 .../modules/ROOT/pages/hipchat-component.adoc      |   2 +-
 .../ROOT/pages/iec60870-client-component.adoc      |   2 +-
 .../ROOT/pages/iec60870-server-component.adoc      |   2 +-
 .../ROOT/pages/ignite-events-component.adoc        |   2 +-
 .../modules/ROOT/pages/ironmq-component.adoc       |   2 +-
 .../modules/ROOT/pages/jetty-component.adoc        |   4 +-
 .../modules/ROOT/pages/jms-component.adoc          |   2 +-
 .../modules/ROOT/pages/jooq-component.adoc         |   2 +-
 .../modules/ROOT/pages/jpa-component.adoc          |   2 +-
 .../modules/ROOT/pages/jt400-component.adoc        |   2 +-
 .../modules/ROOT/pages/log-component.adoc          |   3 +-
 .../modules/ROOT/pages/lucene-component.adoc       |   4 +-
 .../modules/ROOT/pages/mail-component.adoc         |   4 +-
 .../modules/ROOT/pages/milo-client-component.adoc  |   6 +-
 .../modules/ROOT/pages/mongodb-component.adoc      |   2 +-
 .../ROOT/pages/mongodb-gridfs-component.adoc       |   3 +-
 .../modules/ROOT/pages/mqtt-component.adoc         |   2 +-
 .../modules/ROOT/pages/mybatis-component.adoc      |   2 +-
 .../modules/ROOT/pages/netty-component.adoc        |  13 +-
 .../modules/ROOT/pages/netty-http-component.adoc   |   9 +-
 .../ROOT/pages/pg-replication-slot-component.adoc  |   2 +-
 .../modules/ROOT/pages/pubnub-component.adoc       |   2 +-
 .../modules/ROOT/pages/pulsar-component.adoc       |   2 +-
 .../modules/ROOT/pages/rabbitmq-component.adoc     |   2 +-
 .../modules/ROOT/pages/restlet-component.adoc      |   2 +-
 .../modules/ROOT/pages/rss-component.adoc          |   2 +-
 .../modules/ROOT/pages/scheduler-component.adoc    |   2 +-
 .../modules/ROOT/pages/servicenow-component.adoc   |   6 +-
 .../modules/ROOT/pages/sftp-component.adoc         |   2 +-
 .../modules/ROOT/pages/slack-component.adoc        |   2 +-
 .../modules/ROOT/pages/snmp-component.adoc         |   4 +-
 .../modules/ROOT/pages/splunk-component.adoc       |   4 +-
 .../components/modules/ROOT/pages/spring-boot.adoc |   4 +-
 .../modules/ROOT/pages/spring-ws-component.adoc    |  10 +-
 .../modules/ROOT/pages/sql-component.adoc          |   2 +-
 .../modules/ROOT/pages/ssh-component.adoc          |   2 +-
 .../modules/ROOT/pages/telegram-component.adoc     |   2 +-
 .../modules/ROOT/pages/tika-component.adoc         |   8 +-
 .../pages/twitter-directmessage-component.adoc     |   2 +-
 .../ROOT/pages/twitter-search-component.adoc       |   2 +-
 .../ROOT/pages/twitter-timeline-component.adoc     |   2 +-
 .../modules/ROOT/pages/weather-component.adoc      |   2 +-
 .../modules/ROOT/pages/web3j-component.adoc        |   6 +-
 .../ROOT/pages/websocket-jsr356-component.adoc     |   3 +-
 .../modules/ROOT/pages/wordpress-component.adoc    |   5 +-
 .../modules/ROOT/pages/xquery-component.adoc       |   2 +-
 .../modules/ROOT/pages/yammer-component.adoc       |   2 +-
 .../modules/ROOT/pages/zookeeper-component.adoc    |   6 +-
 .../src/main/resources/application.properties      |   4 +
 examples/camel-example-management/pom.xml          |   5 +
 .../sqs/springboot/SqsComponentConfiguration.java  |  15 +-
 .../CaffeineCacheComponentConfiguration.java       |  12 +-
 .../CaffeineLoadCacheComponentConfiguration.java   |  12 +-
 .../DigitalSignatureComponentConfiguration.java    |   6 +-
 .../springboot/EhcacheComponentConfiguration.java  |  12 +-
 .../springboot/LuceneComponentConfiguration.java   |  20 +-
 .../springboot/NettyComponentConfiguration.java    |   8 -
 .../components-starter/camel-nsq-starter/pom.xml   |   8 -
 .../springboot/Web3jComponentConfiguration.java    |  19 +-
 .../WordpressComponentConfiguration.java           |  13 +
 .../ZooKeeperComponentConfiguration.java           |  17 -
 .../apache/camel/itest/jmh/LogEndpointTest.java    | 102 ++++
 .../camel/itest/jmh/SimpleMockPlaceholderTest.java | 117 +++++
 .../camel-jmh/src/test/resources/log4j2.properties |   2 +-
 .../camel/tools/apt/AnnotationProcessorHelper.java |   1 +
 .../apt/CoreEipAnnotationProcessorHelper.java      |   2 +-
 .../tools/apt/EndpointAnnotationProcessor.java     |  67 ++-
 .../apt/EndpointPropertyConfigurerGenerator.java   | 191 +++++++
 .../tools/apt/SpringAnnotationProcessorHelper.java |   2 +-
 .../camel/tools/apt/helper/JsonSchemaHelper.java   |  13 +-
 .../camel/tools/apt/model/EndpointOption.java      |  14 +-
 .../tools/apt/EndpointOptionComparatorTest.java    |   8 +-
 .../apache/camel/maven/DocumentGeneratorMojo.java  |  10 +-
 .../java/org/apache/camel/spi/UriEndpoint.java     |   7 +
 578 files changed, 3927 insertions(+), 8621 deletions(-)

diff --git a/components/camel-activemq/src/main/docs/activemq-component.adoc b/components/camel-activemq/src/main/docs/activemq-component.adoc
index 7b2e19a..16bd9ce 100644
--- a/components/camel-activemq/src/main/docs/activemq-component.adoc
+++ b/components/camel-activemq/src/main/docs/activemq-component.adoc
@@ -233,7 +233,7 @@ with the following path and query parameters:
 | *idleConsumerLimit* (advanced) | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | int
 | *idleTaskExecutionLimit* (advanced) | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | int
 | *includeAllJMSXProperties* (advanced) | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | boolean
-| *jmsKeyFormatStrategy* (advanced) | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache [...]
+| *jmsKeyFormatStrategy* (advanced) | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache [...]
 | *mapJmsMessage* (advanced) | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | boolean
 | *maxMessagesPerTask* (advanced) | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | int
 | *messageConverter* (advanced) | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. |  | MessageConverter
diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
index 74d553c..29f9dab 100644
--- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
+++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.activemq;
 
-import org.apache.camel.component.jms.JmsConsumer;
 import org.apache.camel.component.jms.JmsEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 
@@ -24,7 +23,8 @@ import org.apache.camel.spi.UriEndpoint;
  * The activemq component allows messages to be sent to (or consumed from)
  * Apache ActiveMQ. This component extends the Camel JMS component.
  */
-@UriEndpoint(firstVersion = "1.0.0", scheme = "activemq", title = "ActiveMQ", syntax = "activemq:destinationType:destinationName", consumerClass = JmsConsumer.class, label = "messaging")
+@UriEndpoint(firstVersion = "1.0.0", extendsScheme = "jms", scheme = "activemq", title = "ActiveMQ", syntax = "activemq:destinationType:destinationName",
+        label = "messaging")
 public class ActiveMQEndpoint extends JmsEndpoint {
 
     // needed for component documentation
diff --git a/components/camel-amqp/src/main/docs/amqp-component.adoc b/components/camel-amqp/src/main/docs/amqp-component.adoc
index 5254845..0f8026c 100644
--- a/components/camel-amqp/src/main/docs/amqp-component.adoc
+++ b/components/camel-amqp/src/main/docs/amqp-component.adoc
@@ -223,7 +223,7 @@ with the following path and query parameters:
 | *idleConsumerLimit* (advanced) | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | int
 | *idleTaskExecutionLimit* (advanced) | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | int
 | *includeAllJMSXProperties* (advanced) | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | boolean
-| *jmsKeyFormatStrategy* (advanced) | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache [...]
+| *jmsKeyFormatStrategy* (advanced) | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache [...]
 | *mapJmsMessage* (advanced) | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | boolean
 | *maxMessagesPerTask* (advanced) | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | int
 | *messageConverter* (advanced) | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. |  | MessageConverter
diff --git a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPEndpoint.java b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPEndpoint.java
index c29bf45..cd69c48 100644
--- a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPEndpoint.java
+++ b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPEndpoint.java
@@ -17,7 +17,6 @@
 package org.apache.camel.component.amqp;
 
 import org.apache.camel.AsyncEndpoint;
-import org.apache.camel.component.jms.JmsConsumer;
 import org.apache.camel.component.jms.JmsEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 
diff --git a/components/camel-apns/src/main/docs/apns-component.adoc b/components/camel-apns/src/main/docs/apns-component.adoc
index 83d83ba..80f8e12 100644
--- a/components/camel-apns/src/main/docs/apns-component.adoc
+++ b/components/camel-apns/src/main/docs/apns-component.adoc
@@ -109,7 +109,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Endpoint.java b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Endpoint.java
index 5a9a8a7..40b39d3 100644
--- a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Endpoint.java
+++ b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Endpoint.java
@@ -67,10 +67,6 @@ public class AS2Endpoint extends AbstractApiEndpoint<AS2ApiName, AS2Configuratio
         this.configuration = endpointConfiguration;
     }
 
-    public AS2Configuration getAs2Configuration() {
-        return configuration;
-    }
-
     public AS2ClientConnection getAS2ClientConnection() {
         return as2ClientConnection;
     }
diff --git a/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosEndpoint.java b/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosEndpoint.java
index c0b7a32..c5b12c1 100644
--- a/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosEndpoint.java
+++ b/components/camel-atmos/src/main/java/org/apache/camel/component/atmos/AtmosEndpoint.java
@@ -27,6 +27,7 @@ import org.apache.camel.component.atmos.integration.producer.AtmosMoveProducer;
 import org.apache.camel.component.atmos.integration.producer.AtmosPutProducer;
 import org.apache.camel.component.atmos.util.AtmosException;
 import org.apache.camel.component.atmos.util.AtmosOperation;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.DefaultEndpoint;
diff --git a/components/camel-atmos/src/test/java/org/apache/camel/component/atmos/AtmosComponentTest.java b/components/camel-atmos/src/test/java/org/apache/camel/component/atmos/AtmosComponentTest.java
deleted file mode 100644
index b4eb5bc..0000000
--- a/components/camel-atmos/src/test/java/org/apache/camel/component/atmos/AtmosComponentTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.atmos;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.util.URISupport;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.AdditionalAnswers.returnsFirstArg;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.when;
-
-@RunWith(MockitoJUnitRunner.class)
-public class AtmosComponentTest {
-
-    private static final String FAKE_REMOTE_PATH = "/remote";
-    private static final String FAKE_SECRET = "fake-secret";
-    private static final String FAKE_TOKEN = "fake-token";
-    private static final String FAKE_URI = "http://fake/uri";
-
-    @Mock
-    private CamelContext context;
-
-    @Test
-    public void testComponentOptions() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-
-        AtmosComponent component = new AtmosComponent(context);
-        component.setFullTokenId(FAKE_TOKEN);
-        component.setSecretKey(FAKE_SECRET);
-        component.setSslValidation(false);
-        component.setUri(FAKE_URI);
-
-        Map<String, Object> parameters = new HashMap<>();
-        parameters.put("remotePath", FAKE_REMOTE_PATH);
-
-        AtmosEndpoint endpoint = component.createEndpoint("atmos://foo?remotePath=/remote", "foo/get", parameters);
-        AtmosConfiguration configuration = endpoint.getConfiguration();
-
-        assertEquals(FAKE_TOKEN, configuration.getFullTokenId());
-        assertEquals(FAKE_SECRET, configuration.getSecretKey());
-        assertEquals(false, configuration.isSslValidation());
-        assertEquals(FAKE_URI, configuration.getUri());
-    }
-
-    @Test
-    public void testUriParamsOverrideComponentOptions() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-
-        AtmosComponent component = new AtmosComponent(context);
-        component.setFullTokenId("fakeTokenToBeOverridden");
-        component.setSecretKey("fakeSecretToBeOverridden");
-        component.setSslValidation(true);
-        component.setUri("http://fake/uri/to/be/overridden");
-
-        Map<String, Object> parameters = new HashMap<>();
-        parameters.put("remotePath", FAKE_REMOTE_PATH);
-        parameters.put("fullTokenId", FAKE_TOKEN);
-        parameters.put("secretKey", FAKE_SECRET);
-        parameters.put("sslValidation", false);
-        parameters.put("uri", FAKE_URI);
-
-        String uri = URISupport.appendParametersToURI("atmos://foo", parameters);
-        AtmosEndpoint endpoint = component.createEndpoint(uri, "foo/get", parameters);
-        AtmosConfiguration configuration = endpoint.getConfiguration();
-
-        assertEquals(FAKE_TOKEN, configuration.getFullTokenId());
-        assertEquals(FAKE_SECRET, configuration.getSecretKey());
-        assertEquals(false, configuration.isSslValidation());
-        assertEquals(FAKE_URI, configuration.getUri());
-    }
-}
diff --git a/components/camel-atom/src/main/docs/atom-component.adoc b/components/camel-atom/src/main/docs/atom-component.adoc
index f52d40a..64868dd 100644
--- a/components/camel-atom/src/main/docs/atom-component.adoc
+++ b/components/camel-atom/src/main/docs/atom-component.adoc
@@ -96,7 +96,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-atomix/src/main/docs/atomix-map-component.adoc b/components/camel-atomix/src/main/docs/atomix-map-component.adoc
index 67db23c..ed1d0a8 100644
--- a/components/camel-atomix/src/main/docs/atomix-map-component.adoc
+++ b/components/camel-atomix/src/main/docs/atomix-map-component.adoc
@@ -72,7 +72,7 @@ with the following path and query parameters:
 | *key* (common) | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
 | *nodes* (common) | The address of the nodes composing the cluster. |  | String
 | *resultHeader* (common) | The header that wil carry the result. |  | String
-| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *transportClassName* (common) | The class name (fqn) of the Atomix transport | io.atomix.catalyst.transport.netty.NettyTransport | String
 | *ttl* (common) | The resource ttl. |  | long
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
diff --git a/components/camel-atomix/src/main/docs/atomix-messaging-component.adoc b/components/camel-atomix/src/main/docs/atomix-messaging-component.adoc
index 4c6e80b..89fa55c 100644
--- a/components/camel-atomix/src/main/docs/atomix-messaging-component.adoc
+++ b/components/camel-atomix/src/main/docs/atomix-messaging-component.adoc
@@ -73,7 +73,7 @@ with the following path and query parameters:
 | *memberName* (common) | The Atomix Group member name |  | String
 | *nodes* (common) | The address of the nodes composing the cluster. |  | String
 | *resultHeader* (common) | The header that wil carry the result. |  | String
-| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *transportClassName* (common) | The class name (fqn) of the Atomix transport | io.atomix.catalyst.transport.netty.NettyTransport | String
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
diff --git a/components/camel-atomix/src/main/docs/atomix-multimap-component.adoc b/components/camel-atomix/src/main/docs/atomix-multimap-component.adoc
index 2204a5b..1ffb7fc 100644
--- a/components/camel-atomix/src/main/docs/atomix-multimap-component.adoc
+++ b/components/camel-atomix/src/main/docs/atomix-multimap-component.adoc
@@ -72,7 +72,7 @@ with the following path and query parameters:
 | *key* (consumer) | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
 | *nodes* (consumer) | The address of the nodes composing the cluster. |  | String
 | *resultHeader* (consumer) | The header that wil carry the result. |  | String
-| *transport* (consumer) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *transportClassName* (consumer) | The class name (fqn) of the Atomix transport | io.atomix.catalyst.transport.netty.NettyTransport | String
 | *ttl* (consumer) | The resource ttl. |  | long
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
diff --git a/components/camel-atomix/src/main/docs/atomix-queue-component.adoc b/components/camel-atomix/src/main/docs/atomix-queue-component.adoc
index 78d9571..1003367 100644
--- a/components/camel-atomix/src/main/docs/atomix-queue-component.adoc
+++ b/components/camel-atomix/src/main/docs/atomix-queue-component.adoc
@@ -70,7 +70,7 @@ with the following path and query parameters:
 | *defaultAction* (common) | The default action. | ADD | Action
 | *nodes* (common) | The address of the nodes composing the cluster. |  | String
 | *resultHeader* (common) | The header that wil carry the result. |  | String
-| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *transportClassName* (common) | The class name (fqn) of the Atomix transport | io.atomix.catalyst.transport.netty.NettyTransport | String
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
diff --git a/components/camel-atomix/src/main/docs/atomix-set-component.adoc b/components/camel-atomix/src/main/docs/atomix-set-component.adoc
index 43bef07..4cf4806 100644
--- a/components/camel-atomix/src/main/docs/atomix-set-component.adoc
+++ b/components/camel-atomix/src/main/docs/atomix-set-component.adoc
@@ -70,7 +70,7 @@ with the following path and query parameters:
 | *defaultAction* (common) | The default action. | ADD | Action
 | *nodes* (common) | The address of the nodes composing the cluster. |  | String
 | *resultHeader* (common) | The header that wil carry the result. |  | String
-| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *transportClassName* (common) | The class name (fqn) of the Atomix transport | io.atomix.catalyst.transport.netty.NettyTransport | String
 | *ttl* (common) | The resource ttl. |  | long
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
diff --git a/components/camel-atomix/src/main/docs/atomix-value-component.adoc b/components/camel-atomix/src/main/docs/atomix-value-component.adoc
index 30e6c5c..8ce04f1 100644
--- a/components/camel-atomix/src/main/docs/atomix-value-component.adoc
+++ b/components/camel-atomix/src/main/docs/atomix-value-component.adoc
@@ -70,7 +70,7 @@ with the following path and query parameters:
 | *defaultAction* (common) | The default action. | SET | Action
 | *nodes* (common) | The address of the nodes composing the cluster. |  | String
 | *resultHeader* (common) | The header that wil carry the result. |  | String
-| *transport* (common) | Sets the Atomix transport. | io.atomix.catalyst.transport.netty.NettyTransport | Transport
+| *transportClassName* (common) | The class name (fqn) of the Atomix transport | io.atomix.catalyst.transport.netty.NettyTransport | String
 | *ttl* (common) | The resource ttl. |  | long
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/AtomixConfiguration.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/AtomixConfiguration.java
index 342f717..f424464 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/AtomixConfiguration.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/AtomixConfiguration.java
@@ -26,19 +26,18 @@ import java.util.stream.Stream;
 
 import io.atomix.Atomix;
 import io.atomix.catalyst.transport.Address;
-import io.atomix.catalyst.transport.Transport;
 import io.atomix.catalyst.transport.netty.NettyTransport;
 import io.atomix.resource.ReadConsistency;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.util.ObjectHelper;
 
 public class AtomixConfiguration<T extends Atomix> implements Cloneable {
-    @UriParam(javaType = "io.atomix.Atomix")
-    private T atomix;
+    @UriParam
+    private Atomix atomix;
     @UriParam(javaType = "java.lang.String")
     private List<Address> nodes = Collections.emptyList();
-    @UriParam(javaType = "io.atomix.catalyst.transport.Transport", defaultValue = "io.atomix.catalyst.transport.netty.NettyTransport")
-    private Class<? extends Transport> transport = NettyTransport.class;
+    @UriParam(defaultValue = "io.atomix.catalyst.transport.netty.NettyTransport")
+    private String transportClassName = NettyTransport.class.getName();
     @UriParam
     private String configurationUri;
     @UriParam(label = "advanced")
@@ -62,14 +61,14 @@ public class AtomixConfiguration<T extends Atomix> implements Cloneable {
     // Properties
     // *****************************************
 
-    public T getAtomix() {
+    public Atomix getAtomix() {
         return atomix;
     }
 
     /**
      * The Atomix instance to use
      */
-    public void setAtomix(T client) {
+    public void setAtomix(Atomix client) {
         this.atomix = client;
     }
 
@@ -90,15 +89,15 @@ public class AtomixConfiguration<T extends Atomix> implements Cloneable {
         }
     }
 
-    public Class<? extends Transport> getTransport() {
-        return transport;
+    public String getTransportClassName() {
+        return transportClassName;
     }
 
     /**
-     * Sets the Atomix transport.
+     * The class name (fqn) of the Atomix transport
      */
-    public void setTransport(Class<? extends Transport> transport) {
-        this.transport = transport;
+    public void setTransportClassName(String transportClassName) {
+        this.transportClassName = transportClassName;
     }
 
     public String getConfigurationUri() {
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AbstractAtomixClientComponent.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AbstractAtomixClientComponent.java
index f6d263d..88b2fee 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AbstractAtomixClientComponent.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AbstractAtomixClientComponent.java
@@ -40,7 +40,7 @@ public abstract class AbstractAtomixClientComponent<C extends AtomixClientConfig
     // *****************************************
 
     public AtomixClient getAtomix() {
-        return getComponentConfiguration().getAtomix();
+        return (AtomixClient) getComponentConfiguration().getAtomix();
     }
 
     /**
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AtomixClientHelper.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AtomixClientHelper.java
index 06ca370..9909d4f 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AtomixClientHelper.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/AtomixClientHelper.java
@@ -20,16 +20,18 @@ import java.io.InputStream;
 import java.util.Properties;
 
 import io.atomix.AtomixClient;
+import io.atomix.catalyst.transport.Transport;
 import org.apache.camel.CamelContext;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.ObjectHelper;
 
 public final class AtomixClientHelper {
+
     private AtomixClientHelper() {
     }
 
     public static AtomixClient createClient(CamelContext camelContext, AtomixClientConfiguration configuration) throws Exception {
-        AtomixClient atomix = configuration.getAtomix();
+        AtomixClient atomix = (AtomixClient) configuration.getAtomix();
 
         if (atomix == null) {
             final AtomixClient.Builder atomixBuilder;
@@ -47,10 +49,9 @@ public final class AtomixClientHelper {
                 atomixBuilder = AtomixClient.builder();
             }
 
-            if (configuration.getTransport() != null) {
-                atomixBuilder.withTransport(
-                    camelContext.getInjector().newInstance(configuration.getTransport())
-                );
+            if (configuration.getTransportClassName() != null) {
+                Class<? extends Transport> clazz = camelContext.getClassResolver().resolveMandatoryClass(configuration.getTransportClassName(), Transport.class);
+                atomixBuilder.withTransport(camelContext.getInjector().newInstance(clazz));
             }
 
             atomix = atomixBuilder.build();
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapConsumer.java
index 110cd5b..2627bd1 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapConsumer.java
@@ -28,7 +28,7 @@ import org.apache.camel.component.atomix.client.AtomixClientConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class AtomixMapConsumer extends AbstractAtomixClientConsumer<AtomixMapEndpoint> {
+public final class AtomixMapConsumer extends AbstractAtomixClientConsumer<AtomixMapEndpoint> {
 
     private final List<Listener<DistributedMap.EntryEvent<Object, Object>>> listeners;
     private final String resourceName;
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapEndpoint.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapEndpoint.java
index a11443f..99fab81 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapEndpoint.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapEndpoint.java
@@ -33,7 +33,7 @@ import org.apache.camel.spi.UriParam;
     title = "Atomix Map",
     syntax = "atomix-map:resourceName",
     label = "clustering")
-class AtomixMapEndpoint extends AbstractAtomixClientEndpoint<AtomixMapComponent, AtomixMapConfiguration> {
+public class AtomixMapEndpoint extends AbstractAtomixClientEndpoint<AtomixMapComponent, AtomixMapConfiguration> {
     @UriParam
     private AtomixMapConfiguration configuration;
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapProducer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapProducer.java
index fd7a73a..5515fb9 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapProducer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/map/AtomixMapProducer.java
@@ -35,7 +35,7 @@ import static org.apache.camel.component.atomix.client.AtomixClientConstants.RES
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_TTL;
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_VALUE;
 
-final class AtomixMapProducer extends AbstractAtomixClientProducer<AtomixMapEndpoint, DistributedMap<Object, Object>> {
+public final class AtomixMapProducer extends AbstractAtomixClientProducer<AtomixMapEndpoint, DistributedMap<Object, Object>> {
     private final AtomixMapConfiguration configuration;
 
     protected AtomixMapProducer(AtomixMapEndpoint endpoint) {
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingConsumer.java
index f8763f5..3c101bb 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingConsumer.java
@@ -36,7 +36,7 @@ import static org.apache.camel.component.atomix.client.AtomixClientConstants.CHA
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.MEMBER_NAME;
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_NAME;
 
-final class AtomixMessagingConsumer extends AbstractAtomixClientConsumer<AtomixMessagingEndpoint> {
+public final class AtomixMessagingConsumer extends AbstractAtomixClientConsumer<AtomixMessagingEndpoint> {
 
     private final List<Listener<Message<Object>>> listeners;
     private final String resultHeader;
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingEndpoint.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingEndpoint.java
index ed2eab2..d0674e9 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingEndpoint.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingEndpoint.java
@@ -33,7 +33,7 @@ import org.apache.camel.spi.UriParam;
     title = "Atomix Messaging",
     syntax = "atomix-messaging:resourceName",
     label = "clustering")
-final class AtomixMessagingEndpoint extends AbstractAtomixClientEndpoint<AtomixMessagingComponent, AtomixMessagingConfiguration> {
+public final class AtomixMessagingEndpoint extends AbstractAtomixClientEndpoint<AtomixMessagingComponent, AtomixMessagingConfiguration> {
     @UriParam
     private AtomixMessagingConfiguration configuration;
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingProducer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingProducer.java
index f5b371d..e04e5c0 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingProducer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/messaging/AtomixMessagingProducer.java
@@ -35,7 +35,7 @@ import static org.apache.camel.component.atomix.client.messaging.AtomixMessaging
 import static org.apache.camel.component.atomix.client.messaging.AtomixMessaging.OPTIONS_BROADCAST_RANDOM;
 import static org.apache.camel.component.atomix.client.messaging.AtomixMessaging.OPTIONS_DIRECT;
 
-final class AtomixMessagingProducer extends AbstractAtomixClientProducer<AtomixMessagingEndpoint, DistributedGroup> {
+public final class AtomixMessagingProducer extends AbstractAtomixClientProducer<AtomixMessagingEndpoint, DistributedGroup> {
     private final AtomixMessagingConfiguration configuration;
 
     protected AtomixMessagingProducer(AtomixMessagingEndpoint endpoint) {
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapEndpoint.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapEndpoint.java
index 113e9ed..0a0de4a 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapEndpoint.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapEndpoint.java
@@ -32,7 +32,7 @@ import org.apache.camel.spi.UriParam;
     syntax = "atomix-multimap:resourceName",
     consumerOnly = true,
     label = "clustering")
-final class AtomixMultiMapEndpoint extends AbstractAtomixClientEndpoint<AtomixMultiMapComponent, AtomixMultiMapConfiguration> {
+public final class AtomixMultiMapEndpoint extends AbstractAtomixClientEndpoint<AtomixMultiMapComponent, AtomixMultiMapConfiguration> {
     @UriParam
     private AtomixMultiMapConfiguration configuration;
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapProducer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapProducer.java
index 7c11d98..78df617 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapProducer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/multimap/AtomixMultiMapProducer.java
@@ -33,7 +33,7 @@ import static org.apache.camel.component.atomix.client.AtomixClientConstants.RES
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_TTL;
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_VALUE;
 
-final class AtomixMultiMapProducer extends AbstractAtomixClientProducer<AtomixMultiMapEndpoint, DistributedMultiMap> {
+public final class AtomixMultiMapProducer extends AbstractAtomixClientProducer<AtomixMultiMapEndpoint, DistributedMultiMap> {
     private final AtomixMultiMapConfiguration configuration;
 
     protected AtomixMultiMapProducer(AtomixMultiMapEndpoint endpoint) {
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueConsumer.java
index 00fb320..34afa61 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueConsumer.java
@@ -28,7 +28,7 @@ import org.apache.camel.component.atomix.client.AtomixClientConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class AtomixQueueConsumer extends AbstractAtomixClientConsumer<AtomixQueueEndpoint> {
+public final class AtomixQueueConsumer extends AbstractAtomixClientConsumer<AtomixQueueEndpoint> {
 
     private final List<Listener<DistributedQueue.ValueEvent<Object>>> listeners;
     private final String resourceName;
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueEndpoint.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueEndpoint.java
index a2bfa35..21fe107 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueEndpoint.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueEndpoint.java
@@ -33,7 +33,7 @@ import org.apache.camel.spi.UriParam;
     title = "Atomix Queue",
     syntax = "atomix-queue:resourceName",
     label = "clustering")
-final class AtomixQueueEndpoint extends AbstractAtomixClientEndpoint<AtomixQueueComponent, AtomixQueueConfiguration> {
+public final class AtomixQueueEndpoint extends AbstractAtomixClientEndpoint<AtomixQueueComponent, AtomixQueueConfiguration> {
     @UriParam
     private AtomixQueueConfiguration configuration;
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueProducer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueProducer.java
index d42cf9c..5446bea 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueProducer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/queue/AtomixQueueProducer.java
@@ -29,7 +29,7 @@ import static org.apache.camel.component.atomix.client.AtomixClientConstants.RES
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_READ_CONSISTENCY;
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_VALUE;
 
-final class AtomixQueueProducer extends AbstractAtomixClientProducer<AtomixQueueEndpoint, DistributedQueue> {
+public final class AtomixQueueProducer extends AbstractAtomixClientProducer<AtomixQueueEndpoint, DistributedQueue> {
     private final AtomixQueueConfiguration configuration;
 
     protected AtomixQueueProducer(AtomixQueueEndpoint endpoint) {
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetConsumer.java
index 3f696d9..faef03a 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetConsumer.java
@@ -28,7 +28,7 @@ import org.apache.camel.component.atomix.client.AtomixClientConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class AtomixSetConsumer extends AbstractAtomixClientConsumer<AtomixSetEndpoint> {
+public final class AtomixSetConsumer extends AbstractAtomixClientConsumer<AtomixSetEndpoint> {
 
     private final List<Listener<DistributedSet.ValueEvent<Object>>> listeners;
     private final String resourceName;
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetEndpoint.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetEndpoint.java
index 88dad42..4a95a37 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetEndpoint.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetEndpoint.java
@@ -33,7 +33,7 @@ import org.apache.camel.spi.UriParam;
     title = "Atomix Set",
     syntax = "atomix-set:resourceName",
     label = "clustering")
-final class AtomixSetEndpoint extends AbstractAtomixClientEndpoint<AtomixSetComponent, AtomixSetConfiguration> {
+public final class AtomixSetEndpoint extends AbstractAtomixClientEndpoint<AtomixSetComponent, AtomixSetConfiguration> {
     @UriParam
     private AtomixSetConfiguration configuration;
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetProducer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetProducer.java
index 19aec85..7794383 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetProducer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/set/AtomixSetProducer.java
@@ -32,7 +32,7 @@ import static org.apache.camel.component.atomix.client.AtomixClientConstants.RES
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_TTL;
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_VALUE;
 
-final class AtomixSetProducer extends AbstractAtomixClientProducer<AtomixSetEndpoint, DistributedSet> {
+public final class AtomixSetProducer extends AbstractAtomixClientProducer<AtomixSetEndpoint, DistributedSet> {
     private final AtomixSetConfiguration configuration;
 
     protected AtomixSetProducer(AtomixSetEndpoint endpoint) {
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueConsumer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueConsumer.java
index ac83bc1..520137b 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueConsumer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueConsumer.java
@@ -28,7 +28,7 @@ import org.apache.camel.component.atomix.client.AtomixClientConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class AtomixValueConsumer extends AbstractAtomixClientConsumer<AtomixValueEndpoint> {
+public final class AtomixValueConsumer extends AbstractAtomixClientConsumer<AtomixValueEndpoint> {
 
     private final List<Listener<DistributedValue.ChangeEvent<Object>>> listeners;
     private final String resourceName;
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueEndpoint.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueEndpoint.java
index 4e46520..804404f 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueEndpoint.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueEndpoint.java
@@ -33,7 +33,7 @@ import org.apache.camel.spi.UriParam;
     title = "Atomix Value",
     syntax = "atomix-value:resourceName",
     label = "clustering")
-final class AtomixValueEndpoint extends AbstractAtomixClientEndpoint<AtomixValueComponent, AtomixValueConfiguration> {
+public final class AtomixValueEndpoint extends AbstractAtomixClientEndpoint<AtomixValueComponent, AtomixValueConfiguration> {
     @UriParam
     private AtomixValueConfiguration configuration;
 
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueProducer.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueProducer.java
index 1c83d24..a8ff5e1 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueProducer.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/client/value/AtomixValueProducer.java
@@ -33,7 +33,7 @@ import static org.apache.camel.component.atomix.client.AtomixClientConstants.RES
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_TTL;
 import static org.apache.camel.component.atomix.client.AtomixClientConstants.RESOURCE_VALUE;
 
-final class AtomixValueProducer extends AbstractAtomixClientProducer<AtomixValueEndpoint, DistributedValue> {
+public final class AtomixValueProducer extends AbstractAtomixClientProducer<AtomixValueEndpoint, DistributedValue> {
     private final AtomixValueConfiguration configuration;
 
     protected AtomixValueProducer(AtomixValueEndpoint endpoint) {
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterClientService.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterClientService.java
index 846aa73..524325f 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterClientService.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterClientService.java
@@ -20,7 +20,6 @@ import java.util.List;
 
 import io.atomix.AtomixClient;
 import io.atomix.catalyst.transport.Address;
-import io.atomix.catalyst.transport.Transport;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.atomix.client.AtomixClientConfiguration;
 import org.apache.camel.component.atomix.client.AtomixClientHelper;
@@ -68,16 +67,16 @@ public final class AtomixClusterClientService extends AbstractCamelClusterServic
         configuration.setNodes(nodes);
     }
 
-    public Class<? extends Transport> getTransport() {
-        return configuration.getTransport();
+    public String getTransport() {
+        return configuration.getTransportClassName();
     }
 
-    public void setTransport(Class<? extends Transport> transport) {
-        configuration.setTransport(transport);
+    public void setTransportClassName(String transport) {
+        configuration.setTransportClassName(transport);
     }
 
     public AtomixClient getAtomix() {
-        return configuration.getAtomix();
+        return (AtomixClient) configuration.getAtomix();
     }
 
     public void setAtomix(AtomixClient atomix) {
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterHelper.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterHelper.java
index c6f9e39..334a6e0 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterHelper.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterHelper.java
@@ -21,12 +21,14 @@ import java.util.Properties;
 
 import io.atomix.AtomixReplica;
 import io.atomix.catalyst.transport.Address;
+import io.atomix.catalyst.transport.Transport;
 import io.atomix.copycat.server.storage.Storage;
 import org.apache.camel.CamelContext;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.ObjectHelper;
 
 public final class AtomixClusterHelper {
+
     private AtomixClusterHelper() {
     }
 
@@ -35,7 +37,7 @@ public final class AtomixClusterHelper {
     }
 
     public static AtomixReplica createReplica(CamelContext camelContext, Address address, AtomixClusterConfiguration configuration) throws Exception {
-        AtomixReplica atomix = configuration.getAtomix();
+        AtomixReplica atomix = (AtomixReplica) configuration.getAtomix();
 
         if (atomix == null) {
             final AtomixReplica.Builder atomixBuilder;
@@ -59,10 +61,9 @@ public final class AtomixClusterHelper {
 
             atomixBuilder.withStorage(storageBuilder.build());
 
-            if (configuration.getTransport() != null) {
-                atomixBuilder.withTransport(
-                    camelContext.getInjector().newInstance(configuration.getTransport())
-                );
+            if (configuration.getTransportClassName() != null) {
+                Class<? extends Transport> clazz = camelContext.getClassResolver().resolveMandatoryClass(configuration.getTransportClassName(), Transport.class);
+                atomixBuilder.withTransport(camelContext.getInjector().newInstance(clazz));
             }
             if (configuration.getClientTransport() != null) {
                 atomixBuilder.withClientTransport(
diff --git a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterService.java b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterService.java
index 44333bc..cfb78f3 100644
--- a/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterService.java
+++ b/components/camel-atomix/src/main/java/org/apache/camel/component/atomix/cluster/AtomixClusterService.java
@@ -95,16 +95,16 @@ public final class AtomixClusterService extends AbstractCamelClusterService<Atom
         configuration.setNodes(nodes);
     }
 
-    public Class<? extends Transport> getTransport() {
-        return configuration.getTransport();
+    public String getTransport() {
+        return configuration.getTransportClassName();
     }
 
-    public void setTransport(Class<? extends Transport> transport) {
-        configuration.setTransport(transport);
+    public void setTransportClassName(String transport) {
+        configuration.setTransportClassName(transport);
     }
 
     public AtomixReplica getAtomix() {
-        return configuration.getAtomix();
+        return (AtomixReplica) configuration.getAtomix();
     }
 
     public void setAtomix(AtomixReplica atomix) {
@@ -165,7 +165,7 @@ public final class AtomixClusterService extends AbstractCamelClusterService<Atom
                 this.atomix.bootstrap(configuration.getNodes()).join();
                 log.debug("Bootstrap cluster done");
             } else {
-                log.debug("Bootstrap cluster on address {}", address, configuration.getNodes());
+                log.debug("Bootstrap cluster on address {}", address);
                 this.atomix.bootstrap().join();
                 log.debug("Bootstrap cluster done");
             }
diff --git a/components/camel-aws-ddb/src/main/docs/aws-ddbstream-component.adoc b/components/camel-aws-ddb/src/main/docs/aws-ddbstream-component.adoc
index d6aa480..4862c29 100644
--- a/components/camel-aws-ddb/src/main/docs/aws-ddbstream-component.adoc
+++ b/components/camel-aws-ddb/src/main/docs/aws-ddbstream-component.adoc
@@ -94,7 +94,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-aws-kinesis/src/main/docs/aws-kinesis-component.adoc b/components/camel-aws-kinesis/src/main/docs/aws-kinesis-component.adoc
index 5938a25..8739d9b 100644
--- a/components/camel-aws-kinesis/src/main/docs/aws-kinesis-component.adoc
+++ b/components/camel-aws-kinesis/src/main/docs/aws-kinesis-component.adoc
@@ -98,7 +98,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-aws-s3/src/main/docs/aws-s3-component.adoc b/components/camel-aws-s3/src/main/docs/aws-s3-component.adoc
index 1197b71..822dd0c 100644
--- a/components/camel-aws-s3/src/main/docs/aws-s3-component.adoc
+++ b/components/camel-aws-s3/src/main/docs/aws-s3-component.adoc
@@ -134,7 +134,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-aws-sqs/src/main/docs/aws-sqs-component.adoc b/components/camel-aws-sqs/src/main/docs/aws-sqs-component.adoc
index 238626a..b703aec 100644
--- a/components/camel-aws-sqs/src/main/docs/aws-sqs-component.adoc
+++ b/components/camel-aws-sqs/src/main/docs/aws-sqs-component.adoc
@@ -115,7 +115,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
@@ -172,8 +172,8 @@ The component supports 38 options, which are listed below.
 | *camel.component.aws-sqs.configuration.kms-master-key-id* | The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK. |  | String
 | *camel.component.aws-sqs.configuration.maximum-message-size* | The maximumMessageSize (in bytes) an SQS message can contain for this queue. |  | Integer
 | *camel.component.aws-sqs.configuration.message-attribute-names* | A list of message attribute names to receive when consuming. Multiple names can be separated by comma. |  | String
-| *camel.component.aws-sqs.configuration.message-deduplication-id-strategy* | Only for FIFO queues. Strategy for setting the messageDeduplicationId on the message. Can be one of the following options: *useExchangeId*, *useContentBasedDeduplication*. For the *useContentBasedDeduplication* option, no messageDeduplicationId will be set on the message. | useExchangeId | String
-| *camel.component.aws-sqs.configuration.message-group-id-strategy* | Only for FIFO queues. Strategy for setting the messageGroupId on the message. Can be one of the following options: *useConstant*, *useExchangeId*, *usePropertyValue*. For the *usePropertyValue* option, the value of property "CamelAwsMessageGroupId" will be used. |  | String
+| *camel.component.aws-sqs.configuration.message-deduplication-id-strategy* | Only for FIFO queues. Strategy for setting the messageDeduplicationId on the message. Can be one of the following options: *useExchangeId*, *useContentBasedDeduplication*. For the *useContentBasedDeduplication* option, no messageDeduplicationId will be set on the message. |  | MessageDeduplicationId Strategy
+| *camel.component.aws-sqs.configuration.message-group-id-strategy* | Only for FIFO queues. Strategy for setting the messageGroupId on the message. Can be one of the following options: *useConstant*, *useExchangeId*, *usePropertyValue*. For the *usePropertyValue* option, the value of property "CamelAwsMessageGroupId" will be used. |  | MessageGroupIdStrategy
 | *camel.component.aws-sqs.configuration.message-retention-period* | The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue. |  | Integer
 | *camel.component.aws-sqs.configuration.operation* | The operation to do in case the user don't want to send only a message |  | SqsOperations
 | *camel.component.aws-sqs.configuration.policy* | The policy for this queue |  | String
diff --git a/components/camel-aws-sqs/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java b/components/camel-aws-sqs/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
index b8d0f6c..01dc10e 100644
--- a/components/camel-aws-sqs/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
+++ b/components/camel-aws-sqs/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
@@ -477,6 +477,10 @@ public class SqsConfiguration implements Cloneable {
         }
     }
 
+    public void setMessageGroupIdStrategy(MessageGroupIdStrategy messageGroupIdStrategy) {
+        this.messageGroupIdStrategy = messageGroupIdStrategy;
+    }
+
     public MessageGroupIdStrategy getMessageGroupIdStrategy() {
         return messageGroupIdStrategy;
     }
@@ -501,6 +505,10 @@ public class SqsConfiguration implements Cloneable {
         }
     }
 
+    public void setMessageDeduplicationIdStrategy(MessageDeduplicationIdStrategy messageDeduplicationIdStrategy) {
+        this.messageDeduplicationIdStrategy = messageDeduplicationIdStrategy;
+    }
+
     public SqsOperations getOperation() {
         return operation;
     }
diff --git a/components/camel-beanstalk/src/main/docs/beanstalk-component.adoc b/components/camel-beanstalk/src/main/docs/beanstalk-component.adoc
index e631066..c434c6a 100644
--- a/components/camel-beanstalk/src/main/docs/beanstalk-component.adoc
+++ b/components/camel-beanstalk/src/main/docs/beanstalk-component.adoc
@@ -120,7 +120,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-caffeine/src/main/docs/caffeine-cache-component.adoc b/components/camel-caffeine/src/main/docs/caffeine-cache-component.adoc
index 6cceaa2..3ceee01 100644
--- a/components/camel-caffeine/src/main/docs/caffeine-cache-component.adoc
+++ b/components/camel-caffeine/src/main/docs/caffeine-cache-component.adoc
@@ -90,9 +90,9 @@ with the following path and query parameters:
 | *statsCounter* (producer) | Set a specific Stats Counter for the cache stats |  | StatsCounter
 | *statsEnabled* (producer) | To enable stats on the cache | false | boolean
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *keyType* (advanced) | The cache key type, default java.lang.Object | java.lang.Object | String
+| *keyType* (advanced) | The cache key type, default java.lang.Object |  | String
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *valueType* (advanced) | The cache value type, default java.lang.Object | java.lang.Object | String
+| *valueType* (advanced) | The cache value type, default java.lang.Object |  | String
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
@@ -128,12 +128,12 @@ The component supports 17 options, which are listed below.
 | *camel.component.caffeine-cache.configuration.expire-after-write-time* | Set the expire After Access Write in case of time based Eviction (in seconds) | 300 | Integer
 | *camel.component.caffeine-cache.configuration.initial-capacity* | Set the initial Capacity for the cache | 10000 | Integer
 | *camel.component.caffeine-cache.configuration.key* | To configure the default action key. If a key is set in the message header, then the key from the header takes precedence. |  | Object
-| *camel.component.caffeine-cache.configuration.key-type* | The cache key type, default "java.lang.Object" |  | Class
+| *camel.component.caffeine-cache.configuration.key-type* | The cache key type, default "java.lang.Object" |  | String
 | *camel.component.caffeine-cache.configuration.maximum-size* | Set the maximum size for the cache | 10000 | Integer
 | *camel.component.caffeine-cache.configuration.removal-listener* | Set a specific removal Listener for the cache |  | RemovalListener
 | *camel.component.caffeine-cache.configuration.stats-counter* | Set a specific Stats Counter for the cache stats |  | StatsCounter
 | *camel.component.caffeine-cache.configuration.stats-enabled* | To enable stats on the cache | false | Boolean
-| *camel.component.caffeine-cache.configuration.value-type* | The cache value type, default "java.lang.Object" |  | Class
+| *camel.component.caffeine-cache.configuration.value-type* | The cache value type, default "java.lang.Object" |  | String
 | *camel.component.caffeine-cache.enabled* | Whether to enable auto configuration of the caffeine-cache component. This is enabled by default. |  | Boolean
 |===
 // spring-boot-auto-configure options: END
diff --git a/components/camel-caffeine/src/main/docs/caffeine-loadcache-component.adoc b/components/camel-caffeine/src/main/docs/caffeine-loadcache-component.adoc
index aea2ee3..fe3db17 100644
--- a/components/camel-caffeine/src/main/docs/caffeine-loadcache-component.adoc
+++ b/components/camel-caffeine/src/main/docs/caffeine-loadcache-component.adoc
@@ -90,9 +90,9 @@ with the following path and query parameters:
 | *statsCounter* (producer) | Set a specific Stats Counter for the cache stats |  | StatsCounter
 | *statsEnabled* (producer) | To enable stats on the cache | false | boolean
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *keyType* (advanced) | The cache key type, default java.lang.Object | java.lang.Object | String
+| *keyType* (advanced) | The cache key type, default java.lang.Object |  | String
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *valueType* (advanced) | The cache value type, default java.lang.Object | java.lang.Object | String
+| *valueType* (advanced) | The cache value type, default java.lang.Object |  | String
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
@@ -128,12 +128,12 @@ The component supports 17 options, which are listed below.
 | *camel.component.caffeine-loadcache.configuration.expire-after-write-time* | Set the expire After Access Write in case of time based Eviction (in seconds) | 300 | Integer
 | *camel.component.caffeine-loadcache.configuration.initial-capacity* | Set the initial Capacity for the cache | 10000 | Integer
 | *camel.component.caffeine-loadcache.configuration.key* | To configure the default action key. If a key is set in the message header, then the key from the header takes precedence. |  | Object
-| *camel.component.caffeine-loadcache.configuration.key-type* | The cache key type, default "java.lang.Object" |  | Class
+| *camel.component.caffeine-loadcache.configuration.key-type* | The cache key type, default "java.lang.Object" |  | String
 | *camel.component.caffeine-loadcache.configuration.maximum-size* | Set the maximum size for the cache | 10000 | Integer
 | *camel.component.caffeine-loadcache.configuration.removal-listener* | Set a specific removal Listener for the cache |  | RemovalListener
 | *camel.component.caffeine-loadcache.configuration.stats-counter* | Set a specific Stats Counter for the cache stats |  | StatsCounter
 | *camel.component.caffeine-loadcache.configuration.stats-enabled* | To enable stats on the cache | false | Boolean
-| *camel.component.caffeine-loadcache.configuration.value-type* | The cache value type, default "java.lang.Object" |  | Class
+| *camel.component.caffeine-loadcache.configuration.value-type* | The cache value type, default "java.lang.Object" |  | String
 | *camel.component.caffeine-loadcache.enabled* | Whether to enable auto configuration of the caffeine-loadcache component. This is enabled by default. |  | Boolean
 |===
 // spring-boot-auto-configure options: END
diff --git a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/CaffeineConfiguration.java b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/CaffeineConfiguration.java
index e7db733..0e7c5fe 100644
--- a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/CaffeineConfiguration.java
+++ b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/CaffeineConfiguration.java
@@ -32,10 +32,10 @@ public class CaffeineConfiguration implements Cloneable {
     private String action;
     @UriParam(label = "producer")
     private Object key;
-    @UriParam(label = "advanced", javaType = "java.lang.String", defaultValue = "java.lang.Object")
-    private Class<?> keyType = Object.class;
-    @UriParam(label = "advanced", javaType = "java.lang.String", defaultValue = "java.lang.Object")
-    private Class<?> valueType = Object.class;
+    @UriParam(label = "advanced")
+    private String keyType;
+    @UriParam(label = "advanced")
+    private String valueType;
     @UriParam(label = "producer")
     private Cache cache;
     @UriParam(label = "producer")
@@ -96,25 +96,25 @@ public class CaffeineConfiguration implements Cloneable {
         this.key = key;
     }
 
-    public Class<?> getKeyType() {
+    public String getKeyType() {
         return keyType;
     }
 
     /**
      * The cache key type, default "java.lang.Object"
      */
-    public void setKeyType(Class<?> keyType) {
+    public void setKeyType(String keyType) {
         this.keyType = keyType;
     }
 
-    public Class<?> getValueType() {
+    public String getValueType() {
         return valueType;
     }
 
     /**
      * The cache value type, default "java.lang.Object"
      */
-    public void setValueType(Class<?> valueType) {
+    public void setValueType(String valueType) {
         this.valueType = valueType;
     }
 
diff --git a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/cache/CaffeineCacheProducer.java b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/cache/CaffeineCacheProducer.java
index 618a1e0..133896b 100644
--- a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/cache/CaffeineCacheProducer.java
+++ b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/cache/CaffeineCacheProducer.java
@@ -33,8 +33,7 @@ public class CaffeineCacheProducer extends HeaderSelectorProducer {
     private final Cache cache;
 
     public CaffeineCacheProducer(CaffeineCacheEndpoint endpoint, String cacheName, CaffeineConfiguration configuration, Cache cache) throws Exception {
-        super(endpoint, CaffeineConstants.ACTION, () -> configuration.getAction());
-
+        super(endpoint, CaffeineConstants.ACTION, configuration::getAction);
         this.configuration = configuration;
         this.cache = cache;
     }
@@ -59,7 +58,7 @@ public class CaffeineCacheProducer extends HeaderSelectorProducer {
 
     @InvokeOnHeader(CaffeineConstants.ACTION_PUT_ALL)
     public void onPutAll(Message message) throws Exception {
-        cache.putAll((Map)getValue(message, Map.class));
+        cache.putAll((Map)getValue(message, Map.class.getName()));
 
         setResult(message, true, null, null);
     }
@@ -97,7 +96,13 @@ public class CaffeineCacheProducer extends HeaderSelectorProducer {
     // ****************************
 
     private Object getKey(final Message message) throws Exception {
-        Object value = message.getHeader(CaffeineConstants.KEY, configuration.getKeyType());
+        Object value;
+        if (configuration.getKeyType() != null) {
+            Class<?> clazz = getEndpoint().getCamelContext().getClassResolver().resolveClass(configuration.getKeyType());
+            value = message.getHeader(CaffeineConstants.KEY, clazz);
+        } else {
+            value = message.getHeader(CaffeineConstants.KEY);
+        }
         if (value == null) {
             value = configuration.getKey();
         }
@@ -109,10 +114,15 @@ public class CaffeineCacheProducer extends HeaderSelectorProducer {
         return value;
     }
 
-    private Object getValue(final Message message, final Class<?> type) throws Exception {
-        Object value = message.getHeader(CaffeineConstants.VALUE, type);
+    private Object getValue(final Message message, final String type) throws Exception {
+        Object value = message.getHeader(CaffeineConstants.VALUE);
         if (value == null) {
-            value = message.getBody(type);
+            if (type != null) {
+                Class<?> clazz = getEndpoint().getCamelContext().getClassResolver().resolveClass(type);
+                value = message.getBody(clazz);
+            } else {
+                value = message.getBody();
+            }
         }
 
         if (value == null) {
diff --git a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/load/CaffeineLoadCacheProducer.java b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/load/CaffeineLoadCacheProducer.java
index 56e2ab1..0aff158 100644
--- a/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/load/CaffeineLoadCacheProducer.java
+++ b/components/camel-caffeine/src/main/java/org/apache/camel/component/caffeine/load/CaffeineLoadCacheProducer.java
@@ -33,8 +33,7 @@ public class CaffeineLoadCacheProducer extends HeaderSelectorProducer {
     private final LoadingCache cache;
 
     public CaffeineLoadCacheProducer(CaffeineLoadCacheEndpoint endpoint, String cacheName, CaffeineConfiguration configuration, LoadingCache cache) throws Exception {
-        super(endpoint, CaffeineConstants.ACTION, () -> configuration.getAction());
-
+        super(endpoint, CaffeineConstants.ACTION, configuration::getAction);
         this.configuration = configuration;
         this.cache = cache;
     }
@@ -59,7 +58,7 @@ public class CaffeineLoadCacheProducer extends HeaderSelectorProducer {
 
     @InvokeOnHeader(CaffeineConstants.ACTION_PUT_ALL)
     public void onPutAll(Message message) throws Exception {
-        cache.putAll((Map)getValue(message, Map.class));
+        cache.putAll((Map)getValue(message, Map.class.getName()));
 
         setResult(message, true, null, null);
     }
@@ -97,7 +96,13 @@ public class CaffeineLoadCacheProducer extends HeaderSelectorProducer {
     // ****************************
 
     private Object getKey(final Message message) throws Exception {
-        Object value = message.getHeader(CaffeineConstants.KEY, configuration.getKeyType());
+        Object value;
+        if (configuration.getKeyType() != null) {
+            Class<?> clazz = getEndpoint().getCamelContext().getClassResolver().resolveClass(configuration.getKeyType());
+            value = message.getHeader(CaffeineConstants.KEY, clazz);
+        } else {
+            value = message.getHeader(CaffeineConstants.KEY);
+        }
         if (value == null) {
             value = configuration.getKey();
         }
@@ -109,10 +114,15 @@ public class CaffeineLoadCacheProducer extends HeaderSelectorProducer {
         return value;
     }
 
-    private Object getValue(final Message message, final Class<?> type) throws Exception {
-        Object value = message.getHeader(CaffeineConstants.VALUE, type);
+    private Object getValue(final Message message, final String type) throws Exception {
+        Object value = message.getHeader(CaffeineConstants.VALUE);
         if (value == null) {
-            value = message.getBody(type);
+            if (type != null) {
+                Class<?> clazz = getEndpoint().getCamelContext().getClassResolver().resolveClass(type);
+                value = message.getBody(clazz);
+            } else {
+                value = message.getBody();
+            }
         }
 
         if (value == null) {
diff --git a/components/camel-cassandraql/src/main/docs/cql-component.adoc b/components/camel-cassandraql/src/main/docs/cql-component.adoc
index cb3dfaf..e3c7f9a 100644
--- a/components/camel-cassandraql/src/main/docs/cql-component.adoc
+++ b/components/camel-cassandraql/src/main/docs/cql-component.adoc
@@ -103,7 +103,7 @@ with the following path and query parameters:
 | *loadBalancingPolicy* (common) | To use a specific LoadBalancingPolicy |  | String
 | *password* (common) | Password for session authentication |  | String
 | *prepareStatements* (common) | Whether to use PreparedStatements or regular Statements | true | boolean
-| *resultSetConversionStrategy* (common) | To use a custom class that implements logic for converting ResultSet into message body ALL, ONE, LIMIT_10, LIMIT_100... |  | String
+| *resultSetConversionStrategy* (common) | To use a custom class that implements logic for converting ResultSet into message body ALL, ONE, LIMIT_10, LIMIT_100... |  | ResultSetConversion Strategy
 | *session* (common) | To use the Session instance (you would normally not use this option) |  | Session
 | *username* (common) | Username for session authentication |  | String
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
@@ -122,7 +122,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraEndpoint.java b/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraEndpoint.java
index e045e9f..d715fde 100644
--- a/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraEndpoint.java
+++ b/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraEndpoint.java
@@ -70,7 +70,7 @@ public class CassandraEndpoint extends ScheduledPollEndpoint {
     private ConsistencyLevel consistencyLevel;
     @UriParam
     private String loadBalancingPolicy;
-    @UriParam(javaType = "java.lang.String")
+    @UriParam
     private ResultSetConversionStrategy resultSetConversionStrategy = ResultSetConversionStrategies.all();
 
     public CassandraEndpoint(String endpointUri, Component component) {
diff --git a/components/camel-chatscript/src/main/docs/chatscript-component.adoc b/components/camel-chatscript/src/main/docs/chatscript-component.adoc
index 47b4538..f99e2c0 100644
--- a/components/camel-chatscript/src/main/docs/chatscript-component.adoc
+++ b/components/camel-chatscript/src/main/docs/chatscript-component.adoc
@@ -76,11 +76,11 @@ with the following path and query parameters:
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
+| *chatUserName* (producer) | Username who initializes the CS conversation. To be set when chat is initialized from camel route |  | String
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *resetChat* (producer) | Issues :reset command to start a new conversation everytime | false | boolean
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *resetchat* (reset) | Issues :reset command to start a new conversation everytime | false | boolean
-| *chatUserName* (username) | Username who initializes the CS conversation. To be set when chat is initialized from camel route |  | String
 |===
 // endpoint options: END
 
diff --git a/components/camel-chatscript/src/main/java/org/apache/camel/component/chatscript/ChatScriptEndpoint.java b/components/camel-chatscript/src/main/java/org/apache/camel/component/chatscript/ChatScriptEndpoint.java
index 15823fa..0db76ad 100644
--- a/components/camel-chatscript/src/main/java/org/apache/camel/component/chatscript/ChatScriptEndpoint.java
+++ b/components/camel-chatscript/src/main/java/org/apache/camel/component/chatscript/ChatScriptEndpoint.java
@@ -37,8 +37,11 @@ import static org.apache.camel.component.chatscript.utils.ChatScriptConstants.DE
  * Represents a ChatScript endpoint.
  */
 @UriEndpoint(firstVersion = "3.0.0", scheme = "chatscript", title = "ChatScript", syntax = "chatscript:host:port/botName",  producerOnly = true, label = "ai,chatscript")
-public class ChatScriptEndpoint extends DefaultEndpoint { 
-    @UriPath (description = "Hostname or IP of the server on which CS server is running") 
+public class ChatScriptEndpoint extends DefaultEndpoint {
+
+    private ChatScriptBot bot;
+
+    @UriPath (description = "Hostname or IP of the server on which CS server is running")
     @Metadata(required = true)
     private String host;
     @UriPath(description = "Port on which ChatScript is listening to", defaultValue = "" + DEFAULT_PORT)
@@ -46,11 +49,11 @@ public class ChatScriptEndpoint extends DefaultEndpoint {
     @UriPath(description = "Name of the Bot in CS to converse with")
     @Metadata(required = true)
     private String botName;
-    @UriParam(description = "Username who initializes the CS conversation. To be set when chat is initialized from camel route", label = "username")
+    @UriParam(description = "Username who initializes the CS conversation. To be set when chat is initialized from camel route")
     private String chatUserName;
-    @UriParam (description = "Issues :reset command to start a new conversation everytime", label = "reset", defaultValue = "false")
-    private boolean resetchat;
-    private ChatScriptBot bot;
+    @UriParam (description = "Issues :reset command to start a new conversation everytime", defaultValue = "false")
+    private boolean resetChat;
+
     public ChatScriptEndpoint() {
     }
 
@@ -76,11 +79,11 @@ public class ChatScriptEndpoint extends DefaultEndpoint {
 
     }
     public boolean isResetChat() {
-        return resetchat;
+        return resetChat;
     }
 
-    public void setResetchat(boolean resetChat) {
-        this.resetchat = resetChat;
+    public void setResetChat(boolean resetChat) {
+        this.resetChat = resetChat;
     }
 
     public String getChatUserName() {
diff --git a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISSessionFacade.java b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISSessionFacade.java
index 7ce83d7..557304e 100644
--- a/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISSessionFacade.java
+++ b/components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CMISSessionFacade.java
@@ -236,6 +236,10 @@ public class CMISSessionFacade {
         return session.createOperationContext();
     }
 
+    public String getUsername() {
+        return username;
+    }
+
     /**
      * Username for the cmis repository
      */
@@ -243,6 +247,10 @@ public class CMISSessionFacade {
         this.username = username;
     }
 
+    public String getPassword() {
+        return password;
+    }
+
     /**
      * Password for the cmis repository
      */
@@ -250,6 +258,10 @@ public class CMISSessionFacade {
         this.password = password;
     }
 
+    public String getRepositoryId() {
+        return repositoryId;
+    }
+
     /**
      * The Id of the repository to use. If not specified the first available repository is used
      */
@@ -257,6 +269,10 @@ public class CMISSessionFacade {
         this.repositoryId = repositoryId;
     }
 
+    public boolean isReadContent() {
+        return readContent;
+    }
+
     /**
      * If set to true, the content of document node will be retrieved in addition to the properties
      */
@@ -264,6 +280,10 @@ public class CMISSessionFacade {
         this.readContent = readContent;
     }
 
+    public int getReadCount() {
+        return readCount;
+    }
+
     /**
      * Max number of nodes to read
      */
@@ -271,6 +291,10 @@ public class CMISSessionFacade {
         this.readCount = readCount;
     }
 
+    public String getQuery() {
+        return query;
+    }
+
     /**
      * The cmis query to execute against the repository.
      * If not specified, the consumer will retrieve every node from the content repository by iterating the content tree recursively
@@ -279,6 +303,10 @@ public class CMISSessionFacade {
         this.query = query;
     }
 
+    public int getPageSize() {
+        return pageSize;
+    }
+
     /**
      * Number of nodes to retrieve per page
      */
diff --git a/components/camel-couchbase/pom.xml b/components/camel-couchbase/pom.xml
index 296384d..09be1d2 100644
--- a/components/camel-couchbase/pom.xml
+++ b/components/camel-couchbase/pom.xml
@@ -49,8 +49,23 @@
         </dependency>
 
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-1.2-api</artifactId>
             <scope>test</scope>
         </dependency>
 
diff --git a/components/camel-couchbase/src/main/docs/couchbase-component.adoc b/components/camel-couchbase/src/main/docs/couchbase-component.adoc
index 989d463..43353f0 100644
--- a/components/camel-couchbase/src/main/docs/couchbase-component.adoc
+++ b/components/camel-couchbase/src/main/docs/couchbase-component.adoc
@@ -110,7 +110,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseComponentTest.java b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseComponentTest.java
index 6af8326..a2b0222 100644
--- a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseComponentTest.java
+++ b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseComponentTest.java
@@ -20,24 +20,23 @@ import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.AdditionalAnswers.returnsFirstArg;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.when;
+public class CouchbaseComponentTest extends CamelTestSupport {
 
-@RunWith(MockitoJUnitRunner.class)
-public class CouchbaseComponentTest {
+    private CouchbaseComponent component;
 
-    @Mock
-    private CamelContext context;
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = context.getComponent("couchbase",  CouchbaseComponent.class);
+    }
+
+    @Override
+    public boolean isUseRouteBuilder() {
+        return false;
+    }
 
     @Test
     public void testEndpointCreated() throws Exception {
@@ -46,14 +45,12 @@ public class CouchbaseComponentTest {
         String uri = "couchbase:http://localhost:9191/bucket";
         String remaining = "http://localhost:9191/bucket";
 
-        Endpoint endpoint = new CouchbaseComponent(context).createEndpoint(uri, remaining, params);
+        CouchbaseEndpoint endpoint = component.createEndpoint(uri, remaining, params);
         assertNotNull(endpoint);
     }
 
     @Test
     public void testPropertiesSet() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-
         Map<String, Object> params = new HashMap<>();
         params.put("username", "ugol");
         params.put("password", "pwd");
@@ -64,7 +61,7 @@ public class CouchbaseComponentTest {
         String uri = "couchdb:http://localhost:91234/bucket";
         String remaining = "http://localhost:91234/bucket";
 
-        CouchbaseEndpoint endpoint = new CouchbaseComponent(context).createEndpoint(uri, remaining, params);
+        CouchbaseEndpoint endpoint = component.createEndpoint(uri, remaining, params);
 
         assertEquals("http", endpoint.getProtocol());
         assertEquals("localhost", endpoint.getHostname());
@@ -89,8 +86,6 @@ public class CouchbaseComponentTest {
 
     @Test
     public void testCouchbaseAdditionalHosts() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-
         Map<String, Object> params = new HashMap<>();
         params.put("additionalHosts", "127.0.0.1,example.com,another-host");
         String uri = "couchbase:http://localhost/bucket?param=true";
@@ -108,8 +103,6 @@ public class CouchbaseComponentTest {
 
     @Test
     public void testCouchbaseAdditionalHostsWithSpaces() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-
         Map<String, Object> params = new HashMap<>();
         params.put("additionalHosts", " 127.0.0.1, example.com, another-host ");
         String uri = "couchbase:http://localhost/bucket?param=true";
@@ -127,8 +120,6 @@ public class CouchbaseComponentTest {
 
     @Test
     public void testCouchbaseDuplicateAdditionalHosts() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-
         Map<String, Object> params = new HashMap<>();
         params.put("additionalHosts", "127.0.0.1,localhost, localhost");
         String uri = "couchbase:http://localhost/bucket?param=true";
@@ -143,8 +134,6 @@ public class CouchbaseComponentTest {
 
     @Test
     public void testCouchbaseNullAdditionalHosts() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-
         Map<String, Object> params = new HashMap<>();
         params.put("additionalHosts", null);
         String uri = "couchbase:http://localhost/bucket?param=true";
diff --git a/components/camel-couchdb/src/test/java/org/apache/camel/component/couchdb/CouchDbComponentTest.java b/components/camel-couchdb/src/test/java/org/apache/camel/component/couchdb/CouchDbComponentTest.java
index c375dd0..5d472a6 100644
--- a/components/camel-couchdb/src/test/java/org/apache/camel/component/couchdb/CouchDbComponentTest.java
+++ b/components/camel-couchdb/src/test/java/org/apache/camel/component/couchdb/CouchDbComponentTest.java
@@ -19,26 +19,15 @@ package org.apache.camel.component.couchdb;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.AdditionalAnswers.returnsFirstArg;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.when;
+public class CouchDbComponentTest extends CamelTestSupport {
 
-@RunWith(MockitoJUnitRunner.class)
-public class CouchDbComponentTest {
-
-    @Mock
-    private CamelContext context;
+    @Override
+    public boolean isUseRouteBuilder() {
+        return false;
+    }
 
     @Test
     public void testEndpointCreated() throws Exception {
@@ -47,14 +36,12 @@ public class CouchDbComponentTest {
         String uri = "couchdb:http://localhost:5984/db";
         String remaining = "http://localhost:5984/db";
 
-        Endpoint endpoint = new CouchDbComponent(context).createEndpoint(uri, remaining, params);
+        CouchDbEndpoint endpoint = context.getComponent("couchdb", CouchDbComponent.class).createEndpoint(uri, remaining, params);
         assertNotNull(endpoint);
     }
 
     @Test
     public void testPropertiesSet() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-
         Map<String, Object> params = new HashMap<>();
         params.put("createDatabase", true);
         params.put("username", "coldplay");
@@ -67,7 +54,7 @@ public class CouchDbComponentTest {
         String uri = "couchdb:http://localhost:14/db";
         String remaining = "http://localhost:14/db";
 
-        CouchDbEndpoint endpoint = new CouchDbComponent(context).createEndpoint(uri, remaining, params);
+        CouchDbEndpoint endpoint = context.getComponent("couchdb", CouchDbComponent.class).createEndpoint(uri, remaining, params);
         assertEquals("http", endpoint.getProtocol());
         assertEquals("localhost", endpoint.getHostname());
         assertEquals("db", endpoint.getDatabase());
diff --git a/components/camel-crypto-cms/src/main/docs/crypto-cms-component.adoc b/components/camel-crypto-cms/src/main/docs/crypto-cms-component.adoc
index 8583a92..3585b75 100644
--- a/components/camel-crypto-cms/src/main/docs/crypto-cms-component.adoc
+++ b/components/camel-crypto-cms/src/main/docs/crypto-cms-component.adoc
@@ -79,7 +79,7 @@ with the following path and query parameters:
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
 | *password* (decrypt) | Sets the password of the private keys. It is assumed that all private keys in the keystore have the same password. If not set then it is assumed that the password of the private keys is given by the keystore password given in the KeyStoreParameters. |  | Char[]
-| *fromBase64* (decrypt_verify) | If true then the CMS message is base 64 encoded and must be decoded during the processing. Default value is false. | false | Boolean
+| *fromBase64* (decrypt_verify) | If true then the CMS message is base 64 encoded and must be decoded during the processing. Default value is false. | false | boolean
 | *contentEncryptionAlgorithm* (encrypt) | Encryption algorithm, for example DESede/CBC/PKCS5Padding. Further possible values: DESede/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding. |  | String
 | *originatorInformation Provider* (encrypt) | Provider for the originator info. See \https://tools.ietf.org/html/rfc5652#section-6.1. The default value is null. |  | OriginatorInformation Provider
 | *recipient* (encrypt) | Recipient Info: reference to a bean which implements the interface org.apache.camel.component.crypto.cms.api.TransRecipientInfo |  | List
@@ -88,8 +88,8 @@ with the following path and query parameters:
 | *toBase64* (encrypt_sign) | Indicates whether the Signed Data or Enveloped Data instance shall be base 64 encoded. Default value is false. | false | Boolean
 | *includeContent* (sign) | Indicates whether the signed content should be included into the Signed Data instance. If false then a detached Signed Data instance is created in the header CamelCryptoCmsSignedData. | true | Boolean
 | *signer* (sign) | Signer information: reference to bean(s) which implements org.apache.camel.component.crypto.cms.api.SignerInfo. Multiple values can be separated by comma |  | String
-| *signedDataHeaderBase64* (verify) | Indicates whether the value in the header CamelCryptoCmsSignedData is base64 encoded. Default value is false. Only relevant for detached signatures. In the detached signature case, the header contains the Signed Data object. | false | Boolean
-| *verifySignaturesOfAll Signers* (verify) | If true then the signatures of all signers contained in the Signed Data object are verified. If false then only one signature whose signer info matches with one of the specified certificates is verified. Default value is true. | true | Boolean
+| *signedDataHeaderBase64* (verify) | Indicates whether the value in the header CamelCryptoCmsSignedData is base64 encoded. Default value is false. Only relevant for detached signatures. In the detached signature case, the header contains the Signed Data object. | false | boolean
+| *verifySignaturesOfAll Signers* (verify) | If true then the signatures of all signers contained in the Signed Data object are verified. If false then only one signature whose signer info matches with one of the specified certificates is verified. Default value is true. | true | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsEndpoint.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsEndpoint.java
index 1296e79..2e85951 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsEndpoint.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/CryptoCmsEndpoint.java
@@ -64,6 +64,22 @@ public class CryptoCmsEndpoint extends DefaultEndpoint {
         return name;
     }
 
+    public SignedDataCreatorConfiguration getSignConfig() {
+        return signConfig;
+    }
+
+    public DefaultSignedDataVerifierConfiguration getVerifyConfig() {
+        return verifyConfig;
+    }
+
+    public EnvelopedDataEncryptorConfiguration getEncryptConfig() {
+        return encryptConfig;
+    }
+
+    public DefaultEnvelopedDataDecryptorConfiguration getDecryptConfig() {
+        return decryptConfig;
+    }
+
     /**
      * Set the Crypto operation from that supplied after the crypto scheme in
      * the endpoint uri e.g. crypto-cms:sign sets sign as the operation.
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnMarshallerConfiguration.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnMarshallerConfiguration.java
index e9e2ad7..257d748 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnMarshallerConfiguration.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnMarshallerConfiguration.java
@@ -16,12 +16,9 @@
  */
 package org.apache.camel.component.crypto.cms.common;
 
-import org.apache.camel.Exchange;
-import org.apache.camel.component.crypto.cms.exception.CryptoCmsException;
-
 public interface CryptoCmsUnMarshallerConfiguration {
 
     /** Indicates whether the message in-body is base 64 encocded. */
-    Boolean isFromBase64(Exchange exchange) throws CryptoCmsException;
+    boolean isFromBase64();
 
 }
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnmarshaller.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnmarshaller.java
index ac9b1e0..15de8cb 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnmarshaller.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnmarshaller.java
@@ -56,7 +56,7 @@ public abstract class CryptoCmsUnmarshaller implements Processor {
             Message out = exchange.getOut();
             out.copyFrom(exchange.getIn());
 
-            if (config.isFromBase64(exchange)) {
+            if (config.isFromBase64()) {
                 stream = new Base64InputStream(stream);
             }
             Object result = unmarshalInternal(stream, exchange);
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/DefaultCryptoCmsConfiguration.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/DefaultCryptoCmsConfiguration.java
index ef185b1..cbfe495 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/DefaultCryptoCmsConfiguration.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/DefaultCryptoCmsConfiguration.java
@@ -39,13 +39,13 @@ public abstract class DefaultCryptoCmsConfiguration {
      * public keys, decryptor private keys depending on the operation. Use
      * either this parameter or the parameter 'keystore'.
      */
-    public void setKeyStoreParameters(KeyStoreParameters keyStoreParameters) throws CryptoCmsException {
+    public void setKeyStoreParameters(KeyStoreParameters keyStoreParameters) {
         this.keyStoreParameters = keyStoreParameters;
         if (keyStoreParameters != null) {
             try {
                 this.keyStore = keyStoreParameters.createKeyStore();
             } catch (GeneralSecurityException | IOException e) {
-                throw new CryptoCmsException("Problem during generating the keystore", e);
+                throw new RuntimeException("Problem during generating the keystore", e);
             }
         }
     }
@@ -59,14 +59,11 @@ public abstract class DefaultCryptoCmsConfiguration {
         this.keyStore = keyStore;
     }
 
-    protected KeyStore getKeyStore() throws CryptoCmsException {
-        if (keyStore == null) {
-            throw new CryptoCmsException("Keystore not configured");
-        }
+    public KeyStore getKeyStore() {
         return keyStore;
     }
 
-    protected KeyStoreParameters getKeyStoreParameters() {
+    public KeyStoreParameters getKeyStoreParameters() {
         return keyStoreParameters;
     }
 }
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/DefaultCryptoCmsUnMarshallerConfiguration.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/DefaultCryptoCmsUnMarshallerConfiguration.java
index c11da86..779bada 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/DefaultCryptoCmsUnMarshallerConfiguration.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/DefaultCryptoCmsUnMarshallerConfiguration.java
@@ -16,22 +16,21 @@
  */
 package org.apache.camel.component.crypto.cms.common;
 
-import org.apache.camel.Exchange;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
 
 @UriParams
 public class DefaultCryptoCmsUnMarshallerConfiguration extends DefaultCryptoCmsConfiguration implements CryptoCmsUnMarshallerConfiguration {
 
-    @UriParam(label = "decrypt_verify", defaultValue = "false")
-    private Boolean fromBase64 = Boolean.FALSE;
+    @UriParam(label = "decrypt_verify")
+    private boolean fromBase64;
 
     public DefaultCryptoCmsUnMarshallerConfiguration() {
         super();
     }
 
     @Override
-    public Boolean isFromBase64(Exchange exchange) {
+    public boolean isFromBase64() {
         return fromBase64;
     }
 
@@ -39,7 +38,7 @@ public class DefaultCryptoCmsUnMarshallerConfiguration extends DefaultCryptoCmsC
      * If <tt>true</tt> then the CMS message is base 64 encoded and must be
      * decoded during the processing. Default value is <code>false</code>.
      */
-    public void setFromBase64(Boolean base64) {
+    public void setFromBase64(boolean base64) {
         this.fromBase64 = base64;
     }
 }
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/crypt/DefaultEnvelopedDataDecryptorConfiguration.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/crypt/DefaultEnvelopedDataDecryptorConfiguration.java
index fe1805f..cae2d7e 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/crypt/DefaultEnvelopedDataDecryptorConfiguration.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/crypt/DefaultEnvelopedDataDecryptorConfiguration.java
@@ -38,8 +38,7 @@ import org.apache.camel.spi.UriParams;
 import org.apache.camel.support.jsse.KeyStoreParameters;
 
 /**
- * The defualt implementation fetches the private key and certificate from a
- * keystore.
+ * The defualt implementation fetches the private key and certificate from a keystore.
  */
 @UriParams
 public class DefaultEnvelopedDataDecryptorConfiguration extends DefaultCryptoCmsUnMarshallerConfiguration implements EnvelopedDataDecryptorConfiguration, Cloneable {
@@ -61,27 +60,25 @@ public class DefaultEnvelopedDataDecryptorConfiguration extends DefaultCryptoCms
         this.password = password;
     }
 
-    protected char[] getPassword(Exchange exchange) throws CryptoCmsException {
+    public char[] getPassword() {
         if (password == null) {
             if (getKeyStoreParameters() != null) {
                 String passwordS = getKeyStoreParameters().getPassword();
                 if (passwordS == null) {
-                    throw new CryptoCmsException("Password for private keys not configured");
+                    throw new RuntimeException("Password for private keys not configured");
                 } else {
                     return passwordS.toCharArray();
                 }
             } else {
-                throw new CryptoCmsException("Password for private keys not configured");
+                throw new RuntimeException("Password for private keys not configured");
             }
         } else {
             return password;
         }
-
     }
 
     @Override
     public Collection<PrivateKeyWithCertificate> getPrivateKeyCertificateCollection(Exchange exchange) throws CryptoCmsException {
-
         KeyStore keystore = getKeyStore();
         try {
             List<PrivateKeyWithCertificate> privateKeys = new ArrayList<>(keystore.size());
@@ -91,10 +88,8 @@ public class DefaultEnvelopedDataDecryptorConfiguration extends DefaultCryptoCms
                     // only key entries are relevant!
                     continue;
                 }
-                Key privateKey = keystore.getKey(alias, getPassword(exchange));
-                if (privateKey instanceof PrivateKey) { // we currently only
-                                                        // support
-                                                        // assymmetric keys
+                Key privateKey = keystore.getKey(alias, getPassword());
+                if (privateKey instanceof PrivateKey) { // we currently only support assymmetric keys
                     Certificate cert = keystore.getCertificate(alias);
                     if (cert instanceof X509Certificate) {
                         privateKeys.add(new PrivateKeyWithCertificate((PrivateKey)privateKey, (X509Certificate)cert));
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/DefaultSignedDataVerifierConfiguration.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/DefaultSignedDataVerifierConfiguration.java
index bd1ab60..c863b6c 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/DefaultSignedDataVerifierConfiguration.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/DefaultSignedDataVerifierConfiguration.java
@@ -39,11 +39,11 @@ import org.apache.camel.spi.UriParams;
 @UriParams
 public class DefaultSignedDataVerifierConfiguration extends DefaultCryptoCmsUnMarshallerConfiguration implements SignedDataVerifierConfiguration, Cloneable {
 
-    @UriParam(label = "verify", defaultValue = "false")
-    private Boolean signedDataHeaderBase64 = Boolean.FALSE;
+    @UriParam(label = "verify")
+    private boolean signedDataHeaderBase64;
 
     @UriParam(label = "verify", defaultValue = "true")
-    private Boolean verifySignaturesOfAllSigners = Boolean.TRUE;
+    private boolean verifySignaturesOfAllSigners = true;
 
     /**
      * Indicates whether the value in the header CamelCryptoCmsSignedData is
@@ -52,12 +52,12 @@ public class DefaultSignedDataVerifierConfiguration extends DefaultCryptoCmsUnMa
      * Only relevant for detached signatures. In the detached signature case,
      * the header contains the Signed Data object.
      */
-    public void setSignedDataHeaderBase64(Boolean signedDataHeaderBase64) {
+    public void setSignedDataHeaderBase64(boolean signedDataHeaderBase64) {
         this.signedDataHeaderBase64 = signedDataHeaderBase64;
     }
 
     @Override
-    public Boolean isSignedDataHeaderBase64(Exchange exchange) throws CryptoCmsException {
+    public boolean isSignedDataHeaderBase64() {
         return signedDataHeaderBase64;
     }
 
@@ -67,12 +67,12 @@ public class DefaultSignedDataVerifierConfiguration extends DefaultCryptoCmsUnMa
      * signature whose signer info matches with one of the specified
      * certificates is verified. Default value is <code>true</code>.
      */
-    public void setVerifySignaturesOfAllSigners(Boolean verifySignaturesOfAllSigners) {
+    public void setVerifySignaturesOfAllSigners(boolean verifySignaturesOfAllSigners) {
         this.verifySignaturesOfAllSigners = verifySignaturesOfAllSigners;
     }
 
     @Override
-    public Boolean isVerifySignaturesOfAllSigners(Exchange exchange) throws CryptoCmsException {
+    public boolean isVerifySignaturesOfAllSigners() {
         return verifySignaturesOfAllSigners;
     }
 
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifier.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifier.java
index a97bb33..06972d2 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifier.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifier.java
@@ -170,7 +170,7 @@ public class SignedDataVerifier extends CryptoCmsUnmarshaller {
             Collection<X509CertificateHolder> certCollection = certStore.getMatches(signer.getSID());
 
             if (certCollection.isEmpty()) {
-                if (conf.isVerifySignaturesOfAllSigners(exchange)) {
+                if (conf.isVerifySignaturesOfAllSigners()) {
                     throw new CryptoCmsNoCertificateForSignerInfoException("KCS7/CMS signature verification failed. The public key for the signer information with"
                                                                            + signerInformationToString(signer) + " cannot be found in the configured certificates: "
                                                                            + certsToString(allowedVerifyCerts));
@@ -185,7 +185,7 @@ public class SignedDataVerifier extends CryptoCmsUnmarshaller {
                 if (signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider(BouncyCastleProvider.PROVIDER_NAME).build(cert))) {
                     LOG.debug("Verification successful");
                     atLeastOneSignatureVerified = true;
-                    if (!conf.isVerifySignaturesOfAllSigners(exchange)) {
+                    if (!conf.isVerifySignaturesOfAllSigners()) {
                         return;
                     }
                 } else {
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifierConfiguration.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifierConfiguration.java
index 67e0de3..42f5d60 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifierConfiguration.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifierConfiguration.java
@@ -31,7 +31,7 @@ public interface SignedDataVerifierConfiguration extends CryptoCmsUnMarshallerCo
      * {@link CryptoCmsConstants#CAMEL_CRYPTO_CMS_SIGNED_DATA} is base64
      * encoded.
      */
-    Boolean isSignedDataHeaderBase64(Exchange exchange) throws CryptoCmsException;
+    boolean isSignedDataHeaderBase64();
 
     /**
      * If <code>true</code> then the signatures of all signers are checked. If
@@ -39,7 +39,7 @@ public interface SignedDataVerifierConfiguration extends CryptoCmsUnMarshallerCo
      * with one of the specified certificates and verifies only the signature of
      * the first found signer.
      */
-    Boolean isVerifySignaturesOfAllSigners(Exchange exchange) throws CryptoCmsException;
+    boolean isVerifySignaturesOfAllSigners();
 
     /**
      * Returns the collection of certificates whose public keys are used to
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifierFromHeader.java b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifierFromHeader.java
index eff0287..d97cc3b 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifierFromHeader.java
+++ b/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/sig/SignedDataVerifierFromHeader.java
@@ -68,7 +68,7 @@ public class SignedDataVerifierFromHeader extends SignedDataVerifier {
     protected void processSignedDataHeader(Exchange exchange, InputStream signature) throws Exception { // NOPMD
         // all exceptions must be caught and re-thrown in order to make a
         // clean-up, see code below
-        if (conf.isSignedDataHeaderBase64(exchange)) {
+        if (conf.isSignedDataHeaderBase64()) {
             signature = new Base64InputStream(signature);
         }
 
@@ -79,7 +79,7 @@ public class SignedDataVerifierFromHeader extends SignedDataVerifier {
             Message out = exchange.getOut();
             out.copyFrom(exchange.getIn());
 
-            if (conf.isFromBase64(exchange)) {
+            if (conf.isFromBase64()) {
                 stream = new Base64InputStream(stream);
             }
             unmarshalInternal(stream, signature, exchange);
diff --git a/components/camel-crypto/src/main/docs/crypto-component.adoc b/components/camel-crypto/src/main/docs/crypto-component.adoc
index 8d446ca..435f738 100644
--- a/components/camel-crypto/src/main/docs/crypto-component.adoc
+++ b/components/camel-crypto/src/main/docs/crypto-component.adoc
@@ -177,7 +177,7 @@ The component supports 33 options, which are listed below.
 | *camel.component.crypto.configuration.keystore* | Sets the KeyStore that can contain keys and Certficates for use in signing and verifying exchanges. A {@link KeyStore} is typically used with an alias, either one supplied in the Route definition or dynamically via the message header "CamelSignatureKeyStoreAlias". If no alias is supplied and there is only a single entry in the Keystore, then this single entry will be used. |  | KeyStore
 | *camel.component.crypto.configuration.keystore-name* | Sets the reference name for a Keystore that can be found in the registry. |  | String
 | *camel.component.crypto.configuration.name* | The logical name of this operation. |  | String
-| *camel.component.crypto.configuration.password* | Sets the password used to access an aliased {@link PrivateKey} in the KeyStore. |  | Character[]
+| *camel.component.crypto.configuration.password* | Sets the password used to access an aliased {@link PrivateKey} in the KeyStore. |  | String
 | *camel.component.crypto.configuration.private-key* | Set the PrivateKey that should be used to sign the exchange |  | PrivateKey
 | *camel.component.crypto.configuration.private-key-name* | Sets the reference name for a PrivateKey that can be found in the registry. |  | String
 | *camel.component.crypto.configuration.provider* | Set the id of the security provider that provides the configured {@link Signature} algorithm. |  | String
diff --git a/components/camel-crypto/src/main/docs/crypto-dataformat.adoc b/components/camel-crypto/src/main/docs/crypto-dataformat.adoc
index a18962b..3cb32dc 100644
--- a/components/camel-crypto/src/main/docs/crypto-dataformat.adoc
+++ b/components/camel-crypto/src/main/docs/crypto-dataformat.adoc
@@ -68,7 +68,7 @@ The component supports 33 options, which are listed below.
 | *camel.component.crypto.configuration.keystore* | Sets the KeyStore that can contain keys and Certficates for use in signing and verifying exchanges. A {@link KeyStore} is typically used with an alias, either one supplied in the Route definition or dynamically via the message header "CamelSignatureKeyStoreAlias". If no alias is supplied and there is only a single entry in the Keystore, then this single entry will be used. |  | KeyStore
 | *camel.component.crypto.configuration.keystore-name* | Sets the reference name for a Keystore that can be found in the registry. |  | String
 | *camel.component.crypto.configuration.name* | The logical name of this operation. |  | String
-| *camel.component.crypto.configuration.password* | Sets the password used to access an aliased {@link PrivateKey} in the KeyStore. |  | Character[]
+| *camel.component.crypto.configuration.password* | Sets the password used to access an aliased {@link PrivateKey} in the KeyStore. |  | String
 | *camel.component.crypto.configuration.private-key* | Set the PrivateKey that should be used to sign the exchange |  | PrivateKey
 | *camel.component.crypto.configuration.private-key-name* | Sets the reference name for a PrivateKey that can be found in the registry. |  | String
 | *camel.component.crypto.configuration.provider* | Set the id of the security provider that provides the configured {@link Signature} algorithm. |  | String
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java
index c81eb20..a0151dc 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java
@@ -16,11 +16,16 @@
  */
 package org.apache.camel.component.crypto;
 
+import java.io.IOException;
+import java.security.GeneralSecurityException;
 import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
 import java.security.PrivateKey;
 import java.security.PublicKey;
 import java.security.SecureRandom;
 import java.security.Signature;
+import java.security.UnrecoverableKeyException;
 import java.security.cert.Certificate;
 
 import org.apache.camel.CamelContext;
@@ -59,8 +64,8 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
     private String signatureHeaderName;
     @UriParam
     private String alias;
-    @UriParam(label = "security", javaType = "java.lang.String", secret = true)
-    private char[] password;
+    @UriParam(label = "security", secret = true)
+    private String password;
     @UriParam(label = "advanced")
     private PublicKey publicKey;
     @UriParam(label = "advanced")
@@ -151,8 +156,8 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
     /**
      * Get the PrivateKey that should be used to sign the exchange
      */
-    public PrivateKey getPrivateKey() throws Exception {
-        return getPrivateKey(alias, password);
+    public PrivateKey getPrivateKey() {
+        return getPrivateKey(alias, password.toCharArray());
     }
 
     /**
@@ -162,7 +167,7 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
      * @param alias the alias used to retrieve the Certificate from the keystore.
      */
     public PrivateKey getPrivateKey(String alias) throws Exception {
-        return getPrivateKey(alias, password);
+        return getPrivateKey(alias, password.toCharArray());
     }
 
     /**
@@ -171,10 +176,14 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
      *
      * @param alias the alias used to retrieve the Certificate from the keystore.
      */
-    public PrivateKey getPrivateKey(String alias, char[] password) throws Exception {
+    public PrivateKey getPrivateKey(String alias, char[] password) {
         PrivateKey pk = null;
         if (alias != null && keystore != null) {
-            pk = (PrivateKey)keystore.getKey(alias, password);
+            try {
+                pk = (PrivateKey)keystore.getKey(alias, password);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
         }
         if (pk == null) {
             pk = privateKey;
@@ -191,6 +200,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
         this.privateKey = privateKey;
     }
 
+    public String getPrivateKeyName() {
+        return privateKeyName;
+    }
+
     /**
      * Sets the reference name for a PrivateKey that can be found in the registry.
      */
@@ -213,6 +226,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
         this.publicKey = publicKey;
     }
 
+    public String getPublicKeyName() {
+        return publicKeyName;
+    }
+
     /**
      * Sets the reference name for a publicKey that can be found in the registry.
      */
@@ -259,7 +276,7 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
      * Get the explicitly configured {@link Certificate} that should be used to
      * verify the signature in the exchange.
      */
-    public Certificate getCertificate() throws Exception {
+    public Certificate getCertificate() {
         return certificate;
     }
 
@@ -271,6 +288,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
         this.certificate = certificate;
     }
 
+    public String getCertificateName() {
+        return certificateName;
+    }
+
     /**
      * Sets the reference name for a PrivateKey that can be found in the registry.
      */
@@ -310,6 +331,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
         this.keystore = keystore;
     }
 
+    public String getKeystoreName() {
+        return keystoreName;
+    }
+
     /**
      * Sets the reference name for a Keystore that can be found in the registry.
      */
@@ -328,14 +353,14 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
     /**
      * Gets the password used to access an aliased {@link PrivateKey} in the KeyStore.
      */
-    public char[] getPassword() {
+    public String getPassword() {
         return password;
     }
 
     /**
      * Sets the password used to access an aliased {@link PrivateKey} in the KeyStore.
      */
-    public void setPassword(char[] password) {
+    public void setPassword(String password) {
         this.password = password;
     }
 
@@ -352,10 +377,14 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
      * supplied and there is only a single entry in the Keystore, then this
      * single entry will be used.
      */
-    public void setKeyStoreParameters(KeyStoreParameters keyStoreParameters) throws Exception {
+    public void setKeyStoreParameters(KeyStoreParameters keyStoreParameters) {
         this.keyStoreParameters = keyStoreParameters;
         if (keyStoreParameters != null) {
-            this.keystore = keyStoreParameters.createKeyStore();
+            try {
+                this.keystore = keyStoreParameters.createKeyStore();
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
         }
     }
 
@@ -366,6 +395,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
         return secureRandom;
     }
 
+    public String getSecureRandomName() {
+        return secureRandomName;
+    }
+
     /**
      * Sets the reference name for a SecureRandom that can be found in the registry.
      */
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java
index 9d6c26f..f8269fe 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java
@@ -58,7 +58,7 @@ public class DigitalSignatureEndpoint extends DefaultEndpoint {
         throw new UnsupportedOperationException("Digital Signatures endpoints are not meant to be consumed from. They are meant be used as an intermediate endpoints");
     }
 
-/**
+    /**
      * Sets the configuration to use
      */
     public void setConfiguration(DigitalSignatureConfiguration configuration) {
@@ -101,11 +101,11 @@ public class DigitalSignatureEndpoint extends DefaultEndpoint {
         getConfiguration().setKeystore(keystore);
     }
 
-    public char[] getPassword() {
+    public String getPassword() {
         return getConfiguration().getPassword();
     }
 
-    public void setKeyPassword(char[] keyPassword) {
+    public void setKeyPassword(String keyPassword) {
         getConfiguration().setPassword(keyPassword);
     }
 
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/processor/SigningProcessor.java b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/processor/SigningProcessor.java
index 142ee3c..dbbc43e 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/processor/SigningProcessor.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/processor/SigningProcessor.java
@@ -80,7 +80,7 @@ public class SigningProcessor extends DigitalSignatureProcessor {
         if (keystore != null) {
             password = exchange.getIn().getHeader(DigitalSignatureConstants.KEYSTORE_PASSWORD, char[].class);
             if (password == null) {
-                password = config.getPassword();
+                password = config.getPassword() != null ? config.getPassword().toCharArray() : null;
             }
         }
         return password;
diff --git a/components/camel-cxf/src/main/docs/cxf-component.adoc b/components/camel-cxf/src/main/docs/cxf-component.adoc
index c52becd..a90f54f 100644
--- a/components/camel-cxf/src/main/docs/cxf-component.adoc
+++ b/components/camel-cxf/src/main/docs/cxf-component.adoc
@@ -142,7 +142,7 @@ with the following path and query parameters:
 | *bus* (advanced) | To use a custom configured CXF Bus. |  | Bus
 | *continuationTimeout* (advanced) | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000 | long
 | *cxfBinding* (advanced) | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. |  | CxfBinding
-| *cxfEndpointConfigurer* (advanced) | This option could apply the implementation of org.apache.camel.component.cxf.CxfEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure\{ServerClient\} method of CxfEndpointConfigurer. |  | CxfEndpointConfigurer
+| *cxfConfigurer* (advanced) | This option could apply the implementation of org.apache.camel.component.cxf.CxfEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure\{ServerClient\} method of CxfEndpointConfigurer. |  | CxfConfigurer
 | *defaultBus* (advanced) | Will set the default bus when CXF endpoint create a bus by itself | false | boolean
 | *headerFilterStrategy* (advanced) | To use a custom HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
 | *mergeProtocolHeaders* (advanced) | Whether to merge protocol headers. If enabled then propagating headers between Camel and CXF becomes more consistent and similar. For more details see CAMEL-6393. | false | boolean
diff --git a/components/camel-cxf/src/main/docs/cxfrs-component.adoc b/components/camel-cxf/src/main/docs/cxfrs-component.adoc
index a2d8379..fbacacb 100644
--- a/components/camel-cxf/src/main/docs/cxfrs-component.adoc
+++ b/components/camel-cxf/src/main/docs/cxfrs-component.adoc
@@ -103,7 +103,7 @@ with the following path and query parameters:
 | *publishedEndpointUrl* (consumer) | This option can override the endpointUrl that published from the WADL which can be accessed with resource address url plus _wadl |  | String
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
-| *serviceBeans* (consumer) | The service beans which you want to export as REST service. Multiple beans can be separated by comma. |  | List
+| *serviceBeans* (consumer) | The service beans (the bean ids to lookup in the registry) which you want to export as REST service. Multiple beans can be separated by comma |  | String
 | *cookieHandler* (producer) | Configure a cookie handler to maintain a HTTP session |  | CookieHandler
 | *hostnameVerifier* (producer) | The hostname verifier to be used. Use the # notation to reference a HostnameVerifier from the registry. |  | HostnameVerifier
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
@@ -116,7 +116,7 @@ with the following path and query parameters:
 | *binding* (advanced) | To use a custom CxfBinding to control the binding between Camel Message and CXF Message. |  | CxfRsBinding
 | *bus* (advanced) | To use a custom configured CXF Bus. |  | Bus
 | *continuationTimeout* (advanced) | This option is used to set the CXF continuation timeout which could be used in CxfConsumer by default when the CXF server is using Jetty or Servlet transport. | 30000 | long
-| *cxfRsEndpointConfigurer* (advanced) | This option could apply the implementation of org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure{Server/Client} method of CxfEndpointConfigurer. |  | CxfRsEndpoint Configurer
+| *cxfRsConfigurer* (advanced) | This option could apply the implementation of org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer which supports to configure the CXF endpoint in programmatic way. User can configure the CXF server and client by implementing configure{Server/Client} method of CxfEndpointConfigurer. |  | CxfRsConfigurer
 | *defaultBus* (advanced) | Will set the default bus when CXF endpoint create a bus by itself | false | boolean
 | *headerFilterStrategy* (advanced) | To use a custom HeaderFilterStrategy to filter header to and from Camel message. |  | HeaderFilterStrategy
 | *performInvocation* (advanced) | When the option is true, Camel will perform the invocation of the resource class instance and put the response object into the exchange for further processing. | false | boolean
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/ChainedCxfEndpointConfigurer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/ChainedCxfConfigurer.java
similarity index 72%
rename from components/camel-cxf/src/main/java/org/apache/camel/component/cxf/ChainedCxfEndpointConfigurer.java
rename to components/camel-cxf/src/main/java/org/apache/camel/component/cxf/ChainedCxfConfigurer.java
index 887c995..05b4a0c 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/ChainedCxfEndpointConfigurer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/ChainedCxfConfigurer.java
@@ -20,24 +20,24 @@ import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory;
 
-public final class ChainedCxfEndpointConfigurer implements CxfEndpointConfigurer {
-    private CxfEndpointConfigurer parent;
-    private CxfEndpointConfigurer child;
+public final class ChainedCxfConfigurer implements CxfConfigurer {
+    private CxfConfigurer parent;
+    private CxfConfigurer child;
 
-    private ChainedCxfEndpointConfigurer() {
+    private ChainedCxfConfigurer() {
     }
 
-    public static ChainedCxfEndpointConfigurer create(CxfEndpointConfigurer parent, CxfEndpointConfigurer child) {
-        ChainedCxfEndpointConfigurer result = new ChainedCxfEndpointConfigurer();
+    public static ChainedCxfConfigurer create(CxfConfigurer parent, CxfConfigurer child) {
+        ChainedCxfConfigurer result = new ChainedCxfConfigurer();
         result.parent = parent;
         result.child = child;
         return result;
     }
 
-    public ChainedCxfEndpointConfigurer addChild(CxfEndpointConfigurer cxfEndpointConfigurer) {
-        ChainedCxfEndpointConfigurer result = new ChainedCxfEndpointConfigurer();
+    public ChainedCxfConfigurer addChild(CxfConfigurer cxfConfigurer) {
+        ChainedCxfConfigurer result = new ChainedCxfConfigurer();
         result.parent = this;
-        result.child = cxfEndpointConfigurer;
+        result.child = cxfConfigurer;
         return result;
     }
 
@@ -59,7 +59,7 @@ public final class ChainedCxfEndpointConfigurer implements CxfEndpointConfigurer
         child.configureServer(server);
     }
 
-    public static class NullCxfEndpointConfigurer implements CxfEndpointConfigurer {
+    public static class NullCxfConfigurer implements CxfConfigurer {
 
         @Override
         public void configure(AbstractWSDLBasedEndpointFactory factoryBean) {
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpointConfigurer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConfigurer.java
similarity index 91%
rename from components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpointConfigurer.java
rename to components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConfigurer.java
index dffeb3b..0adaf8c 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpointConfigurer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConfigurer.java
@@ -21,13 +21,14 @@ import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory;
 
 /**
- * A pluggable strategy for configuring the cxfEndpoint by using java code
+ * A pluggable strategy for configuring the CXF by using java code
  */
-public interface CxfEndpointConfigurer {
+public interface CxfConfigurer {
     
     /**
      * Configure the CXF Server/Client factory bean
-     * @param factoryBean
+     *
+     * @param factoryBean the factory bean
      */
     void configure(AbstractWSDLBasedEndpointFactory factoryBean);
     
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
index c279df1..7f16c41 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
@@ -70,8 +70,8 @@ public class CxfConsumer extends DefaultConsumer implements Suspendable {
         svrBean.setInvoker(new CxfConsumerInvoker(cxfEndpoint));
         Server server = svrBean.create();
         // Apply the server configurer if it is possible
-        if (cxfEndpoint.getCxfEndpointConfigurer() != null) {
-            cxfEndpoint.getCxfEndpointConfigurer().configureServer(server);
+        if (cxfEndpoint.getCxfConfigurer() != null) {
+            cxfEndpoint.getCxfConfigurer().configureServer(server);
         }
         server.getEndpoint().getEndpointInfo().setProperty("serviceClass", cxfEndpoint.getServiceClass());
         if (ObjectHelper.isNotEmpty(cxfEndpoint.getPublishedEndpointUrl())) {
@@ -288,7 +288,7 @@ public class CxfConsumer extends DefaultConsumer implements Suspendable {
 
             camelExchange.setProperty(Message.MTOM_ENABLED, String.valueOf(endpoint.isMtomEnabled()));
 
-            if (endpoint.getMergeProtocolHeaders()) {
+            if (endpoint.isMergeProtocolHeaders()) {
                 camelExchange.setProperty(CxfConstants.CAMEL_CXF_PROTOCOL_HEADERS_MERGED, Boolean.TRUE);
             }
             // bind the CXF request into a Camel exchange
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
index b37bedf..0f2986a 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
@@ -67,7 +67,6 @@ import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.apache.camel.support.DefaultEndpoint;
-import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.support.SynchronousDelegateProducer;
 import org.apache.camel.support.jsse.SSLContextParameters;
@@ -148,12 +147,12 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
     private String wsdlURL;
     @UriParam(label = "service")
     private Class<?> serviceClass;
-    @UriParam(label = "service", name = "portName")
-    private String portNameString;
-    private QName portName;
-    @UriParam(label = "service", name = "serviceName")
-    private String serviceNameString;
-    private QName serviceName;
+    @UriParam(label = "service")
+    private String portName;
+    private transient QName portNameQName;
+    @UriParam(label = "service")
+    private String serviceName;
+    private transient QName serviceNameQName;
     @UriParam(label = "service")
     private String bindingId;
     @UriParam(label = "service")
@@ -191,7 +190,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
     @UriParam(label = "advanced")
     private boolean mergeProtocolHeaders;
     @UriParam(label = "advanced")
-    private CxfEndpointConfigurer cxfEndpointConfigurer;
+    private CxfConfigurer cxfConfigurer;
     @UriParam(label = "advanced", defaultValue = "30000")
     private long continuationTimeout = 30000;
     @UriParam(label = "security", secret = true)
@@ -288,14 +287,14 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
             sfb.setWsdlURL(getWsdlURL());
         }
 
-        // service  name qname
-        if (getServiceName() != null) {
-            sfb.setServiceName(getServiceName());
+        // service name qname
+        if (getServiceNameAsQName() != null) {
+            sfb.setServiceName(getServiceNameAsQName());
         }
 
         // port qname
-        if (getPortName() != null) {
-            sfb.setEndpointName(getPortName());
+        if (getPortNameAsQName() != null) {
+            sfb.setEndpointName(getPortNameAsQName());
         }
 
         // apply feature here
@@ -363,7 +362,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
 
         sfb.setBus(getBus());
         sfb.setStart(false);
-        getNullSafeCxfEndpointConfigurer().configure(sfb);
+        getNullSafeCxfConfigurer().configure(sfb);
     }
 
     /**
@@ -486,13 +485,13 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
         }
 
         // service name qname
-        if (getServiceName() != null) {
-            factoryBean.setServiceName(getServiceName());
+        if (getServiceNameAsQName() != null) {
+            factoryBean.setServiceName(getServiceNameAsQName());
         }
 
         // port name qname
-        if (getPortName() != null) {
-            factoryBean.setEndpointName(getPortName());
+        if (getPortNameAsQName() != null) {
+            factoryBean.setEndpointName(getPortNameAsQName());
         }
 
         // apply feature here
@@ -561,7 +560,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
 
         factoryBean.setBus(getBus());
 
-        getNullSafeCxfEndpointConfigurer().configure(factoryBean);
+        getNullSafeCxfConfigurer().configure(factoryBean);
     }
 
     // Package private methods
@@ -769,39 +768,29 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
     /**
      * The service name this service is implementing, it maps to the wsdl:service@name.
      */
-    public void setServiceNameString(String service) {
-        serviceNameString = service;
-    }
-
-    /**
-     * The service name this service is implementing, it maps to the wsdl:service@name.
-     */
-    public void setServiceName(QName service) {
+    public void setServiceName(String service) {
         serviceName = service;
     }
 
-    /**
-     * The service name this service is implementing, it maps to the wsdl:service@name.
-     */
-    public void setService(String service) {
-        serviceNameString = service;
+    public String getServiceName() {
+        return serviceName;
     }
 
-    public QName getServiceName() {
-        if (serviceName == null && serviceNameString != null) {
-            serviceName = QName.valueOf(resolvePropertyPlaceholders(serviceNameString));
+    public QName getServiceNameAsQName() {
+        if (serviceNameQName == null && serviceName != null) {
+            serviceNameQName = QName.valueOf(resolvePropertyPlaceholders(serviceName));
         }
         //if not specify the service name and if the wsdlUrl is available,
         //parse the wsdl to see if only one service in it, if so set the only service
         //from wsdl to avoid ambiguity
-        if (serviceName == null && getWsdlURL() != null) {
+        if (serviceNameQName == null && getWsdlURL() != null) {
             // use wsdl manager to parse wsdl or get cached
             // definition
             try {
                 Definition definition = getBus().getExtension(WSDLManager.class)
                         .getDefinition(getWsdlURL());
                 if (definition.getServices().size() == 1) {
-                    serviceName = (QName) definition.getServices().keySet()
+                    serviceNameQName = (QName) definition.getServices().keySet()
                         .iterator().next();
 
                 }
@@ -809,46 +798,43 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
                 throw new RuntimeException(e);
             }
         }
-        return serviceName;
+        return serviceNameQName;
     }
 
-    public QName getPortName() {
-        if (portName == null && portNameString != null) {
-            portName = QName.valueOf(resolvePropertyPlaceholders(portNameString));
-        }
-        return portName;
+    public void setServiceNameAsQName(QName qName) {
+        this.serviceNameQName = qName;
     }
 
-    /**
-     * The endpoint name this service is implementing, it maps to the wsdl:port@name. In the format of ns:PORT_NAME where ns is a namespace prefix valid at this scope.
-     */
-    public void setPortName(QName port) {
-        portName = port;
+    public QName getPortNameAsQName() {
+        if (portNameQName == null && portName != null) {
+            portNameQName = QName.valueOf(resolvePropertyPlaceholders(portName));
+        }
+        return portNameQName;
     }
 
-    /**
-     * The endpoint name this service is implementing, it maps to the wsdl:port@name. In the format of ns:PORT_NAME where ns is a namespace prefix valid at this scope.
-     */
-    public void setPortNameString(String portNameString) {
-        this.portNameString = portNameString;
+    public void setPortNameAsQName(QName qName) {
+        this.portNameQName = qName;
     }
 
-    public void setPortName(String portName) {
-        portNameString = portName;
+    public String getPortName() {
+        return portName;
     }
 
     /**
-     * The port name this service is implementing, it maps to the wsdl:port@name.
+     * The endpoint name this service is implementing, it maps to the wsdl:port@name. In the format of ns:PORT_NAME where ns is a namespace prefix valid at this scope.
      */
-    public void setEndpointNameString(String port) {
-        portNameString = port;
+    public void setPortName(String port) {
+        portName = port;
     }
 
-    /**
-     * The port name this service is implementing, it maps to the wsdl:port@name.
-     */
-    public void setEndpointName(QName port) {
-        portName = port;
+    public void setEndpointName(String name) {
+        // this is on purpose as camel-cxf in xml-dsl uses endpoint-name as port-name
+        portName = name;
+    }
+
+    public void setEndpointNameAsQName(QName qName) {
+        // this is on purpose as camel-cxf in xml-dsl uses endpoint-name as port-name
+        portNameQName = qName;
     }
 
     public String getDefaultOperationName() {
@@ -1126,18 +1112,18 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
         this.username = username;
     }
 
-    public CxfEndpointConfigurer getChainedCxfEndpointConfigurer() {
-        return ChainedCxfEndpointConfigurer
-                .create(getNullSafeCxfEndpointConfigurer(),
-                        SslCxfEndpointConfigurer.create(sslContextParameters, getCamelContext()))
-                .addChild(HostnameVerifierCxfEndpointConfigurer.create(hostnameVerifier));
+    public CxfConfigurer getChainedCxfConfigurer() {
+        return ChainedCxfConfigurer
+                .create(getNullSafeCxfConfigurer(),
+                        SslCxfConfigurer.create(sslContextParameters, getCamelContext()))
+                .addChild(HostnameVerifierCxfConfigurer.create(hostnameVerifier));
     }
 
-    private CxfEndpointConfigurer getNullSafeCxfEndpointConfigurer() {
-        if (cxfEndpointConfigurer == null) {
-            return new ChainedCxfEndpointConfigurer.NullCxfEndpointConfigurer();
+    private CxfConfigurer getNullSafeCxfConfigurer() {
+        if (cxfConfigurer == null) {
+            return new ChainedCxfConfigurer.NullCxfConfigurer();
         } else {
-            return cxfEndpointConfigurer;
+            return cxfConfigurer;
         }
     }
 
@@ -1356,7 +1342,7 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
         this.skipFaultLogging = skipFaultLogging;
     }
 
-    public Boolean getMergeProtocolHeaders() {
+    public boolean isMergeProtocolHeaders() {
         return mergeProtocolHeaders;
     }
 
@@ -1392,16 +1378,16 @@ public class CxfEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade
         this.serviceFactoryBean = serviceFactoryBean;
     }
 
-    public CxfEndpointConfigurer getCxfEndpointConfigurer() {
-        return cxfEndpointConfigurer;
+    public CxfConfigurer getCxfConfigurer() {
+        return cxfConfigurer;
     }
 
     /**
      * This option could apply the implementation of org.apache.camel.component.cxf.CxfEndpointConfigurer which supports to configure the CXF endpoint
      * in  programmatic way. User can configure the CXF server and client by implementing configure{Server|Client} method of CxfEndpointConfigurer.
      */
-    public void setCxfEndpointConfigurer(CxfEndpointConfigurer configurer) {
-        this.cxfEndpointConfigurer = configurer;
+    public void setCxfConfigurer(CxfConfigurer configurer) {
+        this.cxfConfigurer = configurer;
     }
 
     public long getContinuationTimeout() {
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpointUtils.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpointUtils.java
index 0e5efd5..14246ef 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpointUtils.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpointUtils.java
@@ -56,32 +56,28 @@ public final class CxfEndpointUtils {
 
     // only used by test currently
     public static QName getPortName(final CxfEndpoint endpoint) {
-        if (endpoint.getPortName() != null) {
-            return endpoint.getPortName();
-        } else {
+        QName answer = endpoint.getPortNameAsQName();
+        if (answer == null) {
             String portLocalName = getCxfEndpointPropertyValue((CxfSpringEndpoint)endpoint, CxfConstants.PORT_LOCALNAME);
             String portNamespace = getCxfEndpointPropertyValue((CxfSpringEndpoint)endpoint, CxfConstants.PORT_NAMESPACE);
             if (portLocalName != null) {
-                return new QName(portNamespace, portLocalName);
-            } else {
-                return null;
-            }           
+                answer = new QName(portNamespace, portLocalName);
+            }
         }
+        return answer;
     }
 
     // only used by test currently
     public static QName getServiceName(final CxfEndpoint endpoint) {
-        if (endpoint.getServiceName() != null) {
-            return endpoint.getServiceName();
-        } else {
+        QName answer = endpoint.getServiceNameAsQName();
+        if (answer == null) {
             String serviceLocalName = getCxfEndpointPropertyValue((CxfSpringEndpoint)endpoint, CxfConstants.SERVICE_LOCALNAME);
             String serviceNamespace = getCxfEndpointPropertyValue((CxfSpringEndpoint)endpoint, CxfConstants.SERVICE_NAMESPACE);
             if (serviceLocalName != null) {
-                return new QName(serviceNamespace, serviceLocalName);
-            } else {
-                return null;
+                answer = new QName(serviceNamespace, serviceLocalName);
             }
         }
+        return answer;
     }
 
     public static boolean hasWebServiceAnnotation(Class<?> cls) {
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
index 3e0aff8..2c350a8 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
@@ -79,7 +79,7 @@ public class CxfProducer extends DefaultAsyncProducer {
         }
 
 
-        endpoint.getChainedCxfEndpointConfigurer().configureClient(client);
+        endpoint.getChainedCxfConfigurer().configureClient(client);
     }
 
     @Override
@@ -190,7 +190,7 @@ public class CxfProducer extends DefaultAsyncProducer {
         camelExchange.setProperty(CxfConstants.DATA_FORMAT_PROPERTY, dataFormat);   
         log.trace("Set Camel Exchange property: {}={}", DataFormat.class.getName(), dataFormat);
         
-        if (endpoint.getMergeProtocolHeaders()) {
+        if (endpoint.isMergeProtocolHeaders()) {
             camelExchange.setProperty(CxfConstants.CAMEL_CXF_PROTOCOL_HEADERS_MERGED, Boolean.TRUE);
         }
         
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSpringEndpoint.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSpringEndpoint.java
index 90890b2..1186787 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSpringEndpoint.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfSpringEndpoint.java
@@ -177,16 +177,16 @@ public class CxfSpringEndpoint extends CxfEndpoint implements ApplicationContext
     }
     
     public void setServiceNamespace(String serviceNamespace) {
-        QName qn = getServiceName();
+        QName qn = getServiceNameAsQName();
         if (qn == null) {
-            setServiceName(new QName(serviceNamespace, "local"));
+            setServiceNameAsQName(new QName(serviceNamespace, "local"));
         } else {
-            setServiceName(new QName(serviceNamespace, qn.getLocalPart()));
+            setServiceNameAsQName(new QName(serviceNamespace, qn.getLocalPart()));
         }
     }
 
     public String getServiceNamespace() {
-        QName qn = getServiceName();
+        QName qn = getServiceNameAsQName();
         if (qn == null) {
             return null;
         }
@@ -194,16 +194,16 @@ public class CxfSpringEndpoint extends CxfEndpoint implements ApplicationContext
     }
 
     public void setServiceLocalName(String serviceLocalName) {
-        QName qn = getServiceName();
+        QName qn = getServiceNameAsQName();
         if (qn == null) {
-            setServiceName(new QName("", serviceLocalName));
+            setServiceNameAsQName(new QName("", serviceLocalName));
         } else {
-            setServiceName(new QName(qn.getNamespaceURI(), serviceLocalName));
+            setServiceNameAsQName(new QName(qn.getNamespaceURI(), serviceLocalName));
         }
     }
 
     public String getServiceLocalName() {
-        QName qn = getServiceName();
+        QName qn = getServiceNameAsQName();
         if (qn == null) {
             return null;
         }
@@ -211,7 +211,7 @@ public class CxfSpringEndpoint extends CxfEndpoint implements ApplicationContext
     }
 
     public String getEndpointLocalName() {
-        QName qn = getPortName();
+        QName qn = getPortNameAsQName();
         if (qn == null) {
             return null;
         }
@@ -219,25 +219,25 @@ public class CxfSpringEndpoint extends CxfEndpoint implements ApplicationContext
     }
 
     public void setEndpointLocalName(String endpointLocalName) {
-        QName qn = getPortName();
+        QName qn = getPortNameAsQName();
         if (qn == null) {
-            setPortName(new QName("", endpointLocalName));
+            setPortNameAsQName(new QName("", endpointLocalName));
         } else {
-            setPortName(new QName(qn.getNamespaceURI(), endpointLocalName));
+            setPortNameAsQName(new QName(qn.getNamespaceURI(), endpointLocalName));
         }
     }
 
     public void setEndpointNamespace(String endpointNamespace) {
-        QName qn = getPortName();
+        QName qn = getPortNameAsQName();
         if (qn == null) {
-            setPortName(new QName(endpointNamespace, "local"));
+            setPortNameAsQName(new QName(endpointNamespace, "local"));
         } else {
-            setPortName(new QName(endpointNamespace, qn.getLocalPart()));
+            setPortNameAsQName(new QName(endpointNamespace, qn.getLocalPart()));
         }
     }
 
     public String getEndpointNamespace() {
-        QName qn = getPortName();
+        QName qn = getPortNameAsQName();
         if (qn == null) {
             return null;
         }
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/HostnameVerifierCxfEndpointConfigurer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/HostnameVerifierCxfConfigurer.java
similarity index 77%
rename from components/camel-cxf/src/main/java/org/apache/camel/component/cxf/HostnameVerifierCxfEndpointConfigurer.java
rename to components/camel-cxf/src/main/java/org/apache/camel/component/cxf/HostnameVerifierCxfConfigurer.java
index 0c60d5e..849776f 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/HostnameVerifierCxfEndpointConfigurer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/HostnameVerifierCxfConfigurer.java
@@ -24,17 +24,17 @@ import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory;
 import org.apache.cxf.transport.http.HTTPConduit;
 
-public final class HostnameVerifierCxfEndpointConfigurer extends AbstractHostnameVerifierEndpointConfigurer implements CxfEndpointConfigurer {
+public final class HostnameVerifierCxfConfigurer extends AbstractHostnameVerifierEndpointConfigurer implements CxfConfigurer {
 
-    private HostnameVerifierCxfEndpointConfigurer(HostnameVerifier hostnameVerifier) {
+    private HostnameVerifierCxfConfigurer(HostnameVerifier hostnameVerifier) {
         super(hostnameVerifier);
     }
 
-    public static CxfEndpointConfigurer create(HostnameVerifier hostnameVerifier) {
+    public static CxfConfigurer create(HostnameVerifier hostnameVerifier) {
         if (hostnameVerifier == null) {
-            return new ChainedCxfEndpointConfigurer.NullCxfEndpointConfigurer();
+            return new ChainedCxfConfigurer.NullCxfConfigurer();
         } else {
-            return new HostnameVerifierCxfEndpointConfigurer(hostnameVerifier);
+            return new HostnameVerifierCxfConfigurer(hostnameVerifier);
         }
     }
     @Override
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/SslCxfEndpointConfigurer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/SslCxfConfigurer.java
similarity index 75%
rename from components/camel-cxf/src/main/java/org/apache/camel/component/cxf/SslCxfEndpointConfigurer.java
rename to components/camel-cxf/src/main/java/org/apache/camel/component/cxf/SslCxfConfigurer.java
index e13f787..c4ca41b 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/SslCxfEndpointConfigurer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/SslCxfConfigurer.java
@@ -24,18 +24,18 @@ import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory;
 import org.apache.cxf.transport.http.HTTPConduit;
 
-public final class SslCxfEndpointConfigurer extends AbstractSslEndpointConfigurer implements CxfEndpointConfigurer {
+public final class SslCxfConfigurer extends AbstractSslEndpointConfigurer implements CxfConfigurer {
 
-    private SslCxfEndpointConfigurer(SSLContextParameters sslContextParameters,
-                                     CamelContext camelContext) {
+    private SslCxfConfigurer(SSLContextParameters sslContextParameters,
+                             CamelContext camelContext) {
         super(sslContextParameters, camelContext);
     }
 
-    public static CxfEndpointConfigurer create(SSLContextParameters sslContextParameters, CamelContext camelContext) {
+    public static CxfConfigurer create(SSLContextParameters sslContextParameters, CamelContext camelContext) {
         if (sslContextParameters == null) {
-            return new ChainedCxfEndpointConfigurer.NullCxfEndpointConfigurer();
+            return new ChainedCxfConfigurer.NullCxfConfigurer();
         } else {
-            return new SslCxfEndpointConfigurer(sslContextParameters, camelContext);
+            return new SslCxfConfigurer(sslContextParameters, camelContext);
         }
     }
 
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/ChainedCxfRsEndpointConfigurer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/ChainedCxfRsConfigurer.java
similarity index 71%
rename from components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/ChainedCxfRsEndpointConfigurer.java
rename to components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/ChainedCxfRsConfigurer.java
index 9ca3954..642b784 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/ChainedCxfRsEndpointConfigurer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/ChainedCxfRsConfigurer.java
@@ -20,23 +20,23 @@ import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean;
 import org.apache.cxf.jaxrs.client.Client;
 
-public final class ChainedCxfRsEndpointConfigurer implements CxfRsEndpointConfigurer {
-    private CxfRsEndpointConfigurer parent;
-    private CxfRsEndpointConfigurer child;
+public final class ChainedCxfRsConfigurer implements CxfRsConfigurer {
+    private CxfRsConfigurer parent;
+    private CxfRsConfigurer child;
 
-    private ChainedCxfRsEndpointConfigurer() {
+    private ChainedCxfRsConfigurer() {
     }
 
-    public static ChainedCxfRsEndpointConfigurer create(CxfRsEndpointConfigurer parent,
-                                                        CxfRsEndpointConfigurer child) {
-        ChainedCxfRsEndpointConfigurer result = new ChainedCxfRsEndpointConfigurer();
+    public static ChainedCxfRsConfigurer create(CxfRsConfigurer parent,
+                                                CxfRsConfigurer child) {
+        ChainedCxfRsConfigurer result = new ChainedCxfRsConfigurer();
         result.parent = parent;
         result.child = child;
         return result;
     }
 
-    public ChainedCxfRsEndpointConfigurer addChild(CxfRsEndpointConfigurer cxfEndpointConfigurer) {
-        ChainedCxfRsEndpointConfigurer result = new ChainedCxfRsEndpointConfigurer();
+    public ChainedCxfRsConfigurer addChild(CxfRsConfigurer cxfEndpointConfigurer) {
+        ChainedCxfRsConfigurer result = new ChainedCxfRsConfigurer();
         result.parent = this;
         result.child = cxfEndpointConfigurer;
         return result;
@@ -60,7 +60,7 @@ public final class ChainedCxfRsEndpointConfigurer implements CxfRsEndpointConfig
         child.configureServer(server);
     }
 
-    public static class NullCxfRsEndpointConfigurer implements CxfRsEndpointConfigurer {
+    public static class NullCxfRsConfigurer implements CxfRsConfigurer {
 
         @Override
         public void configure(AbstractJAXRSFactoryBean factoryBean) {
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointConfigurer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsConfigurer.java
similarity index 90%
rename from components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointConfigurer.java
rename to components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsConfigurer.java
index d2759ef..fe3cf7e 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointConfigurer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsConfigurer.java
@@ -21,13 +21,14 @@ import org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean;
 import org.apache.cxf.jaxrs.client.Client;
 
 /**
- * A pluggable strategy for configuring the cxfRsEndpoint by using java code
+ * A pluggable strategy for configuring the Camel CXF RS by using java code
  */
-public interface CxfRsEndpointConfigurer {
+public interface CxfRsConfigurer {
     
     /**
      * Configure the CXF-RS Server/Client factory bean
-     * @param factoryBean
+     *
+     * @param factoryBean the factory bean
      */
     void configure(AbstractJAXRSFactoryBean factoryBean);
     
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
index 8fa976e..84f1331 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
@@ -84,7 +84,7 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
     @UriParam
     private List<Class<?>> resourceClasses;
     @UriParam(label = "consumer,advanced")
-    private List<Object> serviceBeans;
+    private String serviceBeans;
     @UriParam
     private String modelRef;
     @UriParam(label = "consumer", defaultValue = "Default")
@@ -129,7 +129,7 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
     @UriParam(label = "advanced")
     private boolean propagateContexts;
     @UriParam(label = "advanced")
-    private CxfRsEndpointConfigurer cxfRsEndpointConfigurer;
+    private CxfRsConfigurer cxfRsConfigurer;
     @UriParam(label = "producer")
     private CookieHandler cookieHandler;
 
@@ -219,11 +219,11 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
         return skipFaultLogging;
     }
 
-    public CxfRsEndpointConfigurer getChainedCxfRsEndpointConfigurer() {
-        return ChainedCxfRsEndpointConfigurer
+    public CxfRsConfigurer getChainedCxfRsEndpointConfigurer() {
+        return ChainedCxfRsConfigurer
                 .create(getNullSafeCxfRsEndpointConfigurer(),
-                        SslCxfRsEndpointConfigurer.create(sslContextParameters, getCamelContext()))
-                .addChild(HostnameVerifierCxfRsEndpointConfigurer.create(hostnameVerifier));
+                        SslCxfRsConfigurer.create(sslContextParameters, getCamelContext()))
+                .addChild(HostnameVerifierCxfRsConfigurer.create(hostnameVerifier));
     }
     /**
      * This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches.
@@ -247,8 +247,9 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
         if (getResourceClasses() != null) {
             sfb.setResourceClasses(getResourceClasses());
         }
-        if (serviceBeans != null && !serviceBeans.isEmpty()) {
-            sfb.setServiceBeans(serviceBeans);
+        if (serviceBeans != null) {
+            List<Object> beans = EndpointHelper.resolveReferenceListParameter(getCamelContext(), serviceBeans, Object.class);
+            sfb.setServiceBeans(beans);
         }
 
         // setup the resource providers for interfaces
@@ -264,11 +265,11 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
         getNullSafeCxfRsEndpointConfigurer().configure(sfb);
     }
 
-    protected CxfRsEndpointConfigurer getNullSafeCxfRsEndpointConfigurer() {
-        if (cxfRsEndpointConfigurer == null) {
-            return new ChainedCxfRsEndpointConfigurer.NullCxfRsEndpointConfigurer();
+    protected CxfRsConfigurer getNullSafeCxfRsEndpointConfigurer() {
+        if (cxfRsConfigurer == null) {
+            return new ChainedCxfRsConfigurer.NullCxfRsConfigurer();
         }
-        return cxfRsEndpointConfigurer;
+        return cxfRsConfigurer;
     }
 
     private void processResourceModel(JAXRSServerFactoryBean sfb) {
@@ -436,33 +437,18 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
         setResourceClasses(Arrays.asList(classes));
     }
 
-    public List<?> getServiceBeans() {
+    public String getServiceBeans() {
         return serviceBeans;
     }
 
-    public void addServiceBean(Object bean) {
-        if (serviceBeans == null) {
-            serviceBeans = new ArrayList<>();
-        }
-        serviceBeans.add(bean);
-    }
-
     /**
-     * The service beans which you want to export as REST service. Multiple beans can be separated by comma.
+     * The service beans (the bean ids to lookup in the registry) which you want to export as REST service.
+     * Multiple beans can be separated by comma
      */
-    public void setServiceBeans(List<?> beans) {
-        this.serviceBeans = new ArrayList<Object>(beans);
-    }
-
-    public void setServiceBeans(Object... beans) {
-        setServiceBeans(Arrays.asList(beans));
-    }
-
     public void setServiceBeans(String beans) {
-        setServiceBeans(EndpointHelper.resolveReferenceListParameter(getCamelContext(), beans, Object.class));
+        this.serviceBeans = beans;
     }
 
-
     /**
      * The service publish address.
      */
@@ -470,6 +456,10 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
         this.address = address;
     }
 
+    public String getModelRef() {
+        return modelRef;
+    }
+
     /**
      * This option is used to specify the model file which is useful for the resource class without annotation.
      * When using this option, then the service class can be omitted, to emulate document-only endpoints
@@ -822,16 +812,16 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
         this.hostnameVerifier = hostnameVerifier;
     }
 
-    public CxfRsEndpointConfigurer getCxfRsEndpointConfigurer() {
-        return cxfRsEndpointConfigurer;
+    public CxfRsConfigurer getCxfRsConfigurer() {
+        return cxfRsConfigurer;
     }
 
     /**
      * This option could apply the implementation of org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer which supports to configure the CXF endpoint
      * in  programmatic way. User can configure the CXF server and client by implementing configure{Server/Client} method of CxfEndpointConfigurer.
      */
-    public void setCxfRsEndpointConfigurer(CxfRsEndpointConfigurer configurer) {
-        this.cxfRsEndpointConfigurer = configurer;
+    public void setCxfRsConfigurer(CxfRsConfigurer configurer) {
+        this.cxfRsConfigurer = configurer;
     }
 
     public CookieHandler getCookieHandler() {
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/HostnameVerifierCxfRsEndpointConfigurer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/HostnameVerifierCxfRsConfigurer.java
similarity index 77%
rename from components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/HostnameVerifierCxfRsEndpointConfigurer.java
rename to components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/HostnameVerifierCxfRsConfigurer.java
index 84649ec..e6b27e6 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/HostnameVerifierCxfRsEndpointConfigurer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/HostnameVerifierCxfRsConfigurer.java
@@ -25,17 +25,17 @@ import org.apache.cxf.jaxrs.client.Client;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.transport.http.HTTPConduit;
 
-public final class HostnameVerifierCxfRsEndpointConfigurer extends AbstractHostnameVerifierEndpointConfigurer implements CxfRsEndpointConfigurer {
+public final class HostnameVerifierCxfRsConfigurer extends AbstractHostnameVerifierEndpointConfigurer implements CxfRsConfigurer {
 
-    private HostnameVerifierCxfRsEndpointConfigurer(HostnameVerifier hostnameVerifier) {
+    private HostnameVerifierCxfRsConfigurer(HostnameVerifier hostnameVerifier) {
         super(hostnameVerifier);
     }
 
-    public static CxfRsEndpointConfigurer create(HostnameVerifier hostnameVerifier) {
+    public static CxfRsConfigurer create(HostnameVerifier hostnameVerifier) {
         if (hostnameVerifier == null) {
-            return new ChainedCxfRsEndpointConfigurer.NullCxfRsEndpointConfigurer();
+            return new ChainedCxfRsConfigurer.NullCxfRsConfigurer();
         } else {
-            return new HostnameVerifierCxfRsEndpointConfigurer(hostnameVerifier);
+            return new HostnameVerifierCxfRsConfigurer(hostnameVerifier);
         }
     }
     @Override
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/SslCxfRsEndpointConfigurer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/SslCxfRsConfigurer.java
similarity index 75%
rename from components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/SslCxfRsEndpointConfigurer.java
rename to components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/SslCxfRsConfigurer.java
index b3ec4e9..0f11fa6 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/SslCxfRsEndpointConfigurer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/SslCxfRsConfigurer.java
@@ -25,18 +25,18 @@ import org.apache.cxf.jaxrs.client.Client;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.transport.http.HTTPConduit;
 
-public final class SslCxfRsEndpointConfigurer extends AbstractSslEndpointConfigurer implements CxfRsEndpointConfigurer {
+public final class SslCxfRsConfigurer extends AbstractSslEndpointConfigurer implements CxfRsConfigurer {
 
-    private SslCxfRsEndpointConfigurer(SSLContextParameters sslContextParameters,
-                                       CamelContext camelContext) {
+    private SslCxfRsConfigurer(SSLContextParameters sslContextParameters,
+                               CamelContext camelContext) {
         super(sslContextParameters, camelContext);
     }
 
-    public static CxfRsEndpointConfigurer create(SSLContextParameters sslContextParameters, CamelContext camelContext) {
+    public static CxfRsConfigurer create(SSLContextParameters sslContextParameters, CamelContext camelContext) {
         if (sslContextParameters == null) {
-            return new ChainedCxfRsEndpointConfigurer.NullCxfRsEndpointConfigurer();
+            return new ChainedCxfRsConfigurer.NullCxfRsConfigurer();
         } else {
-            return new SslCxfRsEndpointConfigurer(sslContextParameters, camelContext);
+            return new SslCxfRsConfigurer(sslContextParameters, camelContext);
         }
     }
 
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java
index 5dd3d9d..10415fd 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanDefinitionParser.java
@@ -61,10 +61,10 @@ public class CxfEndpointBeanDefinitionParser extends AbstractCxfBeanDefinitionPa
         if ("endpointName".equals(name) || "serviceName".equals(name)) {
             if (isSpringPlaceHolder(val)) {
                 // set the property with the String value directly
-                mapToProperty(bean, name + "String", val);
+                mapToProperty(bean, name, val);
             } else {
                 QName q = parseQName(e, val);
-                bean.addPropertyValue(name, q);
+                bean.addPropertyValue(name + "AsQName", q);
             }
         } else {
             mapToProperty(bean, name, val);
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfEndpointTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfEndpointTest.java
index d499155..9826f89 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfEndpointTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfEndpointTest.java
@@ -100,12 +100,12 @@ public class CxfEndpointTest extends Assert {
     @Test
     public void testCxfEndpointConfigurer() throws Exception {
         SimpleRegistry registry = new SimpleRegistry();
-        CxfEndpointConfigurer configurer = mock(CxfEndpointConfigurer.class);
+        CxfConfigurer configurer = mock(CxfConfigurer.class);
         Processor processor = mock(Processor.class);
         registry.bind("myConfigurer", configurer);
         CamelContext camelContext = new DefaultCamelContext(registry);
         CxfComponent cxfComponent = new CxfComponent(camelContext);
-        CxfEndpoint endpoint = (CxfEndpoint)cxfComponent.createEndpoint(routerEndpointURI + "&cxfEndpointConfigurer=#myConfigurer");
+        CxfEndpoint endpoint = (CxfEndpoint)cxfComponent.createEndpoint(routerEndpointURI + "&cxfConfigurer=#myConfigurer");
 
         Consumer consumer = endpoint.createConsumer(processor);
         consumer.start();
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfJavaOnlyCamelContextAwareTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfJavaOnlyCamelContextAwareTest.java
index b6c248f..57b7d5c 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfJavaOnlyCamelContextAwareTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfJavaOnlyCamelContextAwareTest.java
@@ -65,8 +65,8 @@ public class CxfJavaOnlyCamelContextAwareTest extends CamelTestSupport {
             public void configure() throws Exception {
                 CxfEndpoint endpoint = new CxfEndpoint();
                 endpoint.setAddress("http://localhost:" + port1 + "/PersonService");
-                endpoint.setServiceName(new QName("http://camel.apache.org/wsdl-first", "PersonService"));
-                endpoint.setPortName(new QName("http://camel.apache.org/wsdl-first", "soap"));
+                endpoint.setServiceNameAsQName(new QName("http://camel.apache.org/wsdl-first", "PersonService"));
+                endpoint.setPortNameAsQName(new QName("http://camel.apache.org/wsdl-first", "soap"));
                 endpoint.setWsdlURL("classpath:person.wsdl");
                 endpoint.setDataFormat(DataFormat.PAYLOAD);
                 context.addEndpoint("personService", endpoint);
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfTimeoutTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfTimeoutTest.java
index 31783b8..9670b36 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfTimeoutTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfTimeoutTest.java
@@ -24,7 +24,6 @@ import javax.xml.ws.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.component.cxf.common.message.CxfConstants;
-import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.spring.CamelSpringTestSupport;
 import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.endpoint.Server;
@@ -72,7 +71,7 @@ public class CxfTimeoutTest extends CamelSpringTestSupport {
     
     @Test
     public void testInvokingJaxWsServerWithCxfEndpointWithConfigurer() throws Exception {
-        Exchange reply = sendJaxWsMessage("cxf://bean:springEndpoint?cxfEndpointConfigurer=#myConfigurer");
+        Exchange reply = sendJaxWsMessage("cxf://bean:springEndpoint?cxfConfigurer=#myConfigurer");
         // we don't expect the exception here
         assertFalse("We don't expect the exception here", reply.isFailed());
         assertEquals("Get a wrong response", "Greet Hello World!", reply.getOut().getBody(String.class));
@@ -113,7 +112,7 @@ public class CxfTimeoutTest extends CamelSpringTestSupport {
         return new ClassPathXmlApplicationContext("org/apache/camel/component/cxf/cxfConduitTimeOutContext.xml");
     }
     
-    public static class MyCxfEndpointConfigurer implements CxfEndpointConfigurer {
+    public static class MyCxfConfigurer implements CxfConfigurer {
 
         @Override
         public void configure(AbstractWSDLBasedEndpointFactory factoryBean) {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java
index a60b9f8..9d876c3 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java
@@ -75,11 +75,11 @@ public class CxfRsConsumerTest extends CamelTestSupport {
             + "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceDefaultHandlerModel.xml";
     private static final String CXF_RS_ENDPOINT_URI6 =
             "cxfrs://http://localhost:" + CXT + "/rest6?"
-            + "performInvocation=true&serviceBeans=#serviceBean";
+            + "performInvocation=true&serviceBeans=#myServiceBean";
 
     @Override
     protected void bindToRegistry(Registry registry) throws Exception {
-        registry.bind("serviceBean", new CustomerService());
+        registry.bind("myServiceBean", new CustomerService());
     }
 
     @Override
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerEndpointConfigurerTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerEndpointConfigurerTest.java
index 511e9be..08ceeb8 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerEndpointConfigurerTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerEndpointConfigurerTest.java
@@ -43,7 +43,7 @@ public class CxfRsProducerEndpointConfigurerTest extends CamelTestSupport {
                 endpoint.setCamelContext(context);
                 endpoint.setResourceClasses(CustomerService.class);
                 endpoint.setEndpointUriIfNotSpecified("cxfrs:simple");
-                endpoint.setCxfRsEndpointConfigurer(new MyCxfRsEndpointConfigurer());
+                endpoint.setCxfRsConfigurer(new MyCxfRsConfigurer());
 
                 from("direct:start")
                         .to(endpoint)
@@ -87,7 +87,7 @@ public class CxfRsProducerEndpointConfigurerTest extends CamelTestSupport {
         assertMockEndpointsSatisfied();
     }
 
-    public static class MyCxfRsEndpointConfigurer implements CxfRsEndpointConfigurer {
+    public static class MyCxfRsConfigurer implements CxfRsConfigurer {
 
         @Override
         public void configure(AbstractJAXRSFactoryBean factoryBean) {
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java
index db00c5a..1b71547 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java
@@ -60,8 +60,8 @@ public class CxfEndpointBeanTest extends AbstractSpringBeanTestSupport {
         assertEquals("Got the wrong continuationTimeout", 60000, routerEndpoint.getContinuationTimeout());
         
         CxfEndpoint myEndpoint = ctx.getBean("myEndpoint", CxfEndpoint.class);
-        assertEquals("Got the wrong endpointName", endpointName, myEndpoint.getPortName());
-        assertEquals("Got the wrong serviceName", serviceName, myEndpoint.getServiceName());
+        assertEquals("Got the wrong endpointName", endpointName, myEndpoint.getPortNameAsQName());
+        assertEquals("Got the wrong serviceName", serviceName, myEndpoint.getServiceNameAsQName());
         assertEquals("loggingFeatureEnabled should be true", true, myEndpoint.isLoggingFeatureEnabled());
         assertEquals("loggingSizeLimit should be set", 200, myEndpoint.getLoggingSizeLimit());
         assertTrue("We should get a soap binding", myEndpoint.getBindingConfig() instanceof SoapBindingConfiguration);
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeansRouterTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeansRouterTest.java
index 4a56804..256e16b 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeansRouterTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeansRouterTest.java
@@ -98,9 +98,9 @@ public class CxfEndpointBeansRouterTest extends AbstractSpringBeanTestSupport {
         assertEquals("Got a wrong address", "http://localhost:9000/testEndpoint", testEndpoint.getAddress());
         assertEquals("Got a wrong bindingId", "http://schemas.xmlsoap.org/wsdl/soap12/", testEndpoint.getBindingId());
         assertEquals("Got a wrong transportId", "http://cxf.apache.org/transports/http", testEndpoint.getTransportId());
-        assertEquals("Got a wrong endpointName", endpointName, testEndpoint.getPortName());
+        assertEquals("Got a wrong endpointName", endpointName, testEndpoint.getPortNameAsQName());
         assertEquals("Got a wrong WsdlURL", "wsdl/test.wsdl", testEndpoint.getWsdlURL());
-        assertEquals("Got a wrong serviceName", serviceName, testEndpoint.getServiceName());
+        assertEquals("Got a wrong serviceName", serviceName, testEndpoint.getServiceNameAsQName());
     }
    
 }
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsTest.java
index f5a7291..16ab35b 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsTest.java
@@ -66,7 +66,7 @@ public class CxfEndpointUtilsTest extends Assert {
     @Test
     public void testGetProperties() throws Exception {
         CxfEndpoint endpoint = createEndpoint(getEndpointURI());
-        QName service = endpoint.getServiceName();
+        QName service = endpoint.getServiceNameAsQName();
         assertEquals("We should get the right service name", service, SERVICE_NAME);
     }
 
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsWithSpringTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsWithSpringTest.java
index 015f6e3..9294fe2 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsWithSpringTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/CxfEndpointUtilsWithSpringTest.java
@@ -82,7 +82,7 @@ public class CxfEndpointUtilsWithSpringTest extends CxfEndpointUtilsTest {
     @Test
     public void testGetProperties() throws Exception {
         CxfSpringEndpoint endpoint = (CxfSpringEndpoint)createEndpoint(getEndpointURI());
-        QName service = endpoint.getServiceName();
+        QName service = endpoint.getServiceNameAsQName();
         assertEquals("We should get the right service name", SERVICE_NAME, service);
         assertEquals("The cxf endpoint's DataFromat should be RAW", DataFormat.RAW,
                      endpoint.getDataFormat().dealias());
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfConduitTimeOutContext.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfConduitTimeOutContext.xml
index d41ae82..324f65d 100644
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfConduitTimeOutContext.xml
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfConduitTimeOutContext.xml
@@ -47,7 +47,7 @@
     </http-conf:conduit>
 
     <!-- setup the CxfEndpointConfigurer bean here -->
-    <bean id="myConfigurer" class="org.apache.camel.component.cxf.CxfTimeoutTest$MyCxfEndpointConfigurer"/>
+    <bean id="myConfigurer" class="org.apache.camel.component.cxf.CxfTimeoutTest$MyCxfConfigurer"/>
 
     <bean id="defaultHostnameVerifier" class="org.apache.cxf.transport.https.httpclient.DefaultHostnameVerifier"/>
 
diff --git a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorComponent.java b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorComponent.java
index f596dd0..5717fd7 100644
--- a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorComponent.java
+++ b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorComponent.java
@@ -93,18 +93,21 @@ public class DisruptorComponent extends DefaultComponent {
             throw new IllegalArgumentException("The 'pollTimeout' argument is not supported by the Disruptor component");
         }
 
-        final DisruptorWaitStrategy waitStrategy = getAndRemoveParameter(parameters, "waitStrategy", DisruptorWaitStrategy.class, defaultWaitStrategy);
-        final DisruptorProducerType producerType = getAndRemoveParameter(parameters, "producerType", DisruptorProducerType.class, defaultProducerType);
-        final boolean multipleConsumers = getAndRemoveParameter(parameters, "multipleConsumers", boolean.class, defaultMultipleConsumers);
-        final boolean blockWhenFull = getAndRemoveParameter(parameters, "blockWhenFull", boolean.class, defaultBlockWhenFull);
-
-        final DisruptorReference disruptorReference = getOrCreateDisruptor(uri, remaining, size, producerType, waitStrategy);
-        final DisruptorEndpoint disruptorEndpoint = new DisruptorEndpoint(uri, this, disruptorReference, concurrentConsumers, multipleConsumers, blockWhenFull);
-        disruptorEndpoint.setWaitStrategy(waitStrategy);
-        disruptorEndpoint.setProducerType(producerType);
-        disruptorEndpoint.configureProperties(parameters);
-
-        return disruptorEndpoint;
+        DisruptorWaitStrategy waitStrategy = getAndRemoveParameter(parameters, "waitStrategy", DisruptorWaitStrategy.class, defaultWaitStrategy);
+        DisruptorProducerType producerType = getAndRemoveParameter(parameters, "producerType", DisruptorProducerType.class, defaultProducerType);
+        boolean multipleConsumers = getAndRemoveParameter(parameters, "multipleConsumers", boolean.class, defaultMultipleConsumers);
+        boolean blockWhenFull = getAndRemoveParameter(parameters, "blockWhenFull", boolean.class, defaultBlockWhenFull);
+
+        DisruptorReference disruptorReference = getOrCreateDisruptor(uri, remaining, size, producerType, waitStrategy);
+        DisruptorEndpoint answer = new DisruptorEndpoint(uri, this, disruptorReference);
+        answer.setConcurrentConsumers(concurrentConsumers);
+        answer.setMultipleConsumers(multipleConsumers);
+        answer.setBlockWhenFull(blockWhenFull);
+        answer.setWaitStrategy(waitStrategy);
+        answer.setProducerType(producerType);
+        answer.configureProperties(parameters);
+
+        return answer;
     }
 
     private DisruptorReference getOrCreateDisruptor(final String uri, final String name, final int size,
diff --git a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorEndpoint.java b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorEndpoint.java
index 9b81e7f..d5dcdcd 100644
--- a/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorEndpoint.java
+++ b/components/camel-disruptor/src/main/java/org/apache/camel/component/disruptor/DisruptorEndpoint.java
@@ -61,9 +61,9 @@ public class DisruptorEndpoint extends DefaultEndpoint implements AsyncEndpoint,
     @UriPath(description = "Name of queue") @Metadata(required = true)
     private String name;
     @UriParam(label = "consumer", defaultValue = "1")
-    private final int concurrentConsumers;
+    private int concurrentConsumers;
     @UriParam(label = "consumer")
-    private final boolean multipleConsumers;
+    private boolean multipleConsumers;
     @UriParam(label = "producer", defaultValue = "IfReplyExpected")
     private WaitForTaskToComplete waitForTaskToComplete = WaitForTaskToComplete.IfReplyExpected;
     @UriParam(label = "producer", defaultValue = "30000")
@@ -78,14 +78,10 @@ public class DisruptorEndpoint extends DefaultEndpoint implements AsyncEndpoint,
     private DisruptorProducerType producerType;
 
     public DisruptorEndpoint(final String endpointUri, final Component component,
-                             final DisruptorReference disruptorReference, final int concurrentConsumers,
-                             final boolean multipleConsumers, boolean blockWhenFull) throws Exception {
+                             final DisruptorReference disruptorReference) {
         super(endpointUri, component);
         this.disruptorReference = disruptorReference;
         this.name = disruptorReference.getName();
-        this.concurrentConsumers = concurrentConsumers;
-        this.multipleConsumers = multipleConsumers;
-        this.blockWhenFull = blockWhenFull;
     }
 
     @ManagedAttribute(description = "Queue name")
@@ -108,14 +104,18 @@ public class DisruptorEndpoint extends DefaultEndpoint implements AsyncEndpoint,
         return getDisruptor().getPendingExchangeCount();
     }
 
-    /**
-     * Number of concurrent threads processing exchanges.
-     */
     @ManagedAttribute(description = "Number of concurrent consumers")
     public int getConcurrentConsumers() {
         return concurrentConsumers;
     }
 
+    /**
+     * Number of concurrent threads processing exchanges.
+     */
+    public void setConcurrentConsumers(int concurrentConsumers) {
+        this.concurrentConsumers = concurrentConsumers;
+    }
+
     @ManagedAttribute(description = "Option to specify whether the caller should wait for the async task to complete or not before continuing")
     public WaitForTaskToComplete getWaitForTaskToComplete() {
         return waitForTaskToComplete;
@@ -165,14 +165,18 @@ public class DisruptorEndpoint extends DefaultEndpoint implements AsyncEndpoint,
         return isMultipleConsumers();
     }
 
+    public boolean isMultipleConsumers() {
+        return multipleConsumers;
+    }
+
     /**
      * Specifies whether multiple consumers are allowed.
      * If enabled, you can use Disruptor for Publish-Subscribe messaging.
      * That is, you can send a message to the queue and have each consumer receive a copy of the message.
      * When enabled, this option should be specified on every consumer endpoint.
      */
-    public boolean isMultipleConsumers() {
-        return multipleConsumers;
+    public void setMultipleConsumers(boolean multipleConsumers) {
+        this.multipleConsumers = multipleConsumers;
     }
 
     /**
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerConfiguration.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerConfiguration.java
index dab3b54..b5ebf30 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerConfiguration.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerConfiguration.java
@@ -189,7 +189,7 @@ public class DockerConfiguration implements Cloneable {
         this.maxPerRouteConnections = maxPerRouteConnections;
     }
 
-    public boolean isLoggingFilterEnabled() {
+    public boolean isLoggingFilter() {
         return loggingFilter;
     }
 
@@ -200,7 +200,7 @@ public class DockerConfiguration implements Cloneable {
         this.loggingFilter = loggingFilterEnabled;
     }
 
-    public boolean isFollowRedirectFilterEnabled() {
+    public boolean isFollowRedirectFilter() {
         return followRedirectFilter;
     }
 
diff --git a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxEndpoint.java b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxEndpoint.java
index 07cfca3..379723b 100644
--- a/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxEndpoint.java
+++ b/components/camel-dropbox/src/main/java/org/apache/camel/component/dropbox/DropboxEndpoint.java
@@ -55,6 +55,10 @@ public class DropboxEndpoint extends DefaultEndpoint {
         this.configuration = configuration;
     }
 
+    public DropboxConfiguration getConfiguration() {
+        return configuration;
+    }
+
     /**
      * Create one of the camel producer available based on the configuration
      * @return the camel producer
diff --git a/components/camel-ehcache/src/main/docs/ehcache-component.adoc b/components/camel-ehcache/src/main/docs/ehcache-component.adoc
index 7554c48..c36266f 100644
--- a/components/camel-ehcache/src/main/docs/ehcache-component.adoc
+++ b/components/camel-ehcache/src/main/docs/ehcache-component.adoc
@@ -98,9 +98,9 @@ with the following path and query parameters:
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *configuration* (advanced) | The default cache configuration to be used to create caches. |  | CacheConfiguration
 | *configurations* (advanced) | A map of cache configuration to be used to create caches. |  | Map
-| *keyType* (advanced) | The cache key type, default java.lang.Object | java.lang.Object | String
+| *keyType* (advanced) | The cache key type, default java.lang.Object |  | String
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *valueType* (advanced) | The cache value type, default java.lang.Object | java.lang.Object | String
+| *valueType* (advanced) | The cache value type, default java.lang.Object |  | String
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
@@ -143,8 +143,8 @@ The component supports 25 options, which are listed below.
 | *camel.component.ehcache.configuration.event-ordering* | Set the delivery mode (ordered, unordered) |  | EventOrdering
 | *camel.component.ehcache.configuration.event-types* | Set the type of events to listen for |  | Set
 | *camel.component.ehcache.configuration.key* | To configure the default action key. If a key is set in the message header, then the key from the header takes precedence. |  | Object
-| *camel.component.ehcache.configuration.key-type* | The cache key type, default "java.lang.Object" |  | Class
-| *camel.component.ehcache.configuration.value-type* | The cache value type, default "java.lang.Object" |  | Class
+| *camel.component.ehcache.configuration.key-type* | The cache key type, default "java.lang.Object" |  | String
+| *camel.component.ehcache.configuration.value-type* | The cache value type, default "java.lang.Object" |  | String
 | *camel.component.ehcache.customizer.cache-configuration.enabled* | Enable or disable the cache-configuration customizer. | true | Boolean
 | *camel.component.ehcache.customizer.cache-configuration.mode* | Configure if the cache configurations have be added or they have to replace those already configured on the component. |  | CacheConfiguration CustomizerConfiguration$ Mode
 | *camel.component.ehcache.customizer.cache-manager.enabled* | Enable or disable the cache-manager customizer. | true | Boolean
diff --git a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConfiguration.java b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConfiguration.java
index d3922ce..df368a8 100644
--- a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConfiguration.java
+++ b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConfiguration.java
@@ -53,10 +53,10 @@ public class EhcacheConfiguration implements Cloneable {
     private CacheConfiguration configuration;
     @UriParam(label = "advanced")
     private Map<String, CacheConfiguration> configurations;
-    @UriParam(label = "advanced", javaType = "java.lang.String", defaultValue = "java.lang.Object")
-    private Class<?> keyType;
-    @UriParam(label = "advanced", javaType = "java.lang.String", defaultValue = "java.lang.Object")
-    private Class<?> valueType;
+    @UriParam(label = "advanced")
+    private String keyType;
+    @UriParam(label = "advanced")
+    private String valueType;
     @UriParam(label = "consumer", defaultValue = "ORDERED")
     private EventOrdering eventOrdering = EventOrdering.ORDERED;
     @UriParam(label = "consumer", defaultValue = "ASYNCHRONOUS")
@@ -260,25 +260,25 @@ public class EhcacheConfiguration implements Cloneable {
         this.configurations.putAll(configurations);
     }
 
-    public Class<?> getKeyType() {
+    public String getKeyType() {
         return keyType;
     }
 
     /**
      * The cache key type, default "java.lang.Object"
      */
-    public void setKeyType(Class<?> keyType) {
+    public void setKeyType(String keyType) {
         this.keyType = keyType;
     }
 
-    public Class<?> getValueType() {
+    public String getValueType() {
         return valueType;
     }
 
     /**
      * The cache value type, default "java.lang.Object"
      */
-    public void setValueType(Class<?> valueType) {
+    public void setValueType(String valueType) {
         this.valueType = valueType;
     }
 
diff --git a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConsumer.java b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConsumer.java
index df73f86..a6263c4 100644
--- a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConsumer.java
+++ b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheConsumer.java
@@ -34,7 +34,16 @@ public class EhcacheConsumer extends DefaultConsumer implements CacheEventListen
 
         this.configuration = configuration;
         this.manager = endpoint.getManager();
-        this.cache = manager.getCache(cacheName, configuration.getKeyType(), configuration.getValueType());
+
+        Class<?> kt = null;
+        if (configuration.getKeyType() != null) {
+            kt = getEndpoint().getCamelContext().getClassResolver().resolveClass(configuration.getKeyType());
+        }
+        Class<?> vt = null;
+        if (configuration.getValueType() != null) {
+            vt = getEndpoint().getCamelContext().getClassResolver().resolveClass(configuration.getValueType());
+        }
+        this.cache = manager.getCache(cacheName, kt, vt);
     }
 
     @Override
diff --git a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheProducer.java b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheProducer.java
index 0f8cea4..e5a4f94 100644
--- a/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheProducer.java
+++ b/components/camel-ehcache/src/main/java/org/apache/camel/component/ehcache/EhcacheProducer.java
@@ -32,11 +32,20 @@ public class EhcacheProducer extends HeaderSelectorProducer {
     private final Cache cache;
 
     public EhcacheProducer(EhcacheEndpoint endpoint, String cacheName, EhcacheConfiguration configuration) throws Exception {
-        super(endpoint, EhcacheConstants.ACTION, () -> configuration.getAction());
+        super(endpoint, EhcacheConstants.ACTION, configuration::getAction);
 
         this.configuration = configuration;
         this.manager = endpoint.getManager();
-        this.cache = manager.getCache(cacheName, configuration.getKeyType(), configuration.getValueType());
+
+        Class<?> kt = null;
+        if (configuration.getKeyType() != null) {
+            kt = getEndpoint().getCamelContext().getClassResolver().resolveClass(configuration.getKeyType());
+        }
+        Class<?> vt = null;
+        if (configuration.getValueType() != null) {
+            vt = getEndpoint().getCamelContext().getClassResolver().resolveClass(configuration.getValueType());
+        }
+        this.cache = manager.getCache(cacheName, kt, vt);
     }
     
     // ****************************
@@ -130,7 +139,13 @@ public class EhcacheProducer extends HeaderSelectorProducer {
     // ****************************
 
     private Object getKey(final Message message) throws Exception {
-        Object value = message.getHeader(EhcacheConstants.KEY, cache.getRuntimeConfiguration().getKeyType());
+        Object value;
+        if (configuration.getKeyType() != null) {
+            Class<?> clazz = getEndpoint().getCamelContext().getClassResolver().resolveClass(configuration.getKeyType());
+            value = message.getHeader(EhcacheConstants.KEY, clazz);
+        } else {
+            value = message.getHeader(EhcacheConstants.KEY);
+        }
         if (value == null) {
             value = configuration.getKey();
         }
@@ -145,10 +160,18 @@ public class EhcacheProducer extends HeaderSelectorProducer {
         return value;
     }
 
-    private Object getValue(final Message message, final Class<?> type)  throws Exception {
-        Object value = message.getHeader(EhcacheConstants.VALUE, type);
+    @SuppressWarnings("unchecked")
+    private Object getValue(final Message message, final Object type)  throws Exception {
+        Object value = message.getHeader(EhcacheConstants.VALUE);
         if (value == null) {
-            value = message.getBody(type);
+            if (type instanceof String) {
+                Class<?> clazz = getEndpoint().getCamelContext().getClassResolver().resolveClass((String) type);
+                value = message.getBody(clazz);
+            } else if (type instanceof Class) {
+                value = message.getBody((Class) type);
+            } else {
+                value = message.getBody();
+            }
         }
 
         if (value == null) {
diff --git a/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheComponentConfigurationTest.java b/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheComponentConfigurationTest.java
index bd450b4..01db7f5 100644
--- a/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheComponentConfigurationTest.java
+++ b/components/camel-ehcache/src/test/java/org/apache/camel/component/ehcache/EhcacheComponentConfigurationTest.java
@@ -39,8 +39,8 @@ public class EhcacheComponentConfigurationTest extends CamelTestSupport {
     @BindToRegistry("ehcache")
     public Component createEhcacheComponent() throws Exception {
         EhcacheComponent component = new EhcacheComponent();
-        component.getConfiguration().setKeyType(String.class);
-        component.getConfiguration().setValueType(String.class);
+        component.getConfiguration().setKeyType("java.lang.String");
+        component.getConfiguration().setValueType("java.lang.String");
         component.getConfiguration().setCacheManager(
             CacheManagerBuilder.newCacheManagerBuilder()
                 .withCache(
diff --git a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchComponent.java b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchComponent.java
index f1c7f17f..1975c90 100644
--- a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchComponent.java
+++ b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchComponent.java
@@ -106,7 +106,7 @@ public class ElasticsearchComponent extends DefaultComponent {
                 throw new IllegalArgumentException();
             }
             Integer port = split.length > 1 ? Integer.parseInt(split[1]) : ElasticsearchConstants.DEFAULT_PORT;
-            addressesTrAd.add(new HttpHost(hostname, port, config.getEnableSSL() ? "HTTPS" : "HTTP"));
+            addressesTrAd.add(new HttpHost(hostname, port, config.isEnableSSL() ? "HTTPS" : "HTTP"));
         }
         return addressesTrAd;
     }
diff --git a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java
index 23525d9..263e4bf 100644
--- a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java
+++ b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java
@@ -170,11 +170,11 @@ public class ElasticsearchConfiguration {
     /**
      * Enable SSL
      */
-    public Boolean getEnableSSL() {
+    public boolean isEnableSSL() {
         return enableSSL;
     }
 
-    public void setEnableSSL(Boolean enableSSL) {
+    public void setEnableSSL(boolean enableSSL) {
         this.enableSSL = enableSSL;
     }
 
@@ -192,11 +192,11 @@ public class ElasticsearchConfiguration {
     /**
      * Disconnect after it finish calling the producer
      */
-    public Boolean getDisconnect() {
+    public boolean isDisconnect() {
         return disconnect;
     }
 
-    public void setDisconnect(Boolean disconnect) {
+    public void setDisconnect(boolean disconnect) {
         this.disconnect = disconnect;
     }
 
@@ -237,7 +237,7 @@ public class ElasticsearchConfiguration {
     /**
      * Enable scroll usage
      */
-    public boolean getUseScroll() {
+    public boolean isUseScroll() {
         return useScroll;
     }
 
diff --git a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchEndpoint.java b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchEndpoint.java
index 5ff147d..41f7728 100644
--- a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchEndpoint.java
+++ b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchEndpoint.java
@@ -42,6 +42,10 @@ public class ElasticsearchEndpoint extends DefaultEndpoint {
         this.client = client;
     }
 
+    public ElasticsearchConfiguration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         return new ElasticsearchProducer(this, configuration);
diff --git a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
index 1ba7d30..ab92790 100644
--- a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
+++ b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java
@@ -114,7 +114,7 @@ public class ElasticsearchProducer extends DefaultProducer {
 
     @Override
     public void process(Exchange exchange) throws Exception {
-        if (configuration.getDisconnect() && client == null) {
+        if (configuration.isDisconnect() && client == null) {
             startClient();
         }
         RestHighLevelClient restHighLevelClient = new HighLevelClient(client);
@@ -189,7 +189,7 @@ public class ElasticsearchProducer extends DefaultProducer {
         } else if (operation == ElasticsearchOperation.Search) {
             SearchRequest searchRequest = message.getBody(SearchRequest.class);
             // is it a scroll request ?
-            boolean useScroll = message.getHeader(PARAM_SCROLL, configuration.getUseScroll(), Boolean.class);
+            boolean useScroll = message.getHeader(PARAM_SCROLL, configuration.isUseScroll(), Boolean.class);
             if (useScroll) {
                 int scrollKeepAliveMs = message.getHeader(PARAM_SCROLL_KEEP_ALIVE_MS, configuration.getScrollKeepAliveMs(), Integer.class);
                 ElasticsearchScrollRequestIterator scrollRequestIterator = new ElasticsearchScrollRequestIterator(searchRequest, restHighLevelClient, scrollKeepAliveMs, exchange);
@@ -222,7 +222,7 @@ public class ElasticsearchProducer extends DefaultProducer {
         if (configWaitForActiveShards) {
             message.removeHeader(ElasticsearchConstants.PARAM_WAIT_FOR_ACTIVE_SHARDS);
         }
-        if (configuration.getDisconnect()) {
+        if (configuration.isDisconnect()) {
             IOHelper.close(client);
             IOHelper.close(restHighLevelClient);
             client = null;
@@ -238,7 +238,7 @@ public class ElasticsearchProducer extends DefaultProducer {
     @SuppressWarnings("unchecked")
     protected void doStart() throws Exception {
         super.doStart();
-        if (!configuration.getDisconnect()) {
+        if (!configuration.isDisconnect()) {
             startClient();
         }
     }
diff --git a/components/camel-elsql/src/main/docs/elsql-component.adoc b/components/camel-elsql/src/main/docs/elsql-component.adoc
index 165500f..631552e 100644
--- a/components/camel-elsql/src/main/docs/elsql-component.adoc
+++ b/components/camel-elsql/src/main/docs/elsql-component.adoc
@@ -137,7 +137,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-etcd/src/main/docs/etcd-component.adoc b/components/camel-etcd/src/main/docs/etcd-component.adoc
index eaef04a..53ecadd 100644
--- a/components/camel-etcd/src/main/docs/etcd-component.adoc
+++ b/components/camel-etcd/src/main/docs/etcd-component.adoc
@@ -81,7 +81,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/config/FacebookEndpointConfiguration.java b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/config/FacebookEndpointConfiguration.java
index 7ff01d4..3273c85 100644
--- a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/config/FacebookEndpointConfiguration.java
+++ b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/config/FacebookEndpointConfiguration.java
@@ -425,7 +425,7 @@ public class FacebookEndpointConfiguration extends FacebookConfiguration {
         this.ids = ids;
     }
 
-    public Boolean isIncludeRead() {
+    public Boolean getIncludeRead() {
         return includeRead;
     }
 
@@ -920,7 +920,7 @@ public class FacebookEndpointConfiguration extends FacebookConfiguration {
         this.tabId = tabId;
     }
 
-    public Boolean isHidden() {
+    public Boolean getIsHidden() {
         return isHidden;
     }
 
diff --git a/components/camel-file/src/main/docs/file-component.adoc b/components/camel-file/src/main/docs/file-component.adoc
index 6b51cf9..fc16ba0 100644
--- a/components/camel-file/src/main/docs/file-component.adoc
+++ b/components/camel-file/src/main/docs/file-component.adoc
@@ -173,7 +173,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-file/src/main/java/org/apache/camel/component/file/FileEndpoint.java b/components/camel-file/src/main/java/org/apache/camel/component/file/FileEndpoint.java
index e1a8ef2..29fe0a1 100644
--- a/components/camel-file/src/main/java/org/apache/camel/component/file/FileEndpoint.java
+++ b/components/camel-file/src/main/java/org/apache/camel/component/file/FileEndpoint.java
@@ -411,7 +411,7 @@ public class FileEndpoint extends GenericFileEndpoint<File> {
      * Specify the file permissions which is sent by the producer, the chmod value must be between 000 and 777;
      * If there is a leading digit like in 0755 we will ignore it.
      */
-    public void setChmod(String chmod) throws Exception {
+    public void setChmod(String chmod) {
         if (ObjectHelper.isNotEmpty(chmod) && chmodPermissionsAreValid(chmod)) {
             this.chmod = chmod.trim();
         } else {
@@ -472,7 +472,7 @@ public class FileEndpoint extends GenericFileEndpoint<File> {
      * Specify the directory permissions used when the producer creates missing directories, the chmod value must be between 000 and 777;
      * If there is a leading digit like in 0755 we will ignore it.
      */
-    public void setChmodDirectory(String chmodDirectory) throws Exception {
+    public void setChmodDirectory(String chmodDirectory) {
         if (ObjectHelper.isNotEmpty(chmodDirectory) && chmodPermissionsAreValid(chmodDirectory)) {
             this.chmodDirectory = chmodDirectory.trim();
         } else {
diff --git a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
index 58aa43cf..09ef430 100644
--- a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
+++ b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
@@ -661,6 +661,10 @@ public abstract class GenericFileEndpoint<T> extends ScheduledPollEndpoint imple
         return idempotent != null;
     }
 
+    public Boolean getIdempotent() {
+        return idempotent;
+    }
+
     /**
      * Option to use the Idempotent Consumer EIP pattern to let Camel skip already processed files.
      * Will by default use a memory based LRUCache that holds 1000 entries. If noop=true then idempotent will be enabled
@@ -1003,6 +1007,10 @@ public abstract class GenericFileEndpoint<T> extends ScheduledPollEndpoint imple
         this.readLockRemoveOnCommit = readLockRemoveOnCommit;
     }
 
+    public int getReadLockIdempotentReleaseDelay() {
+        return readLockIdempotentReleaseDelay;
+    }
+
     /**
      * Whether to delay the release task for a period of millis.
      * <p/>
diff --git a/components/camel-flatpack/src/main/docs/flatpack-component.adoc b/components/camel-flatpack/src/main/docs/flatpack-component.adoc
index 4349077..a24a8bf 100644
--- a/components/camel-flatpack/src/main/docs/flatpack-component.adoc
+++ b/components/camel-flatpack/src/main/docs/flatpack-component.adoc
@@ -101,7 +101,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-ftp/src/main/docs/ftp-component.adoc b/components/camel-ftp/src/main/docs/ftp-component.adoc
index 93cf17b..6bde732 100644
--- a/components/camel-ftp/src/main/docs/ftp-component.adoc
+++ b/components/camel-ftp/src/main/docs/ftp-component.adoc
@@ -206,7 +206,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-ftp/src/main/docs/ftps-component.adoc b/components/camel-ftp/src/main/docs/ftps-component.adoc
index 43813fb..d1ab94b 100644
--- a/components/camel-ftp/src/main/docs/ftps-component.adoc
+++ b/components/camel-ftp/src/main/docs/ftps-component.adoc
@@ -165,7 +165,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
@@ -179,7 +179,7 @@ with the following path and query parameters:
 | *execProt* (security) | The exec protection level PROT command. C - Clear S - Safe(SSL protocol only) E - Confidential(SSL protocol only) P - Private |  | String
 | *ftpClientKeyStore Parameters* (security) | Set the key store parameters |  | Map
 | *ftpClientTrustStore Parameters* (security) | Set the trust store parameters |  | Map
-| *isImplicit* (security) | Set the security mode(Implicit/Explicit). true - Implicit Mode / False - Explicit Mode | false | boolean
+| *implicit* (security) | Set the security mode (Implicit/Explicit). true - Implicit Mode / False - Explicit Mode | false | boolean
 | *password* (security) | Password to use for login |  | String
 | *securityProtocol* (security) | Set the underlying security protocol. | TLSv1.2 | String
 | *sslContextParameters* (security) | Gets the JSSE configuration that overrides any settings in FtpsEndpoint#\ftpClientKeyStoreParameters, \ftpClientTrustStoreParameters, and FtpsConfiguration#getSecurityProtocol(). |  | SSLContextParameters
diff --git a/components/camel-ftp/src/main/docs/sftp-component.adoc b/components/camel-ftp/src/main/docs/sftp-component.adoc
index 048b5fd..4594b34 100644
--- a/components/camel-ftp/src/main/docs/sftp-component.adoc
+++ b/components/camel-ftp/src/main/docs/sftp-component.adoc
@@ -161,7 +161,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java
index 649688a..af058ab 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java
@@ -255,6 +255,10 @@ public class FtpEndpoint<T extends FTPFile> extends RemoteFileEndpoint<FTPFile>
         this.ftpClientConfig = ftpClientConfig;
     }
 
+    public Map<String, Object> getFtpClientParameters() {
+        return ftpClientParameters;
+    }
+
     /**
      * Used by FtpComponent to provide additional parameters for the FTPClient
      */
@@ -262,6 +266,10 @@ public class FtpEndpoint<T extends FTPFile> extends RemoteFileEndpoint<FTPFile>
         this.ftpClientParameters = ftpClientParameters;
     }
 
+    public Map<String, Object> getFtpClientConfigParameters() {
+        return ftpClientConfigParameters;
+    }
+
     /**
      * Used by FtpComponent to provide additional parameters for the FTPClientConfig
      */
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsConfiguration.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsConfiguration.java
index e37f3ed..763fff5 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsConfiguration.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsConfiguration.java
@@ -31,7 +31,7 @@ public class FtpsConfiguration extends FtpConfiguration {
     // TODO : switch to TLSv1.3 when we fully upgrade to JDK11
     private String securityProtocol = "TLSv1.2";
     @UriParam(label = "security")
-    private boolean isImplicit;
+    private boolean implicit;
     @UriParam(label = "security")
     private boolean disableSecureDataChannelDefaults;
     @UriParam(label = "security")
@@ -66,15 +66,15 @@ public class FtpsConfiguration extends FtpConfiguration {
      * true - Implicit Mode / False - Explicit Mode
      */
     public boolean isImplicit() {
-        return isImplicit;
+        return implicit;
     }
 
     /**
-     * Set the security mode(Implicit/Explicit).
+     * Set the security mode (Implicit/Explicit).
      * true - Implicit Mode / False - Explicit Mode
      */
-    public void setIsImplicit(boolean isImplicit) {
-        this.isImplicit = isImplicit;
+    public void setImplicit(boolean implicit) {
+        this.implicit = implicit;
     }
 
     public boolean isDisableSecureDataChannelDefaults() {
diff --git a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java
index a89ae92..b1328d8 100644
--- a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java
+++ b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java
@@ -64,6 +64,14 @@ public class FtpsEndpoint extends FtpEndpoint<FTPFile> {
     }
 
     @Override
+    public FtpsConfiguration getConfiguration() {
+        if (configuration == null) {
+            configuration = new FtpsConfiguration();
+        }
+        return configuration;
+    }
+
+    @Override
     public String getScheme() {
         return getFtpsConfiguration().getProtocol();
     }
@@ -224,6 +232,10 @@ public class FtpsEndpoint extends FtpEndpoint<FTPFile> {
         return (FtpsConfiguration) getConfiguration();
     }
 
+    public Map<String, Object> getFtpClientKeyStoreParameters() {
+        return ftpClientKeyStoreParameters;
+    }
+
     /**
      * Set the key store parameters
      */
@@ -231,6 +243,10 @@ public class FtpsEndpoint extends FtpEndpoint<FTPFile> {
         this.ftpClientKeyStoreParameters = param;
     }
 
+    public Map<String, Object> getFtpClientTrustStoreParameters() {
+        return ftpClientTrustStoreParameters;
+    }
+
     /**
      * Set the trust store parameters
      */
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithClientAuthAndSSLContextParametersTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithClientAuthAndSSLContextParametersTest.java
index 0a01bff..b4c51b2 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithClientAuthAndSSLContextParametersTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithClientAuthAndSSLContextParametersTest.java
@@ -48,6 +48,6 @@ public class FileToFtpsExplicitSSLWithClientAuthAndSSLContextParametersTest exte
     @Override
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&isImplicit=false&sslContextParameters=#sslContextParameters&delete=true";
+                + "&implicit=false&sslContextParameters=#sslContextParameters&delete=true";
     }
 }
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithClientAuthTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithClientAuthTest.java
index 4c876a8..4f05426 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithClientAuthTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithClientAuthTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsExplicitSSLWithClientAuthTest extends FtpsServerExplicitS
     
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&securityProtocol=SSLv3&isImplicit=false&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
+                + "&securityProtocol=SSLv3&implicit=false&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
                 + "&ftpClient.keyStore.algorithm=SunX509&ftpClient.keyStore.password=password&ftpClient.keyStore.keyPassword=password&delete=true";
     }
     
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthAndGlobalSSLContextParametersTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthAndGlobalSSLContextParametersTest.java
index 48b4e11..89f60dd 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthAndGlobalSSLContextParametersTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthAndGlobalSSLContextParametersTest.java
@@ -46,6 +46,6 @@ public class FileToFtpsExplicitSSLWithoutClientAuthAndGlobalSSLContextParameters
     @Override
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&isImplicit=false&delete=true";
+                + "&implicit=false&delete=true";
     }
 }
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthAndSSLContextParametersTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthAndSSLContextParametersTest.java
index f1508ce..3c4835e 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthAndSSLContextParametersTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthAndSSLContextParametersTest.java
@@ -42,6 +42,6 @@ public class FileToFtpsExplicitSSLWithoutClientAuthAndSSLContextParametersTest e
     @Override
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&isImplicit=false&sslContextParameters=#sslContextParameters&delete=true";
+                + "&implicit=false&sslContextParameters=#sslContextParameters&delete=true";
     }
 }
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthTest.java
index d4d6300..ecdf54f 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitSSLWithoutClientAuthTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsExplicitSSLWithoutClientAuthTest extends FtpsServerExplic
     
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true&delete=true"
-                + "&securityProtocol=SSLv3&isImplicit=false";
+                + "&securityProtocol=SSLv3&implicit=false";
     }
     
     @Test
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithClientAuthAndSSLContextParametersTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithClientAuthAndSSLContextParametersTest.java
index 49d67fb..2f3ef64 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithClientAuthAndSSLContextParametersTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithClientAuthAndSSLContextParametersTest.java
@@ -48,6 +48,6 @@ public class FileToFtpsExplicitTLSWithClientAuthAndSSLContextParametersTest exte
     @Override
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-               + "&isImplicit=false&sslContextParameters=#sslContextParameters&delete=true";
+               + "&implicit=false&sslContextParameters=#sslContextParameters&delete=true";
     }
 }
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithClientAuthTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithClientAuthTest.java
index 96a95f4..8a903e7 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithClientAuthTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithClientAuthTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsExplicitTLSWithClientAuthTest extends FtpsServerExplicitT
     
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&securityProtocol=TLSv1.2&isImplicit=false&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
+                + "&securityProtocol=TLSv1.2&implicit=false&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
                 + "&ftpClient.keyStore.algorithm=SunX509&ftpClient.keyStore.password=password&ftpClient.keyStore.keyPassword=password&delete=true";
     }
     
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithoutClientAuthAndSSLContextParametersTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithoutClientAuthAndSSLContextParametersTest.java
index 400c17d..939a751 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithoutClientAuthAndSSLContextParametersTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithoutClientAuthAndSSLContextParametersTest.java
@@ -41,6 +41,6 @@ public class FileToFtpsExplicitTLSWithoutClientAuthAndSSLContextParametersTest e
     @Override
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&isImplicit=false&sslContextParameters=#sslContextParameters&delete=true";
+                + "&implicit=false&sslContextParameters=#sslContextParameters&delete=true";
     }
 }
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithoutClientAuthTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithoutClientAuthTest.java
index eeb4f2b..d47f08a 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithoutClientAuthTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsExplicitTLSWithoutClientAuthTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsExplicitTLSWithoutClientAuthTest extends FtpsServerExplic
     
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&securityProtocol=TLSv1.2&isImplicit=false&delete=true";
+                + "&securityProtocol=TLSv1.2&implicit=false&delete=true";
     }
     
     @Test
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithClientAuthAndSSLContextParametersTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithClientAuthAndSSLContextParametersTest.java
index c021585..d02153f 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithClientAuthAndSSLContextParametersTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithClientAuthAndSSLContextParametersTest.java
@@ -47,6 +47,6 @@ public class FileToFtpsImplicitSSLWithClientAuthAndSSLContextParametersTest exte
     @Override
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&isImplicit=true&sslContextParameters=#sslContextParameters&delete=true";
+                + "&implicit=true&sslContextParameters=#sslContextParameters&delete=true";
     }
 }
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithClientAuthTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithClientAuthTest.java
index 55af194..4fefde3 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithClientAuthTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithClientAuthTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsImplicitSSLWithClientAuthTest extends FtpsServerImplicitS
     
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&securityProtocol=SSLv3&isImplicit=true&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
+                + "&securityProtocol=SSLv3&implicit=true&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
                 + "&ftpClient.keyStore.algorithm=SunX509&ftpClient.keyStore.password=password&ftpClient.keyStore.keyPassword=password&delete=true";
     }
     
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithoutClientAuthAndSSLContextParametersTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithoutClientAuthAndSSLContextParametersTest.java
index 79f46b0..43c9e09 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithoutClientAuthAndSSLContextParametersTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithoutClientAuthAndSSLContextParametersTest.java
@@ -41,6 +41,6 @@ public class FileToFtpsImplicitSSLWithoutClientAuthAndSSLContextParametersTest e
     @Override
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&isImplicit=true&sslContextParameters=#sslContextParameters&delete=true";
+                + "&implicit=true&sslContextParameters=#sslContextParameters&delete=true";
     }
 }
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithoutClientAuthTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithoutClientAuthTest.java
index 40ba73e..5cda433 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithoutClientAuthTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitSSLWithoutClientAuthTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsImplicitSSLWithoutClientAuthTest extends FtpsServerImplic
     
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&securityProtocol=SSLv3&isImplicit=true&delete=true";
+                + "&securityProtocol=SSLv3&implicit=true&delete=true";
     }
     
     @Test
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithClientAuthAndSSLContextParametersTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithClientAuthAndSSLContextParametersTest.java
index e8322d6..65baf8a 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithClientAuthAndSSLContextParametersTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithClientAuthAndSSLContextParametersTest.java
@@ -47,6 +47,6 @@ public class FileToFtpsImplicitTLSWithClientAuthAndSSLContextParametersTest exte
     @Override
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&isImplicit=true&sslContextParameters=#sslContextParameters&delete=true";
+                + "&implicit=true&sslContextParameters=#sslContextParameters&delete=true";
     }
 }
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithClientAuthTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithClientAuthTest.java
index 10fca47..326419f 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithClientAuthTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithClientAuthTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsImplicitTLSWithClientAuthTest extends FtpsServerImplicitT
     
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&securityProtocol=TLSv1.2&isImplicit=true&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
+                + "&securityProtocol=TLSv1.2&implicit=true&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
                 + "&ftpClient.keyStore.algorithm=SunX509&ftpClient.keyStore.password=password&ftpClient.keyStore.keyPassword=password&delete=true";
     }
     
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithoutClientAuthAndSSLContextParametersTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithoutClientAuthAndSSLContextParametersTest.java
index d2e9065..7da9a6e 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithoutClientAuthAndSSLContextParametersTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithoutClientAuthAndSSLContextParametersTest.java
@@ -41,6 +41,6 @@ public class FileToFtpsImplicitTLSWithoutClientAuthAndSSLContextParametersTest e
     @Override
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&isImplicit=true&sslContextParameters=#sslContextParameters&delete=true";
+                + "&implicit=true&sslContextParameters=#sslContextParameters&delete=true";
     }
 }
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithoutClientAuthTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithoutClientAuthTest.java
index cb519b4..6f960e3 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithoutClientAuthTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsImplicitTLSWithoutClientAuthTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsImplicitTLSWithoutClientAuthTest extends FtpsServerImplic
     
     protected String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&securityProtocol=TLSv1.2&isImplicit=true&delete=true";
+                + "&securityProtocol=TLSv1.2&implicit=true&delete=true";
     }
     
     @Test
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsWithCustomKeyAndTrustStorePropertiesTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsWithCustomKeyAndTrustStorePropertiesTest.java
index e5d4749..b542f02 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsWithCustomKeyAndTrustStorePropertiesTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsWithCustomKeyAndTrustStorePropertiesTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsWithCustomKeyAndTrustStorePropertiesTest extends FtpsServ
     
     private String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&securityProtocol=SSLv3&isImplicit=false&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
+                + "&securityProtocol=SSLv3&implicit=false&ftpClient.keyStore.file=./src/test/resources/server.jks&ftpClient.keyStore.type=JKS"
                 + "&ftpClient.keyStore.algorithm=SunX509&ftpClient.keyStore.password=password&ftpClient.keyStore.keyPassword=password"
                 + "&ftpClient.trustStore.file=./src/test/resources/server.jks&ftpClient.trustStore.type=JKS"
                 + "&ftpClient.trustStore.algorithm=SunX509&ftpClient.trustStore.password=password&delete=true";
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsWithCustomTrustStorePropertiesTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsWithCustomTrustStorePropertiesTest.java
index 0f1d15c..f0f523a 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsWithCustomTrustStorePropertiesTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FileToFtpsWithCustomTrustStorePropertiesTest.java
@@ -27,7 +27,7 @@ public class FileToFtpsWithCustomTrustStorePropertiesTest extends FtpsServerExpl
     
     private String getFtpUrl() {
         return "ftps://admin@localhost:" + getPort() + "/tmp2/camel?password=admin&consumer.initialDelay=2000&disableSecureDataChannelDefaults=true"
-                + "&securityProtocol=SSLv3&isImplicit=false&ftpClient.trustStore.file=./src/test/resources/server.jks&ftpClient.trustStore.type=JKS"
+                + "&securityProtocol=SSLv3&implicit=false&ftpClient.trustStore.file=./src/test/resources/server.jks&ftpClient.trustStore.type=JKS"
                 + "&ftpClient.trustStore.algorithm=SunX509&ftpClient.trustStore.password=password&delete=true";
     }
     
diff --git a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java
index c71bacb..e16d9ed 100644
--- a/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java
+++ b/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java
@@ -69,7 +69,7 @@ public class UriConfigurationTest extends CamelTestSupport {
 
     @Test
     public void testFtpsExplicitConfigurationDefaults() {
-        FtpsEndpoint endpoint = context.getEndpoint("ftps://hostname:990?isImplicit=true", FtpsEndpoint.class);
+        FtpsEndpoint endpoint = context.getEndpoint("ftps://hostname:990?implicit=true", FtpsEndpoint.class);
         FtpsConfiguration config = endpoint.getFtpsConfiguration();
 
         assertEquals("ftps", config.getProtocol());
@@ -110,7 +110,7 @@ public class UriConfigurationTest extends CamelTestSupport {
     
     @Test
     public void testFtpsExplicitConfiguration() {
-        FtpsEndpoint endpoint = context.getEndpoint("ftps://user@hostname:1021/some/file?password=secret&binary=true&securityProtocol=SSL&isImplicit=true", FtpsEndpoint.class);
+        FtpsEndpoint endpoint = context.getEndpoint("ftps://user@hostname:1021/some/file?password=secret&binary=true&securityProtocol=SSL&implicit=true", FtpsEndpoint.class);
         FtpsConfiguration config = endpoint.getFtpsConfiguration();
 
         assertEquals("ftps", config.getProtocol());
diff --git a/components/camel-geocoder/src/main/java/org/apache/camel/component/geocoder/GeoCoderEndpoint.java b/components/camel-geocoder/src/main/java/org/apache/camel/component/geocoder/GeoCoderEndpoint.java
index 60ed9d5..050615e 100644
--- a/components/camel-geocoder/src/main/java/org/apache/camel/component/geocoder/GeoCoderEndpoint.java
+++ b/components/camel-geocoder/src/main/java/org/apache/camel/component/geocoder/GeoCoderEndpoint.java
@@ -147,8 +147,7 @@ public class GeoCoderEndpoint extends DefaultEndpoint {
         this.clientKey = clientKey;
     }
 
-
-    private String getApiKey() {
+    public String getApiKey() {
         return apiKey;
     }
 
@@ -159,6 +158,10 @@ public class GeoCoderEndpoint extends DefaultEndpoint {
         this.apiKey = apiKey;
     }
 
+    public String getProxyHost() {
+        return proxyHost;
+    }
+
     /**
      * The proxy host name
      */
diff --git a/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc b/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
index 68d5914..9054ea2 100644
--- a/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
+++ b/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
@@ -111,7 +111,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-google-mail/src/main/docs/google-mail-stream-component.adoc b/components/camel-google-mail/src/main/docs/google-mail-stream-component.adoc
index b40b8fd..9f7554b 100644
--- a/components/camel-google-mail/src/main/docs/google-mail-stream-component.adoc
+++ b/components/camel-google-mail/src/main/docs/google-mail-stream-component.adoc
@@ -107,7 +107,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-google-sheets/src/main/docs/google-sheets-stream-component.adoc b/components/camel-google-sheets/src/main/docs/google-sheets-stream-component.adoc
index 9693dcc..6c1ded1 100644
--- a/components/camel-google-sheets/src/main/docs/google-sheets-stream-component.adoc
+++ b/components/camel-google-sheets/src/main/docs/google-sheets-stream-component.adoc
@@ -113,7 +113,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpoint.java b/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpoint.java
index 744f37b..0cb4fc3 100644
--- a/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpoint.java
+++ b/components/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpoint.java
@@ -38,14 +38,14 @@ import org.apache.camel.support.component.ApiMethodPropertiesHelper;
 @UriEndpoint(firstVersion = "2.23.0", scheme = "google-sheets", title = "Google Sheets", syntax = "google-sheets:apiName/methodName", consumerPrefix = "consumer", label = "api,cloud,sheets")
 public class GoogleSheetsEndpoint extends AbstractApiEndpoint<GoogleSheetsApiName, GoogleSheetsConfiguration> {
 
-    @UriParam(name = "configuration")
-    private GoogleSheetsConfiguration endpointConfiguration;
+    @UriParam
+    private GoogleSheetsConfiguration configuration;
 
     private Object apiProxy;
 
     public GoogleSheetsEndpoint(String uri, GoogleSheetsComponent component, GoogleSheetsApiName apiName, String methodName, GoogleSheetsConfiguration endpointConfiguration) {
         super(uri, component, apiName, methodName, GoogleSheetsApiCollection.getCollection().getHelper(apiName), endpointConfiguration);
-        this.endpointConfiguration = endpointConfiguration;
+        this.configuration = endpointConfiguration;
     }
 
     @Override
@@ -90,7 +90,7 @@ public class GoogleSheetsEndpoint extends AbstractApiEndpoint<GoogleSheetsApiNam
     }
 
     public Sheets getClient() {
-        return ((GoogleSheetsComponent)getComponent()).getClient(endpointConfiguration);
+        return ((GoogleSheetsComponent)getComponent()).getClient(configuration);
     }
 
     @Override
diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcEndpoint.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcEndpoint.java
index 31fdc04..e15dad0 100644
--- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcEndpoint.java
+++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcEndpoint.java
@@ -51,6 +51,10 @@ public class GrpcEndpoint extends DefaultEndpoint {
         }
     }
 
+    public GrpcConfiguration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         GrpcProducer producer = new GrpcProducer(this, configuration);
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-atomicvalue-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-atomicvalue-component.adoc
index d9908ba..3819c9f 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-atomicvalue-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-atomicvalue-component.adoc
@@ -44,24 +44,18 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (12 parameters):
+=== Query Parameters (6 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *defaultOperation* (producer) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (producer) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (producer) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-instance-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-instance-component.adoc
index 2e36e3c..1c75eab 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-instance-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-instance-component.adoc
@@ -43,29 +43,20 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (17 parameters):
+=== Query Parameters (8 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *defaultOperation* (consumer) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (consumer) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (consumer) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
-| *pollingTimeout* (consumer) | Define the polling timeout of the Queue consumer in Poll mode | 10000 | long
-| *poolSize* (consumer) | Define the Pool size for Queue Consumer Executor | 1 | int
-| *queueConsumerMode* (consumer) | Define the Queue Consumer mode: Listen or Poll | Listen | HazelcastQueueConsumer Mode
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-list-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-list-component.adoc
index 13289a7..39915b9 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-list-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-list-component.adoc
@@ -39,7 +39,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (18 parameters):
+=== Query Parameters (9 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -48,21 +48,12 @@ with the following path and query parameters:
 | *defaultOperation* (common) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (common) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (common) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *pollingTimeout* (consumer) | Define the polling timeout of the Queue consumer in Poll mode | 10000 | long
-| *poolSize* (consumer) | Define the Pool size for Queue Consumer Executor | 1 | int
-| *queueConsumerMode* (consumer) | Define the Queue Consumer mode: Listen or Poll | Listen | HazelcastQueueConsumer Mode
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-map-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-map-component.adoc
index 81f7e96..14ef52b 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-map-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-map-component.adoc
@@ -40,7 +40,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (18 parameters):
+=== Query Parameters (9 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -49,21 +49,12 @@ with the following path and query parameters:
 | *defaultOperation* (common) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (common) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (common) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *pollingTimeout* (consumer) | Define the polling timeout of the Queue consumer in Poll mode | 10000 | long
-| *poolSize* (consumer) | Define the Pool size for Queue Consumer Executor | 1 | int
-| *queueConsumerMode* (consumer) | Define the Queue Consumer mode: Listen or Poll | Listen | HazelcastQueueConsumer Mode
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-multimap-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-multimap-component.adoc
index 1971f0f..52f9654 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-multimap-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-multimap-component.adoc
@@ -41,7 +41,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (18 parameters):
+=== Query Parameters (9 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -50,21 +50,12 @@ with the following path and query parameters:
 | *defaultOperation* (common) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (common) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (common) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *pollingTimeout* (consumer) | Define the polling timeout of the Queue consumer in Poll mode | 10000 | long
-| *poolSize* (consumer) | Define the Pool size for Queue Consumer Executor | 1 | int
-| *queueConsumerMode* (consumer) | Define the Queue Consumer mode: Listen or Poll | Listen | HazelcastQueueConsumer Mode
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-queue-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-queue-component.adoc
index fb22502..df41f41 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-queue-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-queue-component.adoc
@@ -40,7 +40,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (18 parameters):
+=== Query Parameters (12 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -49,7 +49,6 @@ with the following path and query parameters:
 | *defaultOperation* (common) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (common) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (common) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *pollingTimeout* (consumer) | Define the polling timeout of the Queue consumer in Poll mode | 10000 | long
 | *poolSize* (consumer) | Define the Pool size for Queue Consumer Executor | 1 | int
@@ -59,11 +58,6 @@ with the following path and query parameters:
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-replicatedmap-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-replicatedmap-component.adoc
index 3b3344b..cb3b8a4 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-replicatedmap-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-replicatedmap-component.adoc
@@ -41,7 +41,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (18 parameters):
+=== Query Parameters (9 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -50,21 +50,12 @@ with the following path and query parameters:
 | *defaultOperation* (common) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (common) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (common) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *pollingTimeout* (consumer) | Define the polling timeout of the Queue consumer in Poll mode | 10000 | long
-| *poolSize* (consumer) | Define the Pool size for Queue Consumer Executor | 1 | int
-| *queueConsumerMode* (consumer) | Define the Queue Consumer mode: Listen or Poll | Listen | HazelcastQueueConsumer Mode
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-ringbuffer-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-ringbuffer-component.adoc
index dc9b3ba..d1d65af3 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-ringbuffer-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-ringbuffer-component.adoc
@@ -41,24 +41,18 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (12 parameters):
+=== Query Parameters (6 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *defaultOperation* (producer) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (producer) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (producer) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-seda-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-seda-component.adoc
index e70800e..ac19543 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-seda-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-seda-component.adoc
@@ -41,7 +41,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (18 parameters):
+=== Query Parameters (14 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -50,11 +50,7 @@ with the following path and query parameters:
 | *defaultOperation* (common) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (common) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (common) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *pollingTimeout* (consumer) | Define the polling timeout of the Queue consumer in Poll mode | 10000 | long
-| *poolSize* (consumer) | Define the Pool size for Queue Consumer Executor | 1 | int
-| *queueConsumerMode* (consumer) | Define the Queue Consumer mode: Listen or Poll | Listen | HazelcastQueueConsumer Mode
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-set-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-set-component.adoc
index 07d69d7..fe5fef9 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-set-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-set-component.adoc
@@ -40,7 +40,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (18 parameters):
+=== Query Parameters (9 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -49,21 +49,12 @@ with the following path and query parameters:
 | *defaultOperation* (common) | To specify a default operation to use, if no operation header has been provided. |  | HazelcastOperation
 | *hazelcastInstance* (common) | The hazelcast instance reference which can be used for hazelcast endpoint. |  | HazelcastInstance
 | *hazelcastInstanceName* (common) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
-| *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *pollingTimeout* (consumer) | Define the polling timeout of the Queue consumer in Poll mode | 10000 | long
-| *poolSize* (consumer) | Define the Pool size for Queue Consumer Executor | 1 | int
-| *queueConsumerMode* (consumer) | Define the Queue Consumer mode: Listen or Poll | Listen | HazelcastQueueConsumer Mode
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/docs/hazelcast-topic-component.adoc b/components/camel-hazelcast/src/main/docs/hazelcast-topic-component.adoc
index f5e72c2..028a9cc 100644
--- a/components/camel-hazelcast/src/main/docs/hazelcast-topic-component.adoc
+++ b/components/camel-hazelcast/src/main/docs/hazelcast-topic-component.adoc
@@ -40,7 +40,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (18 parameters):
+=== Query Parameters (10 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -51,19 +51,11 @@ with the following path and query parameters:
 | *hazelcastInstanceName* (common) | The hazelcast instance reference name which can be used for hazelcast endpoint. If you don't specify the instance reference, camel use the default hazelcast instance from the camel-hazelcast instance. |  | String
 | *reliable* (common) | Define if the endpoint will use a reliable Topic struct or not. | false | boolean
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *pollingTimeout* (consumer) | Define the polling timeout of the Queue consumer in Poll mode | 10000 | long
-| *poolSize* (consumer) | Define the Pool size for Queue Consumer Executor | 1 | int
-| *queueConsumerMode* (consumer) | Define the Queue Consumer mode: Listen or Poll | Listen | HazelcastQueueConsumer Mode
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *concurrentConsumers* (seda) | To use concurrent consumers polling from the SEDA queue. | 1 | int
-| *onErrorDelay* (seda) | Milliseconds before consumer continues polling after an error has occurred. | 1000 | int
-| *pollTimeout* (seda) | The timeout used when consuming from the SEDA queue. When a timeout occurs, the consumer can check whether it is allowed to continue running. Setting a lower value allows the consumer to react more quickly upon shutdown. | 1000 | int
-| *transacted* (seda) | If set to true then the consumer runs in transaction mode, where the messages in the seda queue will only be removed if the transaction commits, which happens when the processing is complete. | false | boolean
-| *transferExchange* (seda) | If set to true the whole Exchange will be transfered. If header or body contains not serializable objects, they will be skipped. | false | boolean
 |===
 // endpoint options: END
 // spring-boot-auto-configure options: START
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastDefaultEndpoint.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastDefaultEndpoint.java
index 972688e..1560e66 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastDefaultEndpoint.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastDefaultEndpoint.java
@@ -43,12 +43,6 @@ public abstract class HazelcastDefaultEndpoint extends DefaultEndpoint {
     protected String hazelcastInstanceName;
     @UriParam
     private HazelcastOperation defaultOperation;
-    @UriParam
-    private HazelcastSedaConfiguration hazelcastSedaConfiguration; // to include component schema docs
-    @UriParam
-    private HazelcastTopicConfiguration hazelcastTopicConfiguration; 
-    @UriParam
-    private HazelcastQueueConfiguration hazelcastQueueConfiguration; 
 
     public HazelcastDefaultEndpoint(HazelcastInstance hazelcastInstance, String endpointUri, Component component) {
         this(hazelcastInstance, endpointUri, component, null);
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueEndpoint.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueEndpoint.java
index d1a9241..7629262 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueEndpoint.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/queue/HazelcastQueueEndpoint.java
@@ -28,13 +28,15 @@ import org.apache.camel.component.hazelcast.HazelcastCommand;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
 import org.apache.camel.component.hazelcast.HazelcastOperation;
 import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 
 /**
  * The hazelcast-queue component is used to access <a href="http://www.hazelcast.com/">Hazelcast</a> distributed queue.
  */
 @UriEndpoint(firstVersion = "2.7.0", scheme = "hazelcast-queue", title = "Hazelcast Queue", syntax = "hazelcast-queue:cacheName", label = "cache,datagrid")
 public class HazelcastQueueEndpoint extends HazelcastDefaultEndpoint {
-    
+
+    @UriParam
     private final HazelcastQueueConfiguration configuration;
 
     public HazelcastQueueEndpoint(HazelcastInstance hazelcastInstance, String endpointUri, Component component, String cacheName, final HazelcastQueueConfiguration configuration) {
@@ -44,6 +46,10 @@ public class HazelcastQueueEndpoint extends HazelcastDefaultEndpoint {
         setDefaultOperation(HazelcastOperation.ADD);
     }
 
+    public HazelcastQueueConfiguration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
         HazelcastQueueConsumer answer = new HazelcastQueueConsumer(hazelcastInstance, this, processor, cacheName, configuration);
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaEndpoint.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaEndpoint.java
index bb95a74..c648aa4 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaEndpoint.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/seda/HazelcastSedaEndpoint.java
@@ -26,6 +26,7 @@ import org.apache.camel.component.hazelcast.HazelcastCommand;
 import org.apache.camel.component.hazelcast.HazelcastDefaultComponent;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
 import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -35,6 +36,8 @@ import org.apache.camel.util.ObjectHelper;
 public class HazelcastSedaEndpoint extends HazelcastDefaultEndpoint {
 
     private final BlockingQueue<Object> queue;
+
+    @UriParam
     private final HazelcastSedaConfiguration configuration;
 
     public HazelcastSedaEndpoint(final HazelcastInstance hazelcastInstance, final String uri, final HazelcastDefaultComponent component, final HazelcastSedaConfiguration configuration) {
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/topic/HazelcastTopicEndpoint.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/topic/HazelcastTopicEndpoint.java
index 50eb1b5..a526a3c 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/topic/HazelcastTopicEndpoint.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/topic/HazelcastTopicEndpoint.java
@@ -26,6 +26,7 @@ import org.apache.camel.component.hazelcast.HazelcastCommand;
 import org.apache.camel.component.hazelcast.HazelcastDefaultEndpoint;
 import org.apache.camel.component.hazelcast.HazelcastOperation;
 import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 
 /**
  * The hazelcast-topic component is used to access <a href="http://www.hazelcast.com/">Hazelcast</a> distributed topic.
@@ -33,6 +34,7 @@ import org.apache.camel.spi.UriEndpoint;
 @UriEndpoint(firstVersion = "2.15.0", scheme = "hazelcast-topic", title = "Hazelcast Topic", syntax = "hazelcast-topic:cacheName", label = "cache,datagrid")
 public class HazelcastTopicEndpoint extends HazelcastDefaultEndpoint implements MultipleConsumersSupport {
 
+    @UriParam
     private final HazelcastTopicConfiguration configuration;
     
     public HazelcastTopicEndpoint(HazelcastInstance hazelcastInstance, String endpointUri, Component component, String cacheName, final HazelcastTopicConfiguration configuration) {
@@ -42,6 +44,10 @@ public class HazelcastTopicEndpoint extends HazelcastDefaultEndpoint implements
         setDefaultOperation(HazelcastOperation.PUBLISH);
     }
 
+    public HazelcastTopicConfiguration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
         HazelcastTopicConsumer answer = new HazelcastTopicConsumer(hazelcastInstance, this, processor, cacheName, configuration.isReliable());
diff --git a/components/camel-hdfs/src/main/docs/hdfs-component.adoc b/components/camel-hdfs/src/main/docs/hdfs-component.adoc
index 4f534c5..8be1bba 100644
--- a/components/camel-hdfs/src/main/docs/hdfs-component.adoc
+++ b/components/camel-hdfs/src/main/docs/hdfs-component.adoc
@@ -133,7 +133,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-hipchat/src/main/docs/hipchat-component.adoc b/components/camel-hipchat/src/main/docs/hipchat-component.adoc
index b4c07d8..814cb0c 100644
--- a/components/camel-hipchat/src/main/docs/hipchat-component.adoc
+++ b/components/camel-hipchat/src/main/docs/hipchat-component.adoc
@@ -89,7 +89,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-iec60870/src/main/docs/iec60870-client-component.adoc b/components/camel-iec60870/src/main/docs/iec60870-client-component.adoc
index a7ba118..b953838 100644
--- a/components/camel-iec60870/src/main/docs/iec60870-client-component.adoc
+++ b/components/camel-iec60870/src/main/docs/iec60870-client-component.adoc
@@ -93,7 +93,7 @@ with the following path and query parameters:
 | *timeout1* (connection) | Timeout T1 in milliseconds. | 15000 | int
 | *timeout2* (connection) | Timeout T2 in milliseconds. | 10000 | int
 | *timeout3* (connection) | Timeout T3 in milliseconds. | 20000 | int
-| *causeSourceAddress* (data) | Whether to include the source address | true | boolean
+| *causeSourceAddress* (data) | Whether to include the source address |  | byte
 | *ignoreBackgroundScan* (data) | Whether background scan transmissions should be ignored. | true | boolean
 | *ignoreDaylightSavingTime* (data) | Whether to ignore or respect DST | false | boolean
 | *timeZone* (data) | The timezone to use. May be any Java time zone string | UTC | TimeZone
diff --git a/components/camel-iec60870/src/main/docs/iec60870-server-component.adoc b/components/camel-iec60870/src/main/docs/iec60870-server-component.adoc
index 0d5e39d..fb47c82 100644
--- a/components/camel-iec60870/src/main/docs/iec60870-server-component.adoc
+++ b/components/camel-iec60870/src/main/docs/iec60870-server-component.adoc
@@ -97,7 +97,7 @@ with the following path and query parameters:
 | *timeout1* (connection) | Timeout T1 in milliseconds. | 15000 | int
 | *timeout2* (connection) | Timeout T2 in milliseconds. | 10000 | int
 | *timeout3* (connection) | Timeout T3 in milliseconds. | 20000 | int
-| *causeSourceAddress* (data) | Whether to include the source address | true | boolean
+| *causeSourceAddress* (data) | Whether to include the source address |  | byte
 | *ignoreBackgroundScan* (data) | Whether background scan transmissions should be ignored. | true | boolean
 | *ignoreDaylightSavingTime* (data) | Whether to ignore or respect DST | false | boolean
 | *timeZone* (data) | The timezone to use. May be any Java time zone string | UTC | TimeZone
diff --git a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/AbstractIecEndpoint.java b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/AbstractIecEndpoint.java
index e5521e3..d912107 100644
--- a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/AbstractIecEndpoint.java
+++ b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/AbstractIecEndpoint.java
@@ -78,6 +78,26 @@ public abstract class AbstractIecEndpoint<T extends AbstractConnectionMultiplexo
         this.address = requireNonNull(address);
     }
 
+    public ClientOptions getConnectionOptions() {
+        return connectionOptions;
+    }
+
+    public ProtocolOptions getProtocolOptions() {
+        return protocolOptions;
+    }
+
+    public DataModuleOptions getDataModuleOptions() {
+        return dataModuleOptions;
+    }
+
+    public String getConnectionId() {
+        return connectionId;
+    }
+
+    public void setConnectionId(String connectionId) {
+        this.connectionId = connectionId;
+    }
+
     public ObjectAddress getAddress() {
         return this.address;
     }
diff --git a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/BaseOptions.java b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/BaseOptions.java
index d0c8de6..0593a68 100644
--- a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/BaseOptions.java
+++ b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/BaseOptions.java
@@ -32,7 +32,7 @@ public abstract class BaseOptions<T extends BaseOptions<T>> {
     /**
      * Protocol options
      */
-    @UriParam(javaType = "ProtocolOptions")
+    @UriParam(javaType = "org.eclipse.neoscada.protocol.iec60870.ProtocolOptions")
     private ProtocolOptions.Builder protocolOptions;
 
     // dummy for doc generation
diff --git a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/client/ClientOptions.java b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/client/ClientOptions.java
index 8330dcc..8ca8cd8 100644
--- a/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/client/ClientOptions.java
+++ b/components/camel-iec60870/src/main/java/org/apache/camel/component/iec60870/client/ClientOptions.java
@@ -30,7 +30,7 @@ public class ClientOptions extends BaseOptions<ClientOptions> {
     /**
      * Data module options
      */
-    @UriParam(javaType = "DataModuleOptions")
+    @UriParam(javaType = "org.eclipse.neoscada.protocol.iec60870.client.data.DataModuleOptions")
     private DataModuleOptions.Builder dataModuleOptions;
 
     // dummy for doc generation
@@ -38,14 +38,14 @@ public class ClientOptions extends BaseOptions<ClientOptions> {
      * Whether background scan transmissions should be ignored.
      */
     @UriParam(label = "data", defaultValue = "true")
-    private boolean ignoreBackgroundScan;
+    private boolean ignoreBackgroundScan = true;
 
     // dummy for doc generation
     /**
      * Whether to include the source address
      */
-    @UriParam(label = "data", defaultValue = "true")
-    private boolean causeSourceAddress;
+    @UriParam(label = "data")
+    private byte causeSourceAddress;
 
     public ClientOptions() {
         this.dataModuleOptions = new DataModuleOptions.Builder();
@@ -80,12 +80,13 @@ public class ClientOptions extends BaseOptions<ClientOptions> {
 
     // wrapper methods - DataModuleOptions
 
-    public void setCauseSourceAddress(final Byte causeSourceAddress) {
-        this.dataModuleOptions.setCauseSourceAddress(causeSourceAddress);
+    public byte getCauseSourceAddress() {
+        return causeSourceAddress;
     }
 
-    public Byte getCauseSourceAddress() {
-        return this.dataModuleOptions.getCauseSourceAddress();
+    public void setCauseSourceAddress(final byte causeSourceAddress) {
+        this.causeSourceAddress = causeSourceAddress;
+        this.dataModuleOptions.setCauseSourceAddress(causeSourceAddress);
     }
 
     public void setIgnoreBackgroundScan(final boolean ignoreBackgroundScan) {
diff --git a/components/camel-ignite/src/main/docs/ignite-events-component.adoc b/components/camel-ignite/src/main/docs/ignite-events-component.adoc
index d9ac803..748d3e8 100644
--- a/components/camel-ignite/src/main/docs/ignite-events-component.adoc
+++ b/components/camel-ignite/src/main/docs/ignite-events-component.adoc
@@ -52,7 +52,7 @@ with the following path and query parameters:
 | Name | Description | Default | Type
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *clusterGroupExpression* (consumer) | The cluster group expression. |  | ClusterGroupExpression
-| *events* (consumer) | The event IDs to subscribe to as a Set directly where the IDs are the different constants in org.apache.ignite.events.EventType. | EventType.EVTS_ALL | SetOrString
+| *events* (consumer) | The event types to subscribe to as a comma-separated string of event constants as defined in EventType. For example: EVT_CACHE_ENTRY_CREATED,EVT_CACHE_OBJECT_REMOVED,EVT_IGFS_DIR_CREATED. | EVTS_ALL | String
 | *propagateIncomingBodyIfNo ReturnValue* (consumer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
 | *treatCollectionsAsCache Objects* (consumer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsConsumer.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsConsumer.java
index 9f448a6..d0177a8 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsConsumer.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsConsumer.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.ignite.events;
 
 import java.util.Arrays;
+import java.util.List;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
@@ -72,12 +73,11 @@ public class IgniteEventsConsumer extends DefaultConsumer {
     protected void doStart() throws Exception {
         super.doStart();
 
-        if (endpoint.getEvents() != null && endpoint.getEvents().size() > 0) {
-            eventTypes = new int[endpoint.getEvents().size()];
-            int counter = 0;
-            for (Integer i : endpoint.getEvents()) {
-                eventTypes[counter++] = i;
-            }
+        List<Integer> ids = endpoint.getEventsAsIds();
+        eventTypes = new int[ids.size()];
+        int counter = 0;
+        for (Integer i : ids) {
+            eventTypes[counter++] = i;
         }
 
         events.localListen(predicate, eventTypes);
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
index fb9f760..5d76301 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/events/IgniteEventsEndpoint.java
@@ -17,8 +17,10 @@
 package org.apache.camel.component.ignite.events;
 
 import java.lang.reflect.Field;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -49,20 +51,14 @@ public class IgniteEventsEndpoint extends AbstractIgniteEndpoint {
     @UriPath
     private String endpointId;
 
-    @UriParam(label = "consumer", javaType = "Set<Integer> or String", defaultValue = "EventType.EVTS_ALL")
-    private Set<Integer> events;
+    @UriParam(label = "consumer", defaultValue = "EVTS_ALL")
+    private String events = "EVTS_ALL";
 
     @UriParam(label = "consumer")
     private ClusterGroupExpression clusterGroupExpression;
 
     public IgniteEventsEndpoint(String uri, String remaining, Map<String, Object> parameters, IgniteEventsComponent igniteComponent) {
         super(uri, igniteComponent);
-
-        // Initialize subscribed event types with ALL.
-        events = new HashSet<>();
-        for (Integer eventType : EventType.EVTS_ALL) {
-            events.add(eventType);
-        }
     }
 
     @Override
@@ -116,50 +112,46 @@ public class IgniteEventsEndpoint extends AbstractIgniteEndpoint {
 
     /**
      * Gets the event types to subscribe to.
-     * 
-     * @return
      */
-    public Set<Integer> getEvents() {
+    public String getEvents() {
         return events;
     }
 
     /**
-     * The event IDs to subscribe to as a Set<Integer> directly where
-     * the IDs are the different constants in org.apache.ignite.events.EventType.
-     * 
-     * @param events
-     */
-    public void setEvents(Set<Integer> events) {
-        this.events = events;
-    }
-
-    /**
      * The event types to subscribe to as a comma-separated string of event constants as defined in {@link EventType}.
-     * <p>
      * For example: EVT_CACHE_ENTRY_CREATED,EVT_CACHE_OBJECT_REMOVED,EVT_IGFS_DIR_CREATED.
-     * 
-     * @param events
      */
     public void setEvents(String events) {
-        this.events = new HashSet<>();
-        Set<String> requestedEvents = new HashSet<>(Arrays.asList(events.toUpperCase().split(",")));
-        Field[] fields = EventType.class.getDeclaredFields();
-        for (Field field : fields) {
-            if (!requestedEvents.contains(field.getName())) {
-                continue;
+        this.events = events;
+    }
+
+    public List<Integer> getEventsAsIds() {
+        List<Integer> answer = new ArrayList<>();
+
+        if (events.equals("EVTS_ALL")) {
+            for (Integer eventType : EventType.EVTS_ALL) {
+                answer.add(eventType);
             }
-            try {
-                this.events.add(field.getInt(null));
-            } catch (Exception e) {
-                throw new IllegalArgumentException("Problem while resolving event type. See stacktrace.", e);
+        } else {
+            Set<String> requestedEvents = new HashSet<>(Arrays.asList(events.toUpperCase().split(",")));
+            Field[] fields = EventType.class.getDeclaredFields();
+            for (Field field : fields) {
+                if (!requestedEvents.contains(field.getName())) {
+                    continue;
+                }
+                try {
+                    answer.add(field.getInt(null));
+                } catch (Exception e) {
+                    throw new IllegalArgumentException("Problem while resolving event type. See stacktrace.", e);
+                }
             }
         }
+
+        return answer;
     }
 
     /**
      * Gets the cluster group expression.
-     * 
-     * @return cluster group expression
      */
     public ClusterGroupExpression getClusterGroupExpression() {
         return clusterGroupExpression;
@@ -167,8 +159,6 @@ public class IgniteEventsEndpoint extends AbstractIgniteEndpoint {
 
     /**
      * The cluster group expression.
-     * 
-     * @param clusterGroupExpression cluster group expression
      */
     public void setClusterGroupExpression(ClusterGroupExpression clusterGroupExpression) {
         this.clusterGroupExpression = clusterGroupExpression;
diff --git a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteEventsTest.java b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteEventsTest.java
index 12be923..d2239f7 100644
--- a/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteEventsTest.java
+++ b/components/camel-ignite/src/test/java/org/apache/camel/component/ignite/IgniteEventsTest.java
@@ -86,35 +86,6 @@ public class IgniteEventsTest extends AbstractIgniteTest {
     }
 
     @Test
-    public void testConsumeFilteredEventsWithRef() throws Exception {
-        context.getRegistry().bind("filter", Sets.newHashSet(EventType.EVT_CACHE_OBJECT_PUT));
-
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("ignite-events:" + resourceUid + "?events=#filter").to("mock:test2");
-            }
-        });
-
-        getMockEndpoint("mock:test2").expectedMessageCount(2);
-
-        IgniteCache<String, String> cache = ignite().getOrCreateCache(resourceUid);
-
-        // Generate cache activity.
-        cache.put(resourceUid, "123");
-        cache.get(resourceUid);
-        cache.remove(resourceUid);
-        cache.get(resourceUid);
-        cache.put(resourceUid, "123");
-
-        assertMockEndpointsSatisfied();
-
-        List<Integer> eventTypes = receivedEventTypes("mock:test2");
-
-        assert_().that(eventTypes).containsExactly(EventType.EVT_CACHE_OBJECT_PUT, EventType.EVT_CACHE_OBJECT_PUT).inOrder();
-    }
-
-    @Test
     public void testConsumeFilteredEventsInline() throws Exception {
         context.addRoutes(new RouteBuilder() {
             @Override
diff --git a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
index 1be9dec..e08f02d 100644
--- a/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
+++ b/components/camel-ipfs/src/main/java/org/apache/camel/component/ipfs/IPFSEndpoint.java
@@ -46,7 +46,8 @@ import org.slf4j.LoggerFactory;
  * The camel-ipfs component provides access to the Interplanetary File System
  * (IPFS).
  */
-@UriEndpoint(firstVersion = "2.23.0", scheme = "ipfs", title = "IPFS", syntax = "ipfs:ipfsHost:ipfsPort/ipfsCmd", producerOnly = true, label = "file,ipfs")
+@UriEndpoint(firstVersion = "2.23.0", scheme = "ipfs", title = "IPFS",
+        syntax = "ipfs:ipfsHost:ipfsPort/ipfsCmd", producerOnly = true, label = "file,ipfs", generateConfigurer = false)
 public class IPFSEndpoint extends DefaultEndpoint {
 
     public static final long DEFAULT_TIMEOUT = 10000L;
diff --git a/components/camel-ironmq/src/main/docs/ironmq-component.adoc b/components/camel-ironmq/src/main/docs/ironmq-component.adoc
index dc166e0..7ede12c 100644
--- a/components/camel-ironmq/src/main/docs/ironmq-component.adoc
+++ b/components/camel-ironmq/src/main/docs/ironmq-component.adoc
@@ -92,7 +92,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/JCacheEndpoint.java b/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/JCacheEndpoint.java
index f6a3225..83d5fa9 100644
--- a/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/JCacheEndpoint.java
+++ b/components/camel-jcache/src/main/java/org/apache/camel/component/jcache/JCacheEndpoint.java
@@ -35,7 +35,7 @@ public class JCacheEndpoint extends DefaultEndpoint {
     @Metadata(required = true)
     private final String cacheName;
     @UriParam
-    private final JCacheConfiguration cacheConfiguration;
+    private final JCacheConfiguration configuration;
 
     private volatile JCacheManager<Object, Object> cacheManager;
 
@@ -43,12 +43,16 @@ public class JCacheEndpoint extends DefaultEndpoint {
         super(uri, component);
 
         this.cacheName = configuration.getCacheName();
-        this.cacheConfiguration = configuration;
+        this.configuration = configuration;
+    }
+
+    public JCacheConfiguration getConfiguration() {
+        return configuration;
     }
 
     @Override
     public Producer createProducer() throws Exception {
-        return new JCacheProducer(this, cacheConfiguration);
+        return new JCacheProducer(this, configuration);
     }
 
     @Override
@@ -58,7 +62,7 @@ public class JCacheEndpoint extends DefaultEndpoint {
 
     @Override
     protected void doStart() throws Exception {
-        cacheManager = JCacheHelper.createManager(cacheConfiguration);
+        cacheManager = JCacheHelper.createManager(configuration);
     }
 
     @Override
diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
index b251411..0ae7136 100644
--- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
+++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
@@ -176,7 +176,7 @@ public abstract class JettyHttpComponent extends HttpCommonComponent implements
         Boolean enableMultipartFilter = getAndRemoveParameter(parameters, "enableMultipartFilter",
                                                               Boolean.class, true);
         Filter multipartFilter = resolveAndRemoveReferenceParameter(parameters, "multipartFilterRef", Filter.class);
-        List<Filter> filters = resolveAndRemoveReferenceListParameter(parameters, "filtersRef", Filter.class);
+        List<Filter> filters = resolveAndRemoveReferenceListParameter(parameters, "filters", Filter.class);
         Boolean enableCors = getAndRemoveParameter(parameters, "enableCORS", Boolean.class, false);
         HeaderFilterStrategy headerFilterStrategy = resolveAndRemoveReferenceParameter(parameters, "headerFilterStrategy", HeaderFilterStrategy.class);
         UrlRewrite urlRewrite = resolveAndRemoveReferenceParameter(parameters, "urlRewrite", UrlRewrite.class);
diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java
index 45d3f03..c7f5f01 100644
--- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java
+++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java
@@ -60,24 +60,19 @@ public abstract class JettyHttpEndpoint extends HttpCommonEndpoint {
     @UriParam(label = "consumer",
             description = "If the option is true, Jetty server will setup the CrossOriginFilter which supports the CORS out of box.")
     private boolean enableCORS;
-    @UriParam(label = "consumer,advanced", javaType = "java.lang.String",
+    @UriParam(label = "consumer,advanced",
             description = "Specifies a comma-delimited set of Handler instances to lookup in your Registry."
             + " These handlers are added to the Jetty servlet context (for example, to add security)."
             + " Important: You can not use different handlers with different Jetty endpoints using the same port number."
             + " The handlers is associated to the port number. If you need different handlers, then use different port numbers.")
     private List<Handler> handlers;
-    @UriParam(label = "consumer,advanced", javaType = "java.lang.String", name = "filtersRef",
+    @UriParam(label = "consumer,advanced",
             description = "Allows using a custom filters which is putted into a list and can be find in the Registry."
             + " Multiple values can be separated by comma.")
     private List<Filter> filters;
     @UriParam(label = "consumer,advanced", prefix = "filter.", multiValue = true,
             description = "Configuration of the filter init parameters. These parameters will be applied to the filter list before starting the jetty server.")
     private Map<String, String> filterInitParameters;
-
-//    @UriParam(label = "consumer,advanced",
-//            description = "Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server."
-//            + " This allows you to get all responses regardless of the HTTP status code.")
-
     @UriParam(label = "consumer,advanced",
             description = "Allows using a custom multipart filter. Note: setting multipartFilterRef forces the value of enableMultipartFilter to true.")
     private Filter multipartFilter;
diff --git a/components/camel-jetty/src/main/docs/jetty-component.adoc b/components/camel-jetty/src/main/docs/jetty-component.adoc
index 296f30c..9c7430e 100644
--- a/components/camel-jetty/src/main/docs/jetty-component.adoc
+++ b/components/camel-jetty/src/main/docs/jetty-component.adoc
@@ -147,8 +147,8 @@ with the following path and query parameters:
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *filterInitParameters* (consumer) | Configuration of the filter init parameters. These parameters will be applied to the filter list before starting the jetty server. |  | Map
-| *filtersRef* (consumer) | Allows using a custom filters which is putted into a list and can be find in the Registry. Multiple values can be separated by comma. |  | String
-| *handlers* (consumer) | Specifies a comma-delimited set of Handler instances to lookup in your Registry. These handlers are added to the Jetty servlet context (for example, to add security). Important: You can not use different handlers with different Jetty endpoints using the same port number. The handlers is associated to the port number. If you need different handlers, then use different port numbers. |  | String
+| *filters* (consumer) | Allows using a custom filters which is putted into a list and can be find in the Registry. Multiple values can be separated by comma. |  | List
+| *handlers* (consumer) | Specifies a comma-delimited set of Handler instances to lookup in your Registry. These handlers are added to the Jetty servlet context (for example, to add security). Important: You can not use different handlers with different Jetty endpoints using the same port number. The handlers is associated to the port number. If you need different handlers, then use different port numbers. |  | List
 | *multipartFilter* (consumer) | Allows using a custom multipart filter. Note: setting multipartFilterRef forces the value of enableMultipartFilter to true. |  | Filter
 | *optionsEnabled* (consumer) | Specifies whether to enable HTTP OPTIONS for this Servlet consumer. By default OPTIONS is turned off. | false | boolean
 | *traceEnabled* (consumer) | Specifies whether to enable HTTP TRACE for this Servlet consumer. By default TRACE is turned off. | false | boolean
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java
index 0fafe2b..74e4874 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java
@@ -100,7 +100,7 @@ public class CustomFiltersTest extends BaseJettyTest {
             public void configure() throws Exception {
 
                 // Test the filter list options
-                from("jetty://http://localhost:{{port}}/testFilters?filtersRef=myFilters&filterInit.keyWord=KEY").process(new Processor() {
+                from("jetty://http://localhost:{{port}}/testFilters?filters=myFilters&filterInit.keyWord=KEY").process(new Processor() {
                     public void process(Exchange exchange) throws Exception {
                         Message in = exchange.getIn();
                         String request = in.getBody(String.class);
diff --git a/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java b/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
index b9b468f..9c3baf8 100644
--- a/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
+++ b/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
@@ -86,6 +86,10 @@ public class JiraEndpoint extends DefaultEndpoint {
         this.configuration = configuration;
     }
 
+    public JiraConfiguration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public void doStart() throws Exception {
         super.doStart();
diff --git a/components/camel-jms/src/main/docs/jms-component.adoc b/components/camel-jms/src/main/docs/jms-component.adoc
index 68efe6d..0a42500 100644
--- a/components/camel-jms/src/main/docs/jms-component.adoc
+++ b/components/camel-jms/src/main/docs/jms-component.adoc
@@ -390,7 +390,7 @@ with the following path and query parameters:
 | *idleConsumerLimit* (advanced) | Specify the limit for the number of consumers that are allowed to be idle at any given time. | 1 | int
 | *idleTaskExecutionLimit* (advanced) | Specifies the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in the case of dynamic scheduling; see the maxConcurrentConsumers setting). There is additional doc available from Spring. | 1 | int
 | *includeAllJMSXProperties* (advanced) | Whether to include all JMSXxxx properties when mapping from JMS to Camel Message. Setting this to true will include properties such as JMSXAppID, and JMSXUserID etc. Note: If you are using a custom headerFilterStrategy then this option does not apply. | false | boolean
-| *jmsKeyFormatStrategy* (advanced) | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache [...]
+| *jmsKeyFormatStrategy* (advanced) | Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification. Camel provides two implementations out of the box: default and passthrough. The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is. Can be used for JMS brokers which do not care whether JMS header keys contain illegal characters. You can provide your own implementation of the org.apache [...]
 | *mapJmsMessage* (advanced) | Specifies whether Camel should auto map the received JMS message to a suited payload type, such as javax.jms.TextMessage to a String etc. | true | boolean
 | *maxMessagesPerTask* (advanced) | The number of messages per task. -1 is unlimited. If you use a range for concurrent consumers (eg min max), then this option can be used to set a value to eg 100 to control how fast the consumers will shrink when less work is required. | -1 | int
 | *messageConverter* (advanced) | To use a custom Spring org.springframework.jms.support.converter.MessageConverter so you can be in control how to map to/from a javax.jms.Message. |  | MessageConverter
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
index 7109b35..2759338 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
@@ -309,7 +309,7 @@ public class JmsConfiguration implements Cloneable {
                     + " Possible values are: Bytes, Map, Object, Stream, Text."
                     + " By default, Camel would determine which JMS message type to use from the In body type. This option allows you to specify it.")
     private JmsMessageType jmsMessageType;
-    @UriParam(label = "advanced", enums = "default,passthrough", javaType = "java.lang.String",
+    @UriParam(label = "advanced", enums = "default,passthrough",
             description = "Pluggable strategy for encoding and decoding JMS keys so they can be compliant with the JMS specification."
                     + " Camel provides two implementations out of the box: default and passthrough."
                     + " The default strategy will safely marshal dots and hyphens (. and -). The passthrough strategy leaves the key as is."
@@ -1213,6 +1213,10 @@ public class JmsConfiguration implements Cloneable {
         return explicitQosEnabled != null ? explicitQosEnabled : false;
     }
 
+    public Boolean getExplicitQosEnabled() {
+        return explicitQosEnabled;
+    }
+
     /**
      * Set if the deliveryMode, priority or timeToLive qualities of service should be used when sending messages.
      * This option is based on Spring's JmsTemplate. The deliveryMode, priority and timeToLive options are applied to the current endpoint.
diff --git a/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXConsumer.java b/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXConsumer.java
index 7c5b37e..1d3a398 100644
--- a/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXConsumer.java
+++ b/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXConsumer.java
@@ -115,7 +115,7 @@ public class JMXConsumer extends DefaultConsumer implements NotificationListener
             try {
                 initNetworkConnection();
             } catch (IOException e) {
-                if (!mJmxEndpoint.getTestConnectionOnStartup()) {
+                if (!mJmxEndpoint.isTestConnectionOnStartup()) {
                     log.warn("Failed to connect to JMX server. >> {}", e.getMessage());
                     scheduleDelayedStart();
                     return;
@@ -197,7 +197,7 @@ public class JMXConsumer extends DefaultConsumer implements NotificationListener
                         || connectionNotification.getType().equals(JMXConnectionNotification.CLOSED) 
                         || connectionNotification.getType().equals(JMXConnectionNotification.FAILED)) {
                 log.warn("Lost JMX connection for : {}", URISupport.sanitizeUri(mJmxEndpoint.getEndpointUri()));
-                if (mJmxEndpoint.getReconnectOnConnectionFailure()) {
+                if (mJmxEndpoint.isReconnectOnConnectionFailure()) {
                     scheduleReconnect();
                 } else {
                     log.warn("The JMX consumer will not be reconnected. Use 'reconnectOnConnectionFailure' to "
diff --git a/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java b/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java
index 0e7af35..961d7e7 100644
--- a/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java
+++ b/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java
@@ -507,7 +507,7 @@ public class JMXEndpoint extends DefaultEndpoint {
         stringToCompare = aStringToCompare;
     }
     
-    public boolean getTestConnectionOnStartup() {
+    public boolean isTestConnectionOnStartup() {
         return this.testConnectionOnStartup;
     }
     
@@ -515,7 +515,7 @@ public class JMXEndpoint extends DefaultEndpoint {
         this.testConnectionOnStartup = testConnectionOnStartup;
     }
     
-    public boolean getReconnectOnConnectionFailure() {
+    public boolean isReconnectOnConnectionFailure() {
         return this.reconnectOnConnectionFailure;
     }
     
diff --git a/components/camel-jooq/src/main/docs/jooq-component.adoc b/components/camel-jooq/src/main/docs/jooq-component.adoc
index 07ab472..cd01b96 100644
--- a/components/camel-jooq/src/main/docs/jooq-component.adoc
+++ b/components/camel-jooq/src/main/docs/jooq-component.adoc
@@ -97,7 +97,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-jpa/src/main/docs/jpa-component.adoc b/components/camel-jpa/src/main/docs/jpa-component.adoc
index 3910fcc..87e6e23 100644
--- a/components/camel-jpa/src/main/docs/jpa-component.adoc
+++ b/components/camel-jpa/src/main/docs/jpa-component.adoc
@@ -181,7 +181,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
index 70ef706..777a0ab 100644
--- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
+++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
@@ -135,7 +135,7 @@ public class JpaEndpoint extends ScheduledPollEndpoint {
         producer.setParameters(getParameters());
         producer.setResultClass(getResultClass());
         producer.setFindEntity(isFindEntity());
-        producer.setUseExecuteUpdate(isUseExecuteUpdate());
+        producer.setUseExecuteUpdate(getUseExecuteUpdate());
         return producer;
     }
 
@@ -499,7 +499,7 @@ public class JpaEndpoint extends ScheduledPollEndpoint {
         this.preDeleteHandler = preDeleteHandler;
     }
 
-    public Boolean isUseExecuteUpdate() {
+    public Boolean getUseExecuteUpdate() {
         return useExecuteUpdate;
     }
 
diff --git a/components/camel-jt400/src/main/docs/jt400-component.adoc b/components/camel-jt400/src/main/docs/jt400-component.adoc
index 500572e..aa1dd66 100644
--- a/components/camel-jt400/src/main/docs/jt400-component.adoc
+++ b/components/camel-jt400/src/main/docs/jt400-component.adoc
@@ -106,7 +106,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Endpoint.java b/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Endpoint.java
index 420274f..4b5d99a 100644
--- a/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Endpoint.java
+++ b/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Endpoint.java
@@ -70,6 +70,10 @@ public class Jt400Endpoint extends ScheduledPollEndpoint implements MultipleCons
         }
     }
 
+    public Jt400Configuration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         if (Jt400Type.DTAQ == configuration.getType()) {
diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConfiguration.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConfiguration.java
index 4c9d0ce..71564fe 100644
--- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConfiguration.java
+++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConfiguration.java
@@ -409,7 +409,7 @@ public class KafkaConfiguration implements Cloneable, HeaderFilterStrategyAware
         addPropertyIfNotNull(props, ConsumerConfig.INTERCEPTOR_CLASSES_CONFIG, getInterceptorClasses());
         addPropertyIfNotNull(props, ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, getAutoOffsetReset());
         addPropertyIfNotNull(props, ConsumerConfig.CONNECTIONS_MAX_IDLE_MS_CONFIG, getConnectionMaxIdleMs());
-        addPropertyIfNotNull(props, ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, isAutoCommitEnable());
+        addPropertyIfNotNull(props, ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, getAutoCommitEnable());
         addPropertyIfNotNull(props, ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG, getPartitionAssignor());
         addPropertyIfNotNull(props, ConsumerConfig.RECEIVE_BUFFER_CONFIG, getReceiveBufferBytes());
         addPropertyIfNotNull(props, ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG, getConsumerRequestTimeoutMs());
@@ -645,10 +645,14 @@ public class KafkaConfiguration implements Cloneable, HeaderFilterStrategyAware
         this.clientId = clientId;
     }
 
-    public Boolean isAutoCommitEnable() {
+    public boolean isAutoCommitEnable() {
         return offsetRepository == null ? autoCommitEnable : false;
     }
 
+    public Boolean getAutoCommitEnable() {
+        return autoCommitEnable;
+    }
+
     /**
      * If true, periodically commit to ZooKeeper the offset of messages already
      * fetched by the consumer. This committed offset will be used when the
diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConsumer.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConsumer.java
index e644a10..aa3bb76 100644
--- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConsumer.java
+++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConsumer.java
@@ -490,7 +490,7 @@ public class KafkaConsumer extends DefaultConsumer {
     }
 
     private boolean isAutoCommitEnabled() {
-        return endpoint.getConfiguration().isAutoCommitEnable() != null && endpoint.getConfiguration().isAutoCommitEnable();
+        return endpoint.getConfiguration().getAutoCommitEnable() != null && endpoint.getConfiguration().getAutoCommitEnable();
     }
 
     protected String serializeOffsetKey(TopicPartition topicPartition) {
diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaComponentTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaComponentTest.java
index ece1a3d..35f2184 100644
--- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaComponentTest.java
+++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/KafkaComponentTest.java
@@ -20,38 +20,28 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.TypeConverter;
 import org.apache.camel.support.jsse.KeyStoreParameters;
 import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.support.jsse.TrustManagersParameters;
+import org.apache.camel.test.junit4.CamelTestSupport;
 import org.apache.kafka.clients.CommonClientConfigs;
 import org.apache.kafka.clients.producer.ProducerConfig;
 import org.apache.kafka.common.config.SaslConfigs;
 import org.apache.kafka.common.config.SslConfigs;
 import org.junit.Test;
-import org.mockito.Mockito;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.mockito.AdditionalAnswers.returnsFirstArg;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.when;
+public class KafkaComponentTest extends CamelTestSupport {
 
-public class KafkaComponentTest {
-
-    private CamelContext context = Mockito.mock(CamelContext.class);
-    private TypeConverter tc = Mockito.mock(TypeConverter.class);
+    @Override
+    public boolean isUseRouteBuilder() {
+        return false;
+    }
 
     @Test
     public void testPropertiesSet() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-        when(context.getTypeConverter()).thenReturn(tc);
-        when(tc.convertTo(boolean.class, Boolean.FALSE)).thenReturn(false);
-
         String uri = "kafka:mytopic?brokers=broker1:12345,broker2:12566&partitioner=com.class.Party";
 
-        KafkaEndpoint endpoint = (KafkaEndpoint) new KafkaComponent(context).createEndpoint(uri);
+        KafkaEndpoint endpoint = context.getEndpoint(uri, KafkaEndpoint.class);
         assertEquals("broker1:12345,broker2:12566", endpoint.getConfiguration().getBrokers());
         assertEquals("mytopic", endpoint.getConfiguration().getTopic());
         assertEquals("com.class.Party", endpoint.getConfiguration().getPartitioner());
@@ -59,16 +49,12 @@ public class KafkaComponentTest {
 
     @Test
     public void testBrokersOnComponent() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-        when(context.getTypeConverter()).thenReturn(tc);
-        when(tc.convertTo(boolean.class, Boolean.FALSE)).thenReturn(false);
-
-        KafkaComponent kafka = new KafkaComponent(context);
+        KafkaComponent kafka = context.getComponent("kafka", KafkaComponent.class);
         kafka.setBrokers("broker1:12345,broker2:12566");
 
         String uri = "kafka:mytopic?partitioner=com.class.Party";
 
-        KafkaEndpoint endpoint = (KafkaEndpoint) kafka.createEndpoint(uri);
+        KafkaEndpoint endpoint = context.getEndpoint(uri, KafkaEndpoint.class);
         assertEquals("broker1:12345,broker2:12566", endpoint.getConfiguration().getBrokers());
         assertEquals("broker1:12345,broker2:12566", endpoint.getComponent().getBrokers());
         assertEquals("mytopic", endpoint.getConfiguration().getTopic());
@@ -77,17 +63,12 @@ public class KafkaComponentTest {
 
     @Test
     public void testAllProducerConfigProperty() throws Exception {
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
-        when(context.getTypeConverter()).thenReturn(tc);
-        when(tc.convertTo(boolean.class, Boolean.FALSE)).thenReturn(false);
-
         Map<String, Object> params = new HashMap<>();
         setProducerProperty(params);
 
         String uri = "kafka:mytopic?brokers=dev1:12345,dev2:12566";
-        String remaining = "mytopic";
 
-        KafkaEndpoint endpoint = new KafkaComponent(context).createEndpoint(uri, remaining, params);
+        KafkaEndpoint endpoint = (KafkaEndpoint) context.getComponent("kafka").createEndpoint(uri, params);
 
         assertEquals("mytopic", endpoint.getConfiguration().getTopic());
         assertEquals("1", endpoint.getConfiguration().getRequestRequiredAcks());
@@ -141,9 +122,8 @@ public class KafkaComponentTest {
         Map<String, Object> params = new HashMap<>();
 
         String uri = "kafka:mytopic?brokers=dev1:12345,dev2:12566";
-        String remaining = "mytopic";
 
-        KafkaEndpoint endpoint = new KafkaComponent(context).createEndpoint(uri, remaining, params);
+        KafkaEndpoint endpoint = (KafkaEndpoint) context.getComponent("kafka").createEndpoint(uri, params);
         assertEquals(endpoint.getConfiguration().createProducerProperties().keySet(), getProducerKeys().keySet());
     }
 
@@ -202,10 +182,7 @@ public class KafkaComponentTest {
         params.put("receiveBufferBytes", 23);
         params.put("requestTimeoutMs", 100);
         params.put("sendBufferBytes", 765);
-        params.put("timeoutMs", 2045);
-        params.put("blockOnBufferFull", false);
         params.put("maxInFlightRequest", 1);
-        params.put("metadataFetchTimeoutMs", 9043);
         params.put("metadataMaxAgeMs", 1029);
         params.put("reconnectBackoffMs", 234);
         params.put("reconnectBackoffMaxMs", 234);
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/AbstractKubernetesEndpoint.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/AbstractKubernetesEndpoint.java
index 10d2d3c..9904f7e 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/AbstractKubernetesEndpoint.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/AbstractKubernetesEndpoint.java
@@ -38,6 +38,10 @@ public abstract class AbstractKubernetesEndpoint extends DefaultEndpoint {
         this.configuration = config;
     }
 
+    public KubernetesConfiguration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public boolean isSingleton() {
         return false;
diff --git a/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java b/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
index 86367ca..f914f8b 100644
--- a/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
+++ b/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
@@ -33,6 +33,8 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -112,10 +114,13 @@ public class LanguageEndpoint extends ResourceEndpoint {
      */
     protected String resolveScript(String script) throws IOException {
         String answer;
+
         if (ResourceHelper.hasScheme(script)) {
             InputStream is = loadResource(script);
             answer = getCamelContext().getTypeConverter().convertTo(String.class, is);
             IOHelper.close(is);
+        } else if (EndpointHelper.isReferenceParameter(script)) {
+            answer = CamelContextHelper.mandatoryLookup(getCamelContext(), script, String.class);
         } else {
             answer = script;
         }
diff --git a/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageProducer.java b/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageProducer.java
index f3beac4..8d802ba 100644
--- a/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageProducer.java
+++ b/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageProducer.java
@@ -22,6 +22,7 @@ import org.apache.camel.CamelExchangeException;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.IOHelper;
@@ -72,6 +73,9 @@ public class LanguageProducer extends DefaultProducer {
                 is = getEndpoint().getResourceAsInputStream();
             } else if (ResourceHelper.hasScheme(script)) {
                 is = ResourceHelper.resolveMandatoryResourceAsInputStream(getEndpoint().getCamelContext(), script);
+            } else if (EndpointHelper.isReferenceParameter(script)) {
+                String ref = "ref:" + script.substring(1);
+                is = ResourceHelper.resolveMandatoryResourceAsInputStream(getEndpoint().getCamelContext(), ref);
             }
 
             if (is != null && !getEndpoint().isBinary()) {
diff --git a/components/camel-log/src/main/docs/log-component.adoc b/components/camel-log/src/main/docs/log-component.adoc
index 23a7668..3682f2f 100644
--- a/components/camel-log/src/main/docs/log-component.adoc
+++ b/components/camel-log/src/main/docs/log-component.adoc
@@ -93,7 +93,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (27 parameters):
+=== Query Parameters (28 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -108,6 +108,7 @@ with the following path and query parameters:
 | *logMask* (producer) | If true, mask sensitive information like password or passphrase in the log. |  | Boolean
 | *marker* (producer) | An optional Marker name to use. |  | String
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
+| *exchangeFormatter* (advanced) | To use a custom exchange formatter |  | ExchangeFormatter
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
 | *maxChars* (formatting) | Limits the number of characters logged per line. | 10000 | int
 | *multiline* (formatting) | If enabled then each information is outputted on a newline. | false | boolean
diff --git a/components/camel-log/src/main/java/org/apache/camel/component/log/LogComponent.java b/components/camel-log/src/main/java/org/apache/camel/component/log/LogComponent.java
index 6964cd5d..403fc89 100644
--- a/components/camel-log/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/components/camel-log/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -56,31 +56,27 @@ public class LogComponent extends DefaultComponent {
                 log.info("More than one {} instance found in the registry. Falling back to creating logger from URI {}.", Logger.class.getName(), uri);
             }
         }
-        
+
+        // first, try to pick up the ExchangeFormatter from the registry
+        ExchangeFormatter logFormatter = getCamelContext().getRegistry().lookupByNameAndType("logFormatter", ExchangeFormatter.class);
+        if (logFormatter != null) {
+            setProperties(logFormatter, parameters);
+        } else if (exchangeFormatter != null) {
+            // do not set properties, the exchangeFormatter is explicitly set, therefore the
+            // user would have set its properties explicitly too
+            logFormatter = exchangeFormatter;
+        }
+
         LogEndpoint endpoint = new LogEndpoint(uri, this);
         endpoint.setLevel(level.name());
-        setProperties(endpoint, parameters);
-      
+        endpoint.setExchangeFormatter(logFormatter);
         if (providedLogger == null) {
             endpoint.setLoggerName(remaining);
         } else {
             endpoint.setProvidedLogger(providedLogger);
         }
+        setProperties(endpoint, parameters);
 
-        // first, try to pick up the ExchangeFormatter from the registry
-        ExchangeFormatter localFormatter = getCamelContext().getRegistry().lookupByNameAndType("logFormatter", ExchangeFormatter.class);
-        if (localFormatter != null) {
-            setProperties(localFormatter, parameters);
-        } else if (localFormatter == null && exchangeFormatter != null) {
-            // do not set properties, the exchangeFormatter is explicitly set, therefore the
-            // user would have set its properties explicitly too
-            localFormatter = exchangeFormatter;
-        } else {
-            // if no formatter is available in the Registry, create a local one of the default type, for a single use
-            localFormatter = new DefaultExchangeFormatter();
-            setProperties(localFormatter, parameters);
-        }
-        endpoint.setLocalFormatter(localFormatter);
         return endpoint;
     }
 
diff --git a/components/camel-log/src/main/java/org/apache/camel/component/log/LogEndpoint.java b/components/camel-log/src/main/java/org/apache/camel/component/log/LogEndpoint.java
index 5c53d5d..0f5234f 100644
--- a/components/camel-log/src/main/java/org/apache/camel/component/log/LogEndpoint.java
+++ b/components/camel-log/src/main/java/org/apache/camel/component/log/LogEndpoint.java
@@ -62,11 +62,47 @@ public class LogEndpoint extends ProcessorEndpoint {
     private Boolean groupActiveOnly;
     @UriParam
     private Long groupDelay;
-    // we want to include the uri options of the DefaultExchangeFormatter
-    @UriParam(label = "advanced")
-    private DefaultExchangeFormatter exchangeFormatter;
     @UriParam
     private Boolean logMask;
+    @UriParam(label = "advanced")
+    private ExchangeFormatter exchangeFormatter;
+    @UriParam(label = "formatting", description = "Show the unique exchange ID.")
+    private boolean showExchangeId;
+    @UriParam(label = "formatting", defaultValue = "true", description = "Shows the Message Exchange Pattern (or MEP for short).")
+    private boolean showExchangePattern = true;
+    @UriParam(label = "formatting", description = "Show the exchange properties.")
+    private boolean showProperties;
+    @UriParam(label = "formatting", description = "Show the message headers.")
+    private boolean showHeaders;
+    @UriParam(label = "formatting", defaultValue = "true", description = "Whether to skip line separators when logging the message body."
+            + "This allows to log the message body in one line, setting this option to false will preserve any line separators from the body, which then will log the body as is.")
+    private boolean skipBodyLineSeparator = true;
+    @UriParam(label = "formatting", defaultValue = "true", description = "Show the message body.")
+    private boolean showBody = true;
+    @UriParam(label = "formatting", defaultValue = "true", description = "Show the body Java type.")
+    private boolean showBodyType = true;
+    @UriParam(label = "formatting", description = "If the exchange has an exception, show the exception message (no stacktrace)")
+    private boolean showException;
+    @UriParam(label = "formatting", description = "f the exchange has a caught exception, show the exception message (no stack trace)."
+            + "A caught exception is stored as a property on the exchange (using the key org.apache.camel.Exchange#EXCEPTION_CAUGHT and for instance a doCatch can catch exceptions.")
+    private boolean showCaughtException;
+    @UriParam(label = "formatting", description = "Show the stack trace, if an exchange has an exception. Only effective if one of showAll, showException or showCaughtException are enabled.")
+    private boolean showStackTrace;
+    @UriParam(label = "formatting", description = "Quick option for turning all options on. (multiline, maxChars has to be manually set if to be used)")
+    private boolean showAll;
+    @UriParam(label = "formatting", description = "If enabled then each information is outputted on a newline.")
+    private boolean multiline;
+    @UriParam(label = "formatting", description = "If enabled Camel will on Future objects wait for it to complete to obtain the payload to be logged.")
+    private boolean showFuture;
+    @UriParam(label = "formatting", description = "Whether Camel should show stream bodies or not (eg such as java.io.InputStream). Beware if you enable this option then "
+            + "you may not be able later to access the message body as the stream have already been read by this logger. To remedy this you will have to use Stream Caching.")
+    private boolean showStreams;
+    @UriParam(label = "formatting", description = "If enabled Camel will output files")
+    private boolean showFiles;
+    @UriParam(label = "formatting", defaultValue = "10000", description = "Limits the number of characters logged per line.")
+    private int maxChars = 10000;
+    @UriParam(label = "formatting", enums = "Default,Tab,Fixed", defaultValue = "Default", description = "Sets the outputs style to use.")
+    private DefaultExchangeFormatter.OutputStyle style = DefaultExchangeFormatter.OutputStyle.Default;
 
     public LogEndpoint() {
     }
@@ -81,6 +117,33 @@ public class LogEndpoint extends ProcessorEndpoint {
     }
 
     @Override
+    protected void doInit() throws Exception {
+        super.doInit();
+
+        this.localFormatter = exchangeFormatter;
+        if (this.localFormatter == null) {
+            DefaultExchangeFormatter def = new DefaultExchangeFormatter();
+            def.setShowExchangeId(showExchangeId);
+            def.setShowExchangePattern(showExchangePattern);
+            def.setShowProperties(showProperties);
+            def.setShowHeaders(showHeaders);
+            def.setSkipBodyLineSeparator(skipBodyLineSeparator);
+            def.setShowBody(showBody);
+            def.setShowBodyType(showBodyType);
+            def.setShowException(showException);
+            def.setShowStackTrace(showStackTrace);
+            def.setShowAll(showAll);
+            def.setMultiline(multiline);
+            def.setShowFuture(showFuture);
+            def.setShowStreams(showStreams);
+            def.setShowFiles(showFiles);
+            def.setMaxChars(maxChars);
+            def.setStyle(style);
+            this.localFormatter = def;
+        }
+    }
+
+    @Override
     protected void doStart() throws Exception {
         if (logger == null) {
             logger = createLogger();
@@ -288,4 +351,150 @@ public class LogEndpoint extends ProcessorEndpoint {
         this.logMask = logMask;
     }
 
+    public ExchangeFormatter getExchangeFormatter() {
+        return exchangeFormatter;
+    }
+
+    /**
+     * To use a custom exchange formatter
+     */
+    public void setExchangeFormatter(ExchangeFormatter exchangeFormatter) {
+        this.exchangeFormatter = exchangeFormatter;
+    }
+
+    public boolean isShowExchangeId() {
+        return showExchangeId;
+    }
+
+    public void setShowExchangeId(boolean showExchangeId) {
+        this.showExchangeId = showExchangeId;
+    }
+
+    public boolean isShowExchangePattern() {
+        return showExchangePattern;
+    }
+
+    public void setShowExchangePattern(boolean showExchangePattern) {
+        this.showExchangePattern = showExchangePattern;
+    }
+
+    public boolean isShowProperties() {
+        return showProperties;
+    }
+
+    public void setShowProperties(boolean showProperties) {
+        this.showProperties = showProperties;
+    }
+
+    public boolean isShowHeaders() {
+        return showHeaders;
+    }
+
+    public void setShowHeaders(boolean showHeaders) {
+        this.showHeaders = showHeaders;
+    }
+
+    public boolean isSkipBodyLineSeparator() {
+        return skipBodyLineSeparator;
+    }
+
+    public void setSkipBodyLineSeparator(boolean skipBodyLineSeparator) {
+        this.skipBodyLineSeparator = skipBodyLineSeparator;
+    }
+
+    public boolean isShowBody() {
+        return showBody;
+    }
+
+    public void setShowBody(boolean showBody) {
+        this.showBody = showBody;
+    }
+
+    public boolean isShowBodyType() {
+        return showBodyType;
+    }
+
+    public void setShowBodyType(boolean showBodyType) {
+        this.showBodyType = showBodyType;
+    }
+
+    public boolean isShowException() {
+        return showException;
+    }
+
+    public void setShowException(boolean showException) {
+        this.showException = showException;
+    }
+
+    public boolean isShowCaughtException() {
+        return showCaughtException;
+    }
+
+    public void setShowCaughtException(boolean showCaughtException) {
+        this.showCaughtException = showCaughtException;
+    }
+
+    public boolean isShowStackTrace() {
+        return showStackTrace;
+    }
+
+    public void setShowStackTrace(boolean showStackTrace) {
+        this.showStackTrace = showStackTrace;
+    }
+
+    public boolean isShowAll() {
+        return showAll;
+    }
+
+    public void setShowAll(boolean showAll) {
+        this.showAll = showAll;
+    }
+
+    public boolean isMultiline() {
+        return multiline;
+    }
+
+    public void setMultiline(boolean multiline) {
+        this.multiline = multiline;
+    }
+
+    public boolean isShowFuture() {
+        return showFuture;
+    }
+
+    public void setShowFuture(boolean showFuture) {
+        this.showFuture = showFuture;
+    }
+
+    public boolean isShowStreams() {
+        return showStreams;
+    }
+
+    public void setShowStreams(boolean showStreams) {
+        this.showStreams = showStreams;
+    }
+
+    public boolean isShowFiles() {
+        return showFiles;
+    }
+
+    public void setShowFiles(boolean showFiles) {
+        this.showFiles = showFiles;
+    }
+
+    public int getMaxChars() {
+        return maxChars;
+    }
+
+    public void setMaxChars(int maxChars) {
+        this.maxChars = maxChars;
+    }
+
+    public DefaultExchangeFormatter.OutputStyle getStyle() {
+        return style;
+    }
+
+    public void setStyle(DefaultExchangeFormatter.OutputStyle style) {
+        this.style = style;
+    }
 }
diff --git a/components/camel-lucene/src/main/docs/lucene-component.adoc b/components/camel-lucene/src/main/docs/lucene-component.adoc
index b61c069..3562a79 100644
--- a/components/camel-lucene/src/main/docs/lucene-component.adoc
+++ b/components/camel-lucene/src/main/docs/lucene-component.adoc
@@ -132,11 +132,11 @@ The component supports 11 options, which are listed below.
 | *camel.component.lucene.config.analyzer* | An Analyzer builds TokenStreams, which analyze text. It thus represents a policy for extracting index terms from text. The value for analyzer can be any class that extends the abstract class org.apache.lucene.analysis.Analyzer. Lucene also offers a rich set of analyzers out of the box |  | Analyzer
 | *camel.component.lucene.config.authority* | Operation to do such as insert or query. |  | String
 | *camel.component.lucene.config.host* | The URL to the lucene server |  | String
-| *camel.component.lucene.config.index-directory* | A file system directory in which index files are created upon analysis of the document by the specified analyzer |  | File
+| *camel.component.lucene.config.index-dir* | A file system directory in which index files are created upon analysis of the document by the specified analyzer |  | File
 | *camel.component.lucene.config.lucene-version* | An integer value that limits the result set of the search operation |  | Version
 | *camel.component.lucene.config.max-hits* | An integer value that limits the result set of the search operation |  | Integer
 | *camel.component.lucene.config.operation* | Operation to do such as insert or query. |  | LuceneOperation
-| *camel.component.lucene.config.source-directory* | An optional directory containing files to be used to be analyzed and added to the index at producer startup. |  | File
+| *camel.component.lucene.config.src-dir* | An optional directory containing files to be used to be analyzed and added to the index at producer startup. |  | File
 | *camel.component.lucene.config.uri* |  |  | URI
 | *camel.component.lucene.enabled* | Enable lucene component | true | Boolean
 |===
diff --git a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneConfiguration.java b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneConfiguration.java
index d7eb340..17164ad 100644
--- a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneConfiguration.java
+++ b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneConfiguration.java
@@ -39,10 +39,10 @@ public class LuceneConfiguration {
     private String host;
     @UriPath @Metadata(required = true)
     private LuceneOperation operation;
-    @UriParam(name = "srcDir")
-    private File sourceDirectory;
-    @UriParam(name = "indexDir")
-    private File indexDirectory;
+    @UriParam
+    private File srcDir;
+    @UriParam
+    private File indexDir;
     @UriParam
     private Analyzer analyzer;
     @UriParam
@@ -76,9 +76,9 @@ public class LuceneConfiguration {
         }
         setOperation(LuceneOperation.valueOf(op));
 
-        sourceDirectory = component.resolveAndRemoveReferenceParameter(
+        srcDir = component.resolveAndRemoveReferenceParameter(
                 parameters, "srcDir", File.class, null);
-        indexDirectory = component.resolveAndRemoveReferenceParameter(
+        indexDir = component.resolveAndRemoveReferenceParameter(
                 parameters, "indexDir", File.class, new File("file:///./indexDirectory"));
         analyzer = component.resolveAndRemoveReferenceParameter(
                 parameters, "analyzer", Analyzer.class, new StandardAnalyzer());
@@ -145,26 +145,26 @@ public class LuceneConfiguration {
         this.authority = authority;
     }
 
-    public File getSourceDirectory() {
-        return sourceDirectory;
+    public File getSrcDir() {
+        return srcDir;
     }
 
     /**
      * An optional directory containing files to be used to be analyzed and added to the index at producer startup.
      */
-    public void setSourceDirectory(File sourceDirectory) {
-        this.sourceDirectory = sourceDirectory;
+    public void setSrcDir(File srcDir) {
+        this.srcDir = srcDir;
     }
 
-    public File getIndexDirectory() {
-        return indexDirectory;
+    public File getIndexDir() {
+        return indexDir;
     }
 
     /**
      * A file system directory in which index files are created upon analysis of the document by the specified analyzer
      */
-    public void setIndexDirectory(File indexDirectory) {
-        this.indexDirectory = indexDirectory;
+    public void setIndexDir(File indexDir) {
+        this.indexDir = indexDir;
     }
 
     public Analyzer getAnalyzer() {
diff --git a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneEndpoint.java b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneEndpoint.java
index 9234e73..d48a3c8 100644
--- a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneEndpoint.java
+++ b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneEndpoint.java
@@ -45,7 +45,7 @@ public class LuceneEndpoint extends DefaultEndpoint {
         this(endpointUri, component);
         this.config = config;
         if (config.getOperation() == LuceneOperation.insert) {
-            this.indexer = new LuceneIndexer(config.getSourceDirectory(), config.getIndexDirectory(), config.getAnalyzer());  
+            this.indexer = new LuceneIndexer(config.getSrcDir(), config.getIndexDir(), config.getAnalyzer());
             insertFlag = true;
         }
     }
diff --git a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneQueryProducer.java b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneQueryProducer.java
index e9a69c0..293d0c8 100644
--- a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneQueryProducer.java
+++ b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneQueryProducer.java
@@ -35,7 +35,7 @@ public class LuceneQueryProducer extends DefaultProducer {
     public LuceneQueryProducer(Endpoint endpoint, LuceneConfiguration config) throws Exception {
         super(endpoint);
         this.config = config;
-        indexDirectory = config.getIndexDirectory();
+        indexDirectory = config.getIndexDir();
         analyzer = config.getAnalyzer();
         maxNumberOfHits = config.getMaxHits();
     }
diff --git a/components/camel-mail/src/main/docs/mail-component.adoc b/components/camel-mail/src/main/docs/mail-component.adoc
index 18bd15f..4bc14bd 100644
--- a/components/camel-mail/src/main/docs/mail-component.adoc
+++ b/components/camel-mail/src/main/docs/mail-component.adoc
@@ -189,12 +189,12 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
 | *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
-| *sortTerm* (sort) | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. |  | String
+| *sortTerm* (sort) | Sorting order for messages. Only natively supported for IMAP. Emulated to some degree when using POP3 or when IMAP server does not have the SORT capability. |  | SortTerm[]
 | *password* (security) | The password for login |  | String
 | *sslContextParameters* (security) | To configure security using SSLContextParameters. |  | SSLContextParameters
 | *username* (security) | The username for login |  | String
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
index cedec53..f925d8a 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
@@ -55,7 +55,7 @@ public class MailEndpoint extends ScheduledPollEndpoint implements HeaderFilterS
     private int maxMessagesPerPoll;
     @UriParam(label = "consumer,filter", prefix = "searchTerm.", multiValue = true)
     private SearchTerm searchTerm;
-    @UriParam(label = "consumer,sort", javaType = "java.lang.String")
+    @UriParam(label = "consumer,sort")
     private SortTerm[] sortTerm;
     @UriParam(label = "consumer,advanced")
     private MailBoxPostProcessAction postProcessAction;
diff --git a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailComponentTest.java b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailComponentTest.java
index f07ce4e..2b10763 100644
--- a/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailComponentTest.java
+++ b/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailComponentTest.java
@@ -318,7 +318,7 @@ public class MailComponentTest extends CamelTestSupport {
         assertEquals("myhost", endpoint.getConfiguration().getHost());
 
         assertNotNull("Scheduler not set", endpoint.getScheduler());
-        assertTrue("Wrong scheduler class", endpoint.getScheduler() instanceof QuartzScheduledPollConsumerScheduler);
+        assertEquals("quartz", endpoint.getScheduler());
     }
 }
 
diff --git a/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/MetricsComponentTest.java b/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/MetricsComponentTest.java
index edd8862..7eaa38b 100644
--- a/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/MetricsComponentTest.java
+++ b/components/camel-metrics/src/test/java/org/apache/camel/component/metrics/MetricsComponentTest.java
@@ -24,7 +24,9 @@ import java.util.Map;
 import com.codahale.metrics.MetricRegistry;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.impl.engine.DefaultBeanIntrospection;
 import org.apache.camel.spi.Registry;
 import org.junit.Before;
 import org.junit.Test;
@@ -48,7 +50,7 @@ import static org.mockito.Mockito.when;
 public class MetricsComponentTest {
 
     @Mock
-    private CamelContext camelContext;
+    private ExtendedCamelContext camelContext;
 
     @Mock
     private Registry camelRegistry;
@@ -72,6 +74,8 @@ public class MetricsComponentTest {
         when(camelContext.getRegistry()).thenReturn(camelRegistry);
         when(camelContext.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
         when(camelRegistry.lookupByNameAndType(MetricsComponent.METRIC_REGISTRY_NAME, MetricRegistry.class)).thenReturn(metricRegistry);
+        when(camelContext.adapt(ExtendedCamelContext.class)).thenReturn(camelContext);
+        when(camelContext.getBeanIntrospection()).thenReturn(new DefaultBeanIntrospection());
 
         Map<String, Object> params = new HashMap<>();
         Long value = System.currentTimeMillis();
@@ -95,6 +99,8 @@ public class MetricsComponentTest {
         when(camelContext.getRegistry()).thenReturn(camelRegistry);
         when(camelContext.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
         when(camelRegistry.lookupByNameAndType(MetricsComponent.METRIC_REGISTRY_NAME, MetricRegistry.class)).thenReturn(metricRegistry);
+        when(camelContext.adapt(ExtendedCamelContext.class)).thenReturn(camelContext);
+        when(camelContext.getBeanIntrospection()).thenReturn(new DefaultBeanIntrospection());
         Map<String, Object> params = new HashMap<>();
         Long value = System.currentTimeMillis();
         params.put("mark", value);
diff --git a/components/camel-milo/src/main/docs/milo-client-component.adoc b/components/camel-milo/src/main/docs/milo-client-component.adoc
index 5a22266..8cfe8c1 100644
--- a/components/camel-milo/src/main/docs/milo-client-component.adoc
+++ b/components/camel-milo/src/main/docs/milo-client-component.adoc
@@ -107,8 +107,8 @@ with the following path and query parameters:
 | *defaultAwaitWrites* (common) | Default await setting for writes | false | boolean
 | *discoveryEndpointSuffix* (common) | A suffix for endpoint URI when discovering |  | String
 | *discoveryEndpointUri* (common) | An alternative discovery URI |  | String
-| *method* (common) | The method definition (see Method ID) |  | ExpandedNodeId
-| *node* (common) | The node definition (see Node ID) |  | ExpandedNodeId
+| *method* (common) | The method definition (see Method ID) |  | String
+| *node* (common) | The node definition (see Node ID) |  | String
 | *samplingInterval* (common) | The sampling interval in milliseconds |  | Double
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
@@ -124,7 +124,7 @@ with the following path and query parameters:
 | *keyPassword* (client) | The key password |  | String
 | *keyStorePassword* (client) | The keystore password |  | String
 | *keyStoreType* (client) | The key store type |  | String
-| *keyStoreUrl* (client) | The URL where the key should be loaded from |  | URL
+| *keyStoreUrl* (client) | The URL where the key should be loaded from |  | String
 | *maxPendingPublishRequests* (client) | The maximum number of pending publish requests |  | Long
 | *maxResponseMessageSize* (client) | The maximum number of bytes a response message may have |  | Long
 | *overrideHost* (client) | Override the server reported endpoint host with the host from the endpoint URI. | false | boolean
diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
index 268b52e..871bca9 100644
--- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
+++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
@@ -86,7 +86,7 @@ public class MiloClientConfiguration implements Cloneable {
     private Long maxResponseMessageSize;
 
     @UriParam(label = "client")
-    private URL keyStoreUrl;
+    private String keyStoreUrl;
 
     @UriParam(label = "client")
     private String keyStoreType = KeyStoreLoader.DEFAULT_KEY_STORE_TYPE;
@@ -277,11 +277,11 @@ public class MiloClientConfiguration implements Cloneable {
     /**
      * The URL where the key should be loaded from
      */
-    public void setKeyStoreUrl(final String keyStoreUrl) throws MalformedURLException {
-        this.keyStoreUrl = keyStoreUrl != null ? new URL(keyStoreUrl) : null;
+    public void setKeyStoreUrl(String keyStoreUrl) {
+        this.keyStoreUrl = keyStoreUrl;
     }
 
-    public URL getKeyStoreUrl() {
+    public String getKeyStoreUrl() {
         return this.keyStoreUrl;
     }
 
diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConnection.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConnection.java
index 28dba62..9fb868e 100644
--- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConnection.java
+++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConnection.java
@@ -45,6 +45,10 @@ public class MiloClientConnection implements AutoCloseable {
         this.configuration = configuration.clone();
     }
 
+    public MiloClientConfiguration getConfiguration() {
+        return configuration;
+    }
+
     protected void init() throws Exception {
         this.manager = new SubscriptionManager(this.configuration, Stack.sharedScheduledExecutor(), 10_000);
     }
diff --git a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java
index 11ef04e..46a9e73 100644
--- a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java
+++ b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java
@@ -46,13 +46,13 @@ public class MiloClientEndpoint extends DefaultEndpoint {
      * The node definition (see Node ID)
      */
     @UriParam
-    private ExpandedNodeId node;
+    private String node;
 
     /**
      * The method definition (see Method ID)
      */
     @UriParam
-    private ExpandedNodeId method;
+    private String method;
 
     /**
      * The sampling interval in milliseconds
@@ -64,7 +64,7 @@ public class MiloClientEndpoint extends DefaultEndpoint {
      * The client configuration
      */
     @UriParam
-    private MiloClientConfiguration client;
+    private MiloClientConfiguration configuration;
 
     /**
      * Default "await" setting for writes
@@ -86,6 +86,11 @@ public class MiloClientEndpoint extends DefaultEndpoint {
 
         this.component = component;
         this.connection = connection;
+        this.configuration = connection.getConfiguration();
+    }
+
+    public MiloClientConfiguration getConfiguration() {
+        return configuration;
     }
 
     @Override
@@ -120,44 +125,36 @@ public class MiloClientEndpoint extends DefaultEndpoint {
 
     // item configuration
 
-    public void setMethod(final String method) {
-        if (method == null) {
-            this.method = null;
-        } else {
-            this.method = ExpandedNodeId.parse(method);
-        }
+    public void setMethod(String method) {
+        this.method = method;
     }
 
     public String getMethod() {
-        if (this.method != null) {
-            return this.method.toParseableString();
-        } else {
-            return null;
-        }
+        return method;
     }
 
     public void setNode(final String node) {
-        if (node == null) {
-            this.node = null;
-        } else {
-            this.node = ExpandedNodeId.parse(node);
-        }
+        this.node = node;
     }
 
     public String getNode() {
+        return node;
+    }
+
+    ExpandedNodeId getNodeId() {
         if (this.node != null) {
-            return this.node.toParseableString();
+            return ExpandedNodeId.parse(this.node);
         } else {
             return null;
         }
     }
 
-    ExpandedNodeId getNodeId() {
-        return this.node;
-    }
-
     ExpandedNodeId getMethodId() {
-        return this.method;
+        if (this.method != null) {
+            return ExpandedNodeId.parse(this.method);
+        } else {
+            return null;
+        }
     }
 
     public Double getSamplingInterval() {
diff --git a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpEndpoint.java b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpEndpoint.java
index 69869d7..8a0c6d4 100644
--- a/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpEndpoint.java
+++ b/components/camel-mllp/src/main/java/org/apache/camel/component/mllp/MllpEndpoint.java
@@ -45,7 +45,7 @@ import org.slf4j.Logger;
  * <p/>
  */
 @ManagedResource(description = "MLLP Endpoint")
-@UriEndpoint(scheme = "mllp", firstVersion = "2.17.0", title = "MLLP", syntax = "mllp:hostname:port", label = "mllp")
+@UriEndpoint(scheme = "mllp", firstVersion = "2.17.0", title = "MLLP", syntax = "mllp:hostname:port", label = "mllp", generateConfigurer = false)
 public class MllpEndpoint extends DefaultEndpoint {
     // Use constants from MllpProtocolConstants
     @Deprecated()
diff --git a/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java b/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
index 21dcad5..485b431 100644
--- a/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
+++ b/components/camel-mock/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
@@ -499,6 +499,10 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint,
         setExpectedMessageCount(expectedCount);
     }
 
+    public long getAssertPeriod() {
+        return assertPeriod;
+    }
+
     /**
      * Sets a grace period after which the mock endpoint will re-assert
      * to ensure the preliminary assertion is still valid.
@@ -1293,6 +1297,10 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint,
         this.resultWaitTime = resultWaitTime;
     }
 
+    public long getResultMinimumWaitTime() {
+        return resultMinimumWaitTime;
+    }
+
     /**
      * Sets the minimum expected amount of time (in millis) the {@link #assertIsSatisfied()} will
      * wait on a latch until it is satisfied
@@ -1363,6 +1371,10 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint,
         this.reporter = reporter;
     }
 
+    public int getRetainFirst() {
+        return retainFirst;
+    }
+
     /**
      * Specifies to only retain the first n'th number of received {@link Exchange}s.
      * <p/>
@@ -1391,6 +1403,10 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint,
         this.retainFirst = retainFirst;
     }
 
+    public int getRetainLast() {
+        return retainLast;
+    }
+
     /**
      * Specifies to only retain the last n'th number of received {@link Exchange}s.
      * <p/>
@@ -1419,7 +1435,7 @@ public class MockEndpoint extends DefaultEndpoint implements BrowsableEndpoint,
         this.retainLast = retainLast;
     }
 
-    public int isReportGroup() {
+    public int getReportGroup() {
         return reportGroup;
     }
 
diff --git a/components/camel-mongodb-gridfs/src/main/docs/mongodb-gridfs-component.adoc b/components/camel-mongodb-gridfs/src/main/docs/mongodb-gridfs-component.adoc
index 79c9a2d..66be5be 100644
--- a/components/camel-mongodb-gridfs/src/main/docs/mongodb-gridfs-component.adoc
+++ b/components/camel-mongodb-gridfs/src/main/docs/mongodb-gridfs-component.adoc
@@ -59,7 +59,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (19 parameters):
+=== Query Parameters (18 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -69,7 +69,6 @@ with the following path and query parameters:
 | *database* (common) | *Required* Sets the name of the MongoDB database to target |  | String
 | *readPreference* (common) | Sets a MongoDB ReadPreference on the Mongo connection. Read preferences set directly on the connection will be overridden by this setting. The com.mongodb.ReadPreference#valueOf(String) utility method is used to resolve the passed readPreference value. Some examples for the possible values are nearest, primary or secondary etc. |  | ReadPreference
 | *writeConcern* (common) | Set the WriteConcern for write operations on MongoDB using the standard ones. Resolved from the fields of the WriteConcern class by calling the WriteConcern#valueOf(String) method. |  | WriteConcern
-| *writeConcernRef* (common) | Set the WriteConcern for write operations on MongoDB, passing in the bean ref to a custom WriteConcern which exists in the Registry. You can also use standard WriteConcerns by passing in their key. See the {link #setWriteConcern(String) setWriteConcern} method. |  | WriteConcern
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *delay* (consumer) | Sets the delay between polls within the Consumer. Default is 500ms | 500 | long
 | *fileAttributeName* (consumer) | If the QueryType uses a FileAttribute, this sets the name of the attribute that is used. Default is camel-processed. | camel-processed | String
diff --git a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnMarshallerConfiguration.java b/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsConverter.java
similarity index 60%
copy from components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnMarshallerConfiguration.java
copy to components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsConverter.java
index e9e2ad7..3c3f3a9 100644
--- a/components/camel-crypto-cms/src/main/java/org/apache/camel/component/crypto/cms/common/CryptoCmsUnMarshallerConfiguration.java
+++ b/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsConverter.java
@@ -14,14 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.component.crypto.cms.common;
+package org.apache.camel.component.mongodb.gridfs;
 
+import com.mongodb.ReadPreference;
+import com.mongodb.WriteConcern;
+import org.apache.camel.Converter;
 import org.apache.camel.Exchange;
-import org.apache.camel.component.crypto.cms.exception.CryptoCmsException;
 
-public interface CryptoCmsUnMarshallerConfiguration {
+@Converter(loader = true)
+public final class GridFsConverter {
 
-    /** Indicates whether the message in-body is base 64 encocded. */
-    Boolean isFromBase64(Exchange exchange) throws CryptoCmsException;
+    private GridFsConverter() {
+    }
 
+    @Converter
+    public static WriteConcern toWriteConcern(String value, Exchange exchange) {
+        return WriteConcern.valueOf(value);
+    }
+
+    @Converter
+    public static ReadPreference toReadPreference(String value, Exchange exchange) {
+        return ReadPreference.valueOf(value);
+    }
 }
diff --git a/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsEndpoint.java b/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsEndpoint.java
index 32ddd8e..2803fab 100644
--- a/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsEndpoint.java
+++ b/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsEndpoint.java
@@ -44,19 +44,19 @@ public class GridFsEndpoint extends DefaultEndpoint {
     public static final String GRIDFS_CHUNKSIZE = "gridfs.chunksize";
     public static final String GRIDFS_FILE_ID_PRODUCED = "gridfs.fileid";
 
-    @UriPath @Metadata(required = true)
+    @UriPath
+    @Metadata(required = true)
     private String connectionBean;
-    @UriParam @Metadata(required = true)
+    @UriParam
+    @Metadata(required = true)
     private String database;
     @UriParam(defaultValue = GridFS.DEFAULT_BUCKET)
     private String bucket;
     @UriParam(enums = "ACKNOWLEDGED,W1,W2,W3,UNACKNOWLEDGED,JOURNALED,MAJORITY,SAFE")
     private WriteConcern writeConcern;
     @UriParam
-    private WriteConcern writeConcernRef;
-    @UriParam
     private ReadPreference readPreference;
-    
+
     @UriParam(label = "producer")
     private String operation;
 
@@ -66,7 +66,7 @@ public class GridFsEndpoint extends DefaultEndpoint {
     private long initialDelay = 1000;
     @UriParam(label = "consumer", defaultValue = "500")
     private long delay = 500;
-    
+
     @UriParam(label = "consumer", defaultValue = "TimeStamp")
     private QueryStrategy queryStrategy = QueryStrategy.TimeStamp;
     @UriParam(label = "consumer", defaultValue = "camel-timestamps")
@@ -114,20 +114,15 @@ public class GridFsEndpoint extends DefaultEndpoint {
         };
     }
 
-    
+
     @Override
     protected void doStart() throws Exception {
-        if (writeConcern != null && writeConcernRef != null) {
-            String msg = "Cannot set both writeConcern and writeConcernRef at the same time. Respective values: " + writeConcern
-                    + ", " + writeConcernRef + ". Aborting initialization.";
-            throw new IllegalArgumentException(msg);
-        }
         mongoConnection = CamelContextHelper.mandatoryLookup(getCamelContext(), connectionBean, MongoClient.class);
         log.debug("Resolved the connection with the name {} as {}", connectionBean, mongoConnection);
         setWriteReadOptionsOnConnection();
         super.doStart();
     }
-    
+
     @Override
     protected void doStop() throws Exception {
         super.doStop();
@@ -136,13 +131,11 @@ public class GridFsEndpoint extends DefaultEndpoint {
             mongoConnection.close();
         }
     }
-    
+
     private void setWriteReadOptionsOnConnection() {
         // Set the WriteConcern
         if (writeConcern != null) {
             mongoConnection.setWriteConcern(writeConcern);
-        } else if (writeConcernRef != null) {
-            mongoConnection.setWriteConcern(writeConcernRef);
         }
 
         // Set the ReadPreference
@@ -150,27 +143,26 @@ public class GridFsEndpoint extends DefaultEndpoint {
             mongoConnection.setReadPreference(readPreference);
         }
     }
-    
-    
-    
-    
+
     // ======= Getters and setters ===============================================
     public String getConnectionBean() {
         return connectionBean;
     }
+
     /**
      * Name of {@link com.mongodb.Mongo} to use.
      */
     public void setConnectionBean(String connectionBean) {
         this.connectionBean = connectionBean;
     }
-    
+
     public Mongo getMongoConnection() {
         return mongoConnection;
     }
+
     /**
      * Sets the Mongo instance that represents the backing connection
-     * 
+     *
      * @param mongoConnection the connection to the database
      */
     public void setMongoConnection(Mongo mongoConnection) {
@@ -180,111 +172,128 @@ public class GridFsEndpoint extends DefaultEndpoint {
     public DB getDB() {
         return db;
     }
-    
+
     public String getDatabase() {
         return database;
     }
+
     /**
      * Sets the name of the MongoDB database to target
-     * 
+     *
      * @param database name of the MongoDB database
      */
     public void setDatabase(String database) {
         this.database = database;
     }
+
     /**
-     * Sets the name of the GridFS bucket within the database.   Default is "fs".
-     * 
-     * @param database name of the MongoDB database
+     * Sets the name of the GridFS bucket within the database. Default is fs.
      */
     public String getBucket() {
         return bucket;
     }
+
     public void setBucket(String bucket) {
         this.bucket = bucket;
     }
-    
+
     public String getQuery() {
         return query;
     }
+
     /**
      * Additional query parameters (in JSON) that are used to configure the query used for finding
      * files in the GridFsConsumer
+     *
      * @param query
      */
     public void setQuery(String query) {
         this.query = query;
     }
+
     public long getDelay() {
         return delay;
     }
+
     /**
      * Sets the delay between polls within the Consumer.  Default is 500ms
+     *
      * @param delay
      */
     public void setDelay(long delay) {
         this.delay = delay;
     }
+
     public long getInitialDelay() {
         return initialDelay;
     }
+
     /**
      * Sets the initialDelay before the consumer will start polling.  Default is 1000ms
+     *
      * @param initialDelay
      */
     public void setInitialDelay(long initialDelay) {
         this.initialDelay = delay;
     }
-    
+
     /**
      * Sets the QueryStrategy that is used for polling for new files.  Default is Timestamp
-     * @see QueryStrategy
-     * @param s
      */
     public void setQueryStrategy(String s) {
         queryStrategy = QueryStrategy.valueOf(s);
     }
+
+    /**
+     * Sets the QueryStrategy that is used for polling for new files.  Default is Timestamp
+     */
+    public void setQueryStrategy(QueryStrategy queryStrategy) {
+        this.queryStrategy = queryStrategy;
+    }
+
     public QueryStrategy getQueryStrategy() {
         return queryStrategy;
     }
+
     /**
      * If the QueryType uses a persistent timestamp, this sets the name of the collection within
      * the DB to store the timestamp.
-     * @param s
      */
     public void setPersistentTSCollection(String s) {
         persistentTSCollection = s;
     }
+
     public String getPersistentTSCollection() {
         return persistentTSCollection;
     }
+
     /**
      * If the QueryType uses a persistent timestamp, this is the ID of the object in the collection
-     * to store the timestamp.   
-     * @param s
+     * to store the timestamp.
      */
     public void setPersistentTSObject(String id) {
         persistentTSObject = id;
     }
+
     public String getPersistentTSObject() {
         return persistentTSObject;
     }
-    
+
     /**
      * If the QueryType uses a FileAttribute, this sets the name of the attribute that is used. Default is "camel-processed".
-     * @param f
      */
     public void setFileAttributeName(String f) {
         fileAttributeName = f;
     }
+
     public String getFileAttributeName() {
         return fileAttributeName;
-    }   
-    
+    }
+
     /**
      * Set the {@link WriteConcern} for write operations on MongoDB using the standard ones.
      * Resolved from the fields of the WriteConcern class by calling the {@link WriteConcern#valueOf(String)} method.
-     * 
+     *
      * @param writeConcern the standard name of the WriteConcern
      * @see <a href="http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html#valueOf(java.lang.String)">possible options</a>
      */
@@ -292,49 +301,51 @@ public class GridFsEndpoint extends DefaultEndpoint {
         this.writeConcern = WriteConcern.valueOf(writeConcern);
     }
 
-    public WriteConcern getWriteConcern() {
-        return writeConcern;
-    }
-
     /**
-     * Set the {@link WriteConcern} for write operations on MongoDB, passing in the bean ref to a custom WriteConcern which exists in the Registry.
-     * You can also use standard WriteConcerns by passing in their key. See the {@link #setWriteConcern(String) setWriteConcern} method.
-     * 
-     * @param writeConcernRef the name of the bean in the registry that represents the WriteConcern to use
+     * Set the {@link WriteConcern} for write operations on MongoDB using the standard ones.
+     * Resolved from the fields of the WriteConcern class by calling the {@link WriteConcern#valueOf(String)} method.
+     *
+     * @param writeConcern the standard name of the WriteConcern
+     * @see <a href="http://api.mongodb.org/java/current/com/mongodb/WriteConcern.html#valueOf(java.lang.String)">possible options</a>
      */
-    public void setWriteConcernRef(String writeConcernRef) {
-        WriteConcern wc = this.getCamelContext().getRegistry().lookupByNameAndType(writeConcernRef, WriteConcern.class);
-        if (wc == null) {
-            String msg = "Camel MongoDB component could not find the WriteConcern in the Registry. Verify that the "
-                    + "provided bean name (" + writeConcernRef + ")  is correct. Aborting initialization.";
-            throw new IllegalArgumentException(msg);
-        }
-
-        this.writeConcernRef = wc;
+    public void setWriteConcern(WriteConcern writeConcern) {
+        this.writeConcern = writeConcern;
     }
 
-    public WriteConcern getWriteConcernRef() {
-        return writeConcernRef;
+    public WriteConcern getWriteConcern() {
+        return writeConcern;
     }
 
-    /** 
+    /**
      * Sets a MongoDB {@link ReadPreference} on the Mongo connection. Read preferences set directly on the connection will be
      * overridden by this setting.
      * <p/>
      * The {@link com.mongodb.ReadPreference#valueOf(String)} utility method is used to resolve the passed {@code readPreference}
      * value. Some examples for the possible values are {@code nearest}, {@code primary} or {@code secondary} etc.
-     * 
+     *
      * @param readPreference the name of the read preference to set
      */
     public void setReadPreference(String readPreference) {
         this.readPreference = ReadPreference.valueOf(readPreference);
     }
 
+    /**
+     * Sets a MongoDB {@link ReadPreference} on the Mongo connection. Read preferences set directly on the connection will be
+     * overridden by this setting.
+     * <p/>
+     * The {@link com.mongodb.ReadPreference#valueOf(String)} utility method is used to resolve the passed {@code readPreference}
+     * value. Some examples for the possible values are {@code nearest}, {@code primary} or {@code secondary} etc.
+     *
+     * @param readPreference the name of the read preference to set
+     */
+    public void setReadPreference(ReadPreference readPreference) {
+        this.readPreference = readPreference;
+    }
+
     public ReadPreference getReadPreference() {
         return readPreference;
     }
-    
-    
+
     /**
      * Sets the operation this endpoint will execute against GridRS.
      */
@@ -353,6 +364,7 @@ public class GridFsEndpoint extends DefaultEndpoint {
     public void setGridFs(GridFS gridFs) {
         this.gridFs = gridFs;
     }
+
     public DBCollection getFilesCollection() {
         return filesCollection;
     }
diff --git a/components/camel-mongodb/src/main/docs/mongodb-component.adoc b/components/camel-mongodb/src/main/docs/mongodb-component.adoc
index 3497e08..8e8e2e6 100644
--- a/components/camel-mongodb/src/main/docs/mongodb-component.adoc
+++ b/components/camel-mongodb/src/main/docs/mongodb-component.adoc
@@ -101,7 +101,7 @@ with the following path and query parameters:
 | *createCollection* (common) | Create collection during initialisation if it doesn't exist. Default is true. | true | boolean
 | *database* (common) | Sets the name of the MongoDB database to target |  | String
 | *mongoConnection* (common) | Sets the Mongo instance that represents the backing connection |  | MongoClient
-| *operation* (common) | Sets the operation this endpoint will execute against MongoDB. For possible values, see MongoDbOperation. |  | MongoDbOperation
+| *operation* (common) | Sets the operation this endpoint will execute against MongoDB. |  | MongoDbOperation
 | *outputType* (common) | Convert the output of the producer to the selected type : DocumentList Document or MongoIterable. DocumentList or MongoIterable applies to findAll and aggregate. Document applies to all other operations. |  | MongoDbOutputType
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *consumerType* (consumer) | Consumer type. |  | String
diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java
index ffa674b..af38053 100644
--- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java
+++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java
@@ -352,11 +352,7 @@ public class MongoDbEndpoint extends DefaultEndpoint {
     }
 
     /**
-     * Sets the operation this endpoint will execute against MongoDB. For
-     * possible values, see {@link MongoDbOperation}.
-     *
-     * @param operation name of the operation as per catalogued values
-     * @throws CamelMongoDbException
+     * Sets the operation this endpoint will execute against MongoDB.
      */
     public void setOperation(String operation) throws CamelMongoDbException {
         try {
@@ -366,6 +362,13 @@ public class MongoDbEndpoint extends DefaultEndpoint {
         }
     }
 
+    /**
+     * Sets the operation this endpoint will execute against MongoDB.
+     */
+    public void setOperation(MongoDbOperation operation) {
+        this.operation = operation;
+    }
+
     public MongoDbOperation getOperation() {
         return operation;
     }
diff --git a/components/camel-mqtt/src/main/docs/mqtt-component.adoc b/components/camel-mqtt/src/main/docs/mqtt-component.adoc
index 9e1ecd4..c6930da 100644
--- a/components/camel-mqtt/src/main/docs/mqtt-component.adoc
+++ b/components/camel-mqtt/src/main/docs/mqtt-component.adoc
@@ -112,7 +112,7 @@ with the following path and query parameters:
 | *version* (common) | Set to 3.1.1 to use MQTT version 3.1.1. Otherwise defaults to the 3.1 protocol version. | 3.1 | String
 | *willMessage* (common) | The Will message to send. Defaults to a zero length message. |  | String
 | *willQos* (common) | Sets the quality of service to use for the Will message. Defaults to AT_MOST_ONCE. | AtMostOnce | QoS
-| *willRetain* (common) | Set to true if you want the Will to be published with the retain option. |  | QoS
+| *willRetain* (common) | Set to true if you want the Will to be published with the retain option. | false | boolean
 | *willTopic* (common) | If set the server will publish the client's Will message to the specified topics if the client has an unexpected disconnection. |  | String
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
diff --git a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConfiguration.java b/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConfiguration.java
index 2b71a1c..4c118ba 100644
--- a/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConfiguration.java
+++ b/components/camel-mqtt/src/main/java/org/apache/camel/component/mqtt/MQTTConfiguration.java
@@ -33,7 +33,7 @@ import org.fusesource.mqtt.client.QoS;
 public class MQTTConfiguration extends MQTT {
     public static final String MQTT_SUBSCRIBE_TOPIC = "CamelMQTTSubscribeTopic";
     public static final String MQTT_PUBLISH_TOPIC = "CamelMQTTPublishTopic";
-    
+
     // inherited options from MQTT
     @UriParam(defaultValue = "tcp://127.0.0.1:1883")
     URI host;
@@ -78,7 +78,7 @@ public class MQTTConfiguration extends MQTT {
     @UriParam(enums = "AtMostOnce,AtLeastOnce,ExactlyOnce", defaultValue = "AtMostOnce")
     QoS willQos = QoS.AT_MOST_ONCE;
     @UriParam
-    QoS willRetain;
+    boolean willRetain;
     @UriParam(defaultValue = "3.1")
     String version;
     @UriParam(label = "producer,advanced", defaultValue = "true")
@@ -354,6 +354,11 @@ public class MQTTConfiguration extends MQTT {
         super.setWillRetain(willRetain);
     }
 
+    @Override
+    public boolean isWillRetain() {
+        return super.isWillRetain();
+    }
+
     /**
      * If set the server will publish the client's Will message to the specified topics if the client has an unexpected disconnection.
      */
diff --git a/components/camel-mybatis/src/main/docs/mybatis-component.adoc b/components/camel-mybatis/src/main/docs/mybatis-component.adoc
index 44013cc..ce007a0 100644
--- a/components/camel-mybatis/src/main/docs/mybatis-component.adoc
+++ b/components/camel-mybatis/src/main/docs/mybatis-component.adoc
@@ -107,7 +107,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConfiguration.java b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConfiguration.java
index bbbb9e7..bcbba01 100644
--- a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConfiguration.java
+++ b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConfiguration.java
@@ -115,7 +115,7 @@ public class NatsConfiguration {
     /**
      * Whether or not using reconnection feature
      */
-    public boolean getReconnect() {
+    public boolean isReconnect() {
         return reconnect;
     }
 
@@ -126,7 +126,7 @@ public class NatsConfiguration {
     /**
      * Whether or not running in pedantic mode (this affects performace)
      */
-    public boolean getPedantic() {
+    public boolean isPedantic() {
         return pedantic;
     }
 
@@ -137,7 +137,7 @@ public class NatsConfiguration {
     /**
      * Whether or not running in verbose mode
      */
-    public boolean getVerbose() {
+    public boolean isVerbose() {
         return verbose;
     }
 
@@ -227,7 +227,7 @@ public class NatsConfiguration {
      * Whether or not randomizing the order of servers for the connection
      * attempts
      */
-    public boolean getNoRandomizeServers() {
+    public boolean isNoRandomizeServers() {
         return noRandomizeServers;
     }
 
@@ -240,7 +240,7 @@ public class NatsConfiguration {
      * this flag will prevent the server from echoing messages back to the
      * connection if it has subscriptions on the subject being published to.
      */
-    public boolean getNoEcho() {
+    public boolean isNoEcho() {
         return noEcho;
     }
 
@@ -329,16 +329,16 @@ public class NatsConfiguration {
     public Builder createOptions() throws NoSuchAlgorithmException, IllegalArgumentException {
         Builder builder = new Options.Builder();
         builder.server(splitServers());
-        if (getVerbose()) {
+        if (isVerbose()) {
             builder.verbose();
         }
-        if (getPedantic()) {
+        if (isPedantic()) {
             builder.pedantic();
         }
         if (isSecure()) {
             builder.secure();
         }
-        if (!getReconnect()) {
+        if (!isReconnect()) {
             builder.noReconnect();
         } else {
             builder.maxReconnects(getMaxReconnectAttempts());
@@ -348,10 +348,10 @@ public class NatsConfiguration {
         builder.connectionTimeout(Duration.ofMillis(getConnectionTimeout()));
         builder.maxPingsOut(getMaxPingsOut());
         builder.requestCleanupInterval(Duration.ofMillis(getRequestCleanupInterval()));
-        if (getNoRandomizeServers()) {
+        if (isNoRandomizeServers()) {
             builder.noRandomize();
         }
-        if (getNoEcho()) {
+        if (isNoEcho()) {
             builder.noEcho();
         }
         return builder;
diff --git a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConsumer.java b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConsumer.java
index 34188cc..5c82148 100644
--- a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConsumer.java
+++ b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConsumer.java
@@ -55,22 +55,22 @@ public class NatsConsumer extends DefaultConsumer {
         executor = getEndpoint().createExecutor();
 
         log.debug("Getting Nats Connection");
-        connection = getEndpoint().getNatsConfiguration().getConnection() != null 
-            ? getEndpoint().getNatsConfiguration().getConnection() : getEndpoint().getConnection();
+        connection = getEndpoint().getConfiguration().getConnection() != null
+            ? getEndpoint().getConfiguration().getConnection() : getEndpoint().getConnection();
 
-        executor.submit(new NatsConsumingTask(connection, getEndpoint().getNatsConfiguration()));
+        executor.submit(new NatsConsumingTask(connection, getEndpoint().getConfiguration()));
     }
 
     @Override
     protected void doStop() throws Exception {
 
-        if (getEndpoint().getNatsConfiguration().isFlushConnection()) {
+        if (getEndpoint().getConfiguration().isFlushConnection()) {
             log.debug("Flushing Messages before stopping");
-            connection.flush(Duration.ofMillis(getEndpoint().getNatsConfiguration().getFlushTimeout()));
+            connection.flush(Duration.ofMillis(getEndpoint().getConfiguration().getFlushTimeout()));
         }
 
         try {
-            dispatcher.unsubscribe(getEndpoint().getNatsConfiguration().getTopic());
+            dispatcher.unsubscribe(getEndpoint().getConfiguration().getTopic());
         } catch (Exception e) {
             getExceptionHandler().handleException("Error during unsubscribing", e);
         }
@@ -85,7 +85,7 @@ public class NatsConsumer extends DefaultConsumer {
         }
         executor = null;
 
-        if (ObjectHelper.isEmpty(getEndpoint().getNatsConfiguration().getConnection())) {
+        if (ObjectHelper.isEmpty(getEndpoint().getConfiguration().getConnection())) {
             log.debug("Closing Nats Connection");
             if (!connection.getStatus().equals(Status.CLOSED)) {
                 connection.close();
@@ -117,17 +117,17 @@ public class NatsConsumer extends DefaultConsumer {
             try {
                 dispatcher = connection.createDispatcher(new CamelNatsMessageHandler());
                 if (ObjectHelper.isNotEmpty(configuration.getQueueName())) {
-                    dispatcher = dispatcher.subscribe(getEndpoint().getNatsConfiguration().getTopic(), getEndpoint().getNatsConfiguration().getQueueName());
-                    if (ObjectHelper.isNotEmpty(getEndpoint().getNatsConfiguration().getMaxMessages())) {
-                        dispatcher.unsubscribe(getEndpoint().getNatsConfiguration().getTopic(), Integer.parseInt(getEndpoint().getNatsConfiguration().getMaxMessages()));
+                    dispatcher = dispatcher.subscribe(getEndpoint().getConfiguration().getTopic(), getEndpoint().getConfiguration().getQueueName());
+                    if (ObjectHelper.isNotEmpty(getEndpoint().getConfiguration().getMaxMessages())) {
+                        dispatcher.unsubscribe(getEndpoint().getConfiguration().getTopic(), Integer.parseInt(getEndpoint().getConfiguration().getMaxMessages()));
                     }
                     if (dispatcher.isActive()) {
                         setActive(true);
                     }
                 } else {
-                    dispatcher = dispatcher.subscribe(getEndpoint().getNatsConfiguration().getTopic());
-                    if (ObjectHelper.isNotEmpty(getEndpoint().getNatsConfiguration().getMaxMessages())) {
-                        dispatcher.unsubscribe(getEndpoint().getNatsConfiguration().getTopic(), Integer.parseInt(getEndpoint().getNatsConfiguration().getMaxMessages()));
+                    dispatcher = dispatcher.subscribe(getEndpoint().getConfiguration().getTopic());
+                    if (ObjectHelper.isNotEmpty(getEndpoint().getConfiguration().getMaxMessages())) {
+                        dispatcher.unsubscribe(getEndpoint().getConfiguration().getTopic(), Integer.parseInt(getEndpoint().getConfiguration().getMaxMessages()));
                     }
                     if (dispatcher.isActive()) {
                         setActive(true);
diff --git a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java
index a95248f..536b641 100644
--- a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java
+++ b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java
@@ -46,8 +46,8 @@ public class NatsEndpoint extends DefaultEndpoint {
     public NatsEndpoint(String uri, NatsComponent component, NatsConfiguration config) {
         super(uri, component);
         this.configuration = config;
-    }    
-    
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         return new NatsProducer(this);
@@ -62,14 +62,14 @@ public class NatsEndpoint extends DefaultEndpoint {
         return getCamelContext().getExecutorServiceManager().newFixedThreadPool(this, "NatsTopic[" + configuration.getTopic() + "]", configuration.getPoolSize());
     }
     
-    public NatsConfiguration getNatsConfiguration() {
+    public NatsConfiguration getConfiguration() {
         return configuration;
     }
     
     public Connection getConnection() throws InterruptedException, IllegalArgumentException, GeneralSecurityException, IOException {
-        Builder builder = getNatsConfiguration().createOptions();
-        if (getNatsConfiguration().getSslContextParameters() != null && getNatsConfiguration().isSecure()) {
-            SSLContext sslCtx = getNatsConfiguration().getSslContextParameters().createSSLContext(getCamelContext()); 
+        Builder builder = getConfiguration().createOptions();
+        if (getConfiguration().getSslContextParameters() != null && getConfiguration().isSecure()) {
+            SSLContext sslCtx = getConfiguration().getSslContextParameters().createSSLContext(getCamelContext());
             builder.sslContext(sslCtx);
         }
         Options options = builder.build();
diff --git a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsProducer.java b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsProducer.java
index 0bbf344..a3e16b6 100644
--- a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsProducer.java
+++ b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsProducer.java
@@ -40,7 +40,7 @@ public class NatsProducer extends DefaultProducer {
     
     @Override
     public void process(Exchange exchange) throws Exception {
-        NatsConfiguration config = getEndpoint().getNatsConfiguration();
+        NatsConfiguration config = getEndpoint().getConfiguration();
         String body = exchange.getIn().getMandatoryBody(String.class);
 
         log.debug("Publishing to topic: {}", config.getTopic());
@@ -59,19 +59,19 @@ public class NatsProducer extends DefaultProducer {
         log.debug("Starting Nats Producer");
         
         log.debug("Getting Nats Connection");
-        connection = getEndpoint().getNatsConfiguration().getConnection() != null 
-            ? getEndpoint().getNatsConfiguration().getConnection() : getEndpoint().getConnection();
+        connection = getEndpoint().getConfiguration().getConnection() != null
+            ? getEndpoint().getConfiguration().getConnection() : getEndpoint().getConnection();
     }
 
     @Override
     protected void doStop() throws Exception {
         log.debug("Stopping Nats Producer");
-        if (ObjectHelper.isEmpty(getEndpoint().getNatsConfiguration().getConnection())) {
+        if (ObjectHelper.isEmpty(getEndpoint().getConfiguration().getConnection())) {
             log.debug("Closing Nats Connection");
             if (connection != null && !connection.getStatus().equals(Status.CLOSED)) {
-                if (getEndpoint().getNatsConfiguration().isFlushConnection()) {
+                if (getEndpoint().getConfiguration().isFlushConnection()) {
                     log.debug("Flushing Nats Connection");
-                    connection.flush(Duration.ofMillis(getEndpoint().getNatsConfiguration().getFlushTimeout()));
+                    connection.flush(Duration.ofMillis(getEndpoint().getConfiguration().getFlushTimeout()));
                 }
                 connection.close();
             }
diff --git a/components/camel-netty-http/src/main/docs/netty-http-component.adoc b/components/camel-netty-http/src/main/docs/netty-http-component.adoc
index f955623..d3e445b 100644
--- a/components/camel-netty-http/src/main/docs/netty-http-component.adoc
+++ b/components/camel-netty-http/src/main/docs/netty-http-component.adoc
@@ -138,7 +138,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (81 parameters):
+=== Query Parameters (78 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -199,10 +199,8 @@ with the following path and query parameters:
 | *transferExchange* (advanced) | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level. | false | boolean
 | *workerCount* (advanced) | When netty works on nio mode, it uses default workerCount parameter from Netty, which is cpu_core_threads x 2. User can use this operation to override the default workerCount from Netty. |  | int
 | *workerGroup* (advanced) | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. |  | EventLoopGroup
-| *decoder* (codec) | *Deprecated* To use a single decoder. This options is deprecated use encoders instead. |  | ChannelHandler
-| *decoders* (codec) | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | String
-| *encoder* (codec) | *Deprecated* To use a single encoder. This options is deprecated use encoders instead. |  | ChannelHandler
-| *encoders* (codec) | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | String
+| *decoders* (codec) | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | List
+| *encoders* (codec) | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | List
 | *enabledProtocols* (security) | Which protocols to enable when using SSL | TLSv1,TLSv1.1,TLSv1.2 | String
 | *keyStoreFile* (security) | Client side certificate keystore to be used for encryption |  | File
 | *keyStoreFormat* (security) | Keystore format to be used for payload encryption. Defaults to JKS if not set |  | String
@@ -223,7 +221,6 @@ with the following path and query parameters:
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *bootstrapConfiguration* (advanced) | To use a custom configured NettyServerBootstrapConfiguration for configuring this endpoint. |  | NettyServerBootstrap Configuration
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
 |===
 // endpoint options: END
diff --git a/components/camel-netty/src/main/docs/netty-component.adoc b/components/camel-netty/src/main/docs/netty-component.adoc
index 0283a38..2231912 100644
--- a/components/camel-netty/src/main/docs/netty-component.adoc
+++ b/components/camel-netty/src/main/docs/netty-component.adoc
@@ -88,7 +88,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (74 parameters):
+=== Query Parameters (71 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -133,7 +133,6 @@ with the following path and query parameters:
 | *useByteBuf* (producer) | If the useByteBuf is true, netty producer will turn the message body into ByteBuf before sending it out. | false | boolean
 | *allowSerializedHeaders* (advanced) | Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level. | false | boolean
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *bootstrapConfiguration* (advanced) | To use a custom configured NettyServerBootstrapConfiguration for configuring this endpoint. |  | NettyServerBootstrap Configuration
 | *channelGroup* (advanced) | To use a explicit ChannelGroup. |  | ChannelGroup
 | *nativeTransport* (advanced) | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: \http://netty.io/wiki/native-transports.html | false | boolean
 | *options* (advanced) | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used. |  | Map
@@ -147,12 +146,10 @@ with the following path and query parameters:
 | *workerGroup* (advanced) | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. |  | EventLoopGroup
 | *allowDefaultCodec* (codec) | The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain. | true | boolean
 | *autoAppendDelimiter* (codec) | Whether or not to auto append missing end delimiter when sending using the textline codec. | true | boolean
-| *decoder* (codec) | *Deprecated* A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads. |  | ChannelHandler
 | *decoderMaxLineLength* (codec) | The max line length to use for the textline codec. | 1024 | int
-| *decoders* (codec) | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | String
+| *decoders* (codec) | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | List
 | *delimiter* (codec) | The delimiter to use for the textline codec. Possible values are LINE and NULL. | LINE | TextLineDelimiter
-| *encoder* (codec) | *Deprecated* A custom ChannelHandler class that can be used to perform special marshalling of outbound payloads. |  | ChannelHandler
-| *encoders* (codec) | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | String
+| *encoders* (codec) | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | List
 | *encoding* (codec) | The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset. |  | String
 | *textline* (codec) | Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP. | false | boolean
 | *enabledProtocols* (security) | Which protocols to enable when using SSL | TLSv1,TLSv1.1,TLSv1.2 | String
@@ -206,12 +203,14 @@ The component supports 78 options, which are listed below.
 | *camel.component.netty.configuration.client-mode* | If the clientMode is true, netty consumer will connect the address as a TCP client. | false | Boolean
 | *camel.component.netty.configuration.connect-timeout* | Time to wait for a socket connection to be available. Value is in milliseconds. | 10000 | Integer
 | *camel.component.netty.configuration.correlation-manager* | To use a custom correlation manager to manage how request and reply messages are mapped when using request/reply with the netty producer. This should only be used if you have a way to map requests together with replies such as if there is correlation ids in both the request and reply messages. This can be used if you want to multiplex concurrent messages on the same channel (aka connection) in netty. When doing this you must h [...]
+| *camel.component.netty.configuration.decoder* | A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads. |  | ChannelHandler
 | *camel.component.netty.configuration.decoder-max-line-length* | The max line length to use for the textline codec. | 1024 | Integer
 | *camel.component.netty.configuration.decoders* | A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | List
 | *camel.component.netty.configuration.delimiter* | The delimiter to use for the textline codec. Possible values are LINE and NULL. |  | TextLineDelimiter
 | *camel.component.netty.configuration.disconnect* | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer. | false | Boolean
 | *camel.component.netty.configuration.disconnect-on-no-reply* | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back. | true | Boolean
 | *camel.component.netty.configuration.enabled-protocols* | Which protocols to enable when using SSL | TLSv1,TLSv1.1,TLSv1.2 | String
+| *camel.component.netty.configuration.encoder* | A custom ChannelHandler class that can be used to perform special marshalling of outbound payloads. |  | ChannelHandler
 | *camel.component.netty.configuration.encoders* | A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup. |  | List
 | *camel.component.netty.configuration.encoding* | The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset. |  | String
 | *camel.component.netty.configuration.host* | The hostname. <p/> For the consumer the hostname is localhost or 0.0.0.0. For the producer the hostname is the remote host to connect to |  | String
@@ -266,8 +265,6 @@ The component supports 78 options, which are listed below.
 | *camel.component.netty.ssl-context-parameters* | To configure security using SSLContextParameters. The option is a org.apache.camel.support.jsse.SSLContextParameters type. |  | String
 | *camel.component.netty.use-global-ssl-context-parameters* | Enable usage of global SSL context parameters. | false | Boolean
 | *camel.component.netty.configuration.client-pipeline-factory* | *Deprecated*  |  | ClientInitializer Factory
-| *camel.component.netty.configuration.decoder* | *Deprecated* A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads. |  | ChannelHandler
-| *camel.component.netty.configuration.encoder* | *Deprecated* A custom ChannelHandler class that can be used to perform special marshalling of outbound payloads. |  | ChannelHandler
 | *camel.component.netty.configuration.key-store-file* | *Deprecated* Client side certificate keystore to be used for encryption |  | File
 | *camel.component.netty.configuration.server-pipeline-factory* | *Deprecated*  |  | ServerInitializer Factory
 | *camel.component.netty.configuration.trust-store-file* | *Deprecated* Server side certificate keystore to be used for encryption |  | File
diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
index ec9bacf..9c5a69e 100644
--- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
+++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
@@ -61,15 +61,9 @@ public class NettyConfiguration extends NettyServerBootstrapConfiguration implem
     private int decoderMaxLineLength = 1024;
     @UriParam(label = "codec")
     private String encoding;
-    @UriParam(label = "codec", description = "To use a single encoder. This options is deprecated use encoders instead.")
-    @Deprecated
-    private ChannelHandler encoder;
-    @UriParam(label = "codec", javaType = "java.lang.String")
+    @UriParam(label = "codec")
     private List<ChannelHandler> encoders = new ArrayList<>();
-    @UriParam(label = "codec", description = "To use a single decoder. This options is deprecated use encoders instead.")
-    @Deprecated
-    private ChannelHandler decoder;
-    @UriParam(label = "codec", javaType = "java.lang.String")
+    @UriParam(label = "codec")
     private List<ChannelHandler> decoders = new ArrayList<>();
     @UriParam
     private boolean disconnect;
diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyEndpoint.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyEndpoint.java
index 9ae5ed6..5f0fd97 100644
--- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyEndpoint.java
+++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyEndpoint.java
@@ -44,9 +44,6 @@ import org.apache.camel.util.ObjectHelper;
 public class NettyEndpoint extends DefaultEndpoint implements AsyncEndpoint {
     @UriParam
     private NettyConfiguration configuration;
-    @UriParam(label = "advanced", javaType = "org.apache.camel.component.netty.NettyServerBootstrapConfiguration",
-            description = "To use a custom configured NettyServerBootstrapConfiguration for configuring this endpoint.")
-    private Object bootstrapConfiguration; // to include in component docs as NettyServerBootstrapConfiguration is a @UriParams class
 
     public NettyEndpoint(String endpointUri, NettyComponent component, NettyConfiguration configuration) {
         super(endpointUri, component);
diff --git a/components/camel-nsq/pom.xml b/components/camel-nsq/pom.xml
index db916a2..a467837 100644
--- a/components/camel-nsq/pom.xml
+++ b/components/camel-nsq/pom.xml
@@ -56,6 +56,22 @@
             <artifactId>camel-testcontainers</artifactId>
             <scope>test</scope>
         </dependency>
+        <!-- logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 
diff --git a/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqConsumer.java b/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqConsumer.java
index 6645493..5165d59 100644
--- a/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqConsumer.java
+++ b/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqConsumer.java
@@ -48,7 +48,7 @@ public class NsqConsumer extends DefaultConsumer {
     public NsqConsumer(NsqEndpoint endpoint, Processor processor) {
         super(endpoint, processor);
         this.processor = processor;
-        this.configuration = getEndpoint().getNsqConfiguration();
+        this.configuration = getEndpoint().getConfiguration();
     }
 
     @Override
diff --git a/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqEndpoint.java b/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqEndpoint.java
index 4941722..509ecd6 100644
--- a/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqEndpoint.java
+++ b/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqEndpoint.java
@@ -63,15 +63,15 @@ public class NsqEndpoint extends DefaultEndpoint {
         return getCamelContext().getExecutorServiceManager().newFixedThreadPool(this, "NsqTopic[" + configuration.getTopic() + "]", configuration.getPoolSize());
     }
 
-    public NsqConfiguration getNsqConfiguration() {
+    public NsqConfiguration getConfiguration() {
         return configuration;
     }
 
     public NSQConfig getNsqConfig() throws GeneralSecurityException, IOException {
         NSQConfig nsqConfig = new NSQConfig();
 
-        if (getNsqConfiguration().getSslContextParameters() != null && getNsqConfiguration().isSecure()) {
-            SslContext sslContext = new JdkSslContext(getNsqConfiguration().getSslContextParameters().createSSLContext(getCamelContext()), true, null);
+        if (getConfiguration().getSslContextParameters() != null && getConfiguration().isSecure()) {
+            SslContext sslContext = new JdkSslContext(getConfiguration().getSslContextParameters().createSSLContext(getCamelContext()), true, null);
             nsqConfig.setSslContext(sslContext);
         }
 
diff --git a/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqProducer.java b/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqProducer.java
index 9eaf5af..7cb9018 100644
--- a/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqProducer.java
+++ b/components/camel-nsq/src/main/java/org/apache/camel/component/nsq/NsqProducer.java
@@ -35,7 +35,7 @@ public class NsqProducer extends DefaultProducer {
 
     public NsqProducer(NsqEndpoint endpoint) {
         super(endpoint);
-        this.configuration = endpoint.getNsqConfiguration();
+        this.configuration = endpoint.getConfiguration();
     }
 
     @Override
@@ -59,7 +59,7 @@ public class NsqProducer extends DefaultProducer {
         super.doStart();
         LOG.debug("Starting NSQ Producer");
 
-        NsqConfiguration config = getEndpoint().getNsqConfiguration();
+        NsqConfiguration config = getEndpoint().getConfiguration();
         producer = new NSQProducer();
         for (ServerAddress server : config.getServerAddresses()) {
             producer.addAddress(server.getHost(), server.getPort() == 0 ? config.getPort() : server.getPort());
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
index ab1fb52..78b4604 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
@@ -200,7 +200,7 @@ public class Olingo2Configuration {
     /**
      * Filter flag for filtering out already seen results
      */
-    public boolean getFilterAlreadySeen() {
+    public boolean isFilterAlreadySeen() {
         return filterAlreadySeen;
     }
 
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
index a1eff1c..05e7c06 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Endpoint.java
@@ -171,7 +171,7 @@ public class Olingo2Endpoint extends AbstractApiEndpoint<Olingo2ApiName, Olingo2
         properties.put(EDM_PROPERTY, apiProxy.getEdm());
 
         // handle filterAlreadySeen property
-        properties.put(FILTER_ALREADY_SEEN, configuration.getFilterAlreadySeen());
+        properties.put(FILTER_ALREADY_SEEN, configuration.isFilterAlreadySeen());
 
         // handle keyPredicate
         final String keyPredicate = (String)properties.get(KEY_PREDICATE_PROPERTY);
diff --git a/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Configuration.java b/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Configuration.java
index 6af68aa..d264cf3 100644
--- a/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Configuration.java
+++ b/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Configuration.java
@@ -199,7 +199,7 @@ public class Olingo4Configuration {
     /**
      * Filter flag for filtering out already seen results
      */
-    public boolean getFilterAlreadySeen() {
+    public boolean isFilterAlreadySeen() {
         return filterAlreadySeen;
     }
 
diff --git a/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Endpoint.java b/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Endpoint.java
index 8a3d52c..31aa4cf 100644
--- a/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Endpoint.java
+++ b/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Endpoint.java
@@ -172,7 +172,7 @@ public class Olingo4Endpoint extends AbstractApiEndpoint<Olingo4ApiName, Olingo4
         properties.put(EDM_PROPERTY, apiProxy.getEdm(endpointHttpHeaders));
 
         // handle filterAlreadySeen property
-        properties.put(FILTER_ALREADY_SEEN, configuration.getFilterAlreadySeen());
+        properties.put(FILTER_ALREADY_SEEN, configuration.isFilterAlreadySeen());
 
         // handle keyPredicate
         final String keyPredicate = (String)properties.get(KEY_PREDICATE_PROPERTY);
diff --git a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerEndpoint.java b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerEndpoint.java
index 876ed29..aed9ee5 100644
--- a/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerEndpoint.java
+++ b/components/camel-optaplanner/src/main/java/org/apache/camel/component/optaplanner/OptaPlannerEndpoint.java
@@ -36,18 +36,18 @@ import org.optaplanner.core.api.solver.SolverFactory;
 public class OptaPlannerEndpoint extends DefaultEndpoint {
     private static final Map<String, Solver<Object>> SOLVERS = new HashMap<>();
 
-    @UriParam
-    private OptaPlannerConfiguration configuration;
     private SolverFactory<Object> solverFactory;
 
-    public OptaPlannerEndpoint() {
-    }
+    @UriParam
+    private OptaPlannerConfiguration configuration;
 
     public OptaPlannerEndpoint(String uri, Component component, OptaPlannerConfiguration configuration) {
         super(uri, component);
         this.configuration = configuration;
-        ClassLoader classLoader = getCamelContext().getApplicationContextClassLoader();
-        solverFactory = SolverFactory.createFromXmlResource(configuration.getConfigFile(), classLoader);
+    }
+
+    public OptaPlannerConfiguration getConfiguration() {
+        return configuration;
     }
 
     protected Solver<Object> getOrCreateSolver(String solverId) throws Exception {
@@ -82,6 +82,14 @@ public class OptaPlannerEndpoint extends DefaultEndpoint {
     }
 
     @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+
+        ClassLoader classLoader = getCamelContext().getApplicationContextClassLoader();
+        solverFactory = SolverFactory.createFromXmlResource(configuration.getConfigFile(), classLoader);
+    }
+
+    @Override
     protected void doStop() throws Exception {
         synchronized (SOLVERS) {
             for (Solver<Object> solver : SOLVERS.values()) {
diff --git a/components/camel-pg-replication-slot/src/main/docs/pg-replication-slot-component.adoc b/components/camel-pg-replication-slot/src/main/docs/pg-replication-slot-component.adoc
index 55817d7..0d15ee4 100644
--- a/components/camel-pg-replication-slot/src/main/docs/pg-replication-slot-component.adoc
+++ b/components/camel-pg-replication-slot/src/main/docs/pg-replication-slot-component.adoc
@@ -98,7 +98,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-pubnub/src/main/docs/pubnub-component.adoc b/components/camel-pubnub/src/main/docs/pubnub-component.adoc
index 06db5b9..57c6b90 100644
--- a/components/camel-pubnub/src/main/docs/pubnub-component.adoc
+++ b/components/camel-pubnub/src/main/docs/pubnub-component.adoc
@@ -92,7 +92,7 @@ with the following path and query parameters:
 | *pubnub* (advanced) | Reference to a Pubnub client in the registry. |  | PubNub
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
 | *authKey* (security) | If Access Manager is utilized, client will use this authKey in all restricted requests. |  | String
-| *cipherKey* (security) | If cipher is passed, all communicatons to/from PubNub will be encrypted. |  | String
+| *cipherKey* (security) | If cipher is passed, all communications to/from PubNub will be encrypted. |  | String
 | *publishKey* (security) | The publish key obtained from your PubNub account. Required when publishing messages. |  | String
 | *secretKey* (security) | The secret key used for message signing. |  | String
 | *secure* (security) | Use SSL for secure transmission. | true | boolean
diff --git a/components/camel-pubnub/src/main/java/org/apache/camel/component/pubnub/PubNubConfiguration.java b/components/camel-pubnub/src/main/java/org/apache/camel/component/pubnub/PubNubConfiguration.java
index 504d1f6..47f583d 100644
--- a/components/camel-pubnub/src/main/java/org/apache/camel/component/pubnub/PubNubConfiguration.java
+++ b/components/camel-pubnub/src/main/java/org/apache/camel/component/pubnub/PubNubConfiguration.java
@@ -100,7 +100,7 @@ public class PubNubConfiguration {
     }
 
     /**
-     * If cipher is passed, all communicatons to/from PubNub will be encrypted.
+     * If cipher is passed, all communications to/from PubNub will be encrypted.
      */
     public String getCipherKey() {
         return cipherKey;
@@ -170,7 +170,7 @@ public class PubNubConfiguration {
         this.withPresence = withPresence;
     }
 
-    public boolean withPresence() {
+    public boolean isWithPresence() {
         return withPresence;
     }
 
diff --git a/components/camel-pubnub/src/main/java/org/apache/camel/component/pubnub/PubNubConsumer.java b/components/camel-pubnub/src/main/java/org/apache/camel/component/pubnub/PubNubConsumer.java
index 9a8940f..2688caa 100644
--- a/components/camel-pubnub/src/main/java/org/apache/camel/component/pubnub/PubNubConsumer.java
+++ b/components/camel-pubnub/src/main/java/org/apache/camel/component/pubnub/PubNubConsumer.java
@@ -48,7 +48,7 @@ public class PubNubConsumer extends DefaultConsumer {
 
     private void initCommunication() throws Exception {
         endpoint.getPubnub().addListener(new PubNubCallback());
-        if (pubNubConfiguration.withPresence()) {
+        if (pubNubConfiguration.isWithPresence()) {
             endpoint.getPubnub().subscribe().channels(Arrays.asList(pubNubConfiguration.getChannel())).withPresence().execute();
         } else {
             endpoint.getPubnub().subscribe().channels(Arrays.asList(pubNubConfiguration.getChannel())).execute();
diff --git a/components/camel-pulsar/src/main/docs/pulsar-component.adoc b/components/camel-pulsar/src/main/docs/pulsar-component.adoc
index 7b929f9..f8c82ad 100644
--- a/components/camel-pulsar/src/main/docs/pulsar-component.adoc
+++ b/components/camel-pulsar/src/main/docs/pulsar-component.adoc
@@ -91,7 +91,7 @@ with the following path and query parameters:
 | *batchingMaxMessages* (producer) | Set the maximum number of messages permitted in a batch. Default 1,000. | 1000 | int
 | *batchingMaxPublishDelay Micros* (producer) | Set the time period within which the messages sent will be batched if batch messages are enabled. If set to a non zero value, messages will be queued until either: this time interval expires the max number of messages in a batch is reached Default is 1ms. | 1000 | long
 | *blockIfQueueFull* (producer) | Set whether the send and asyncSend operations should block when the outgoing message queue is full. If set to false, send operations will immediately fail with ProducerQueueIsFullError when there is no space left in the pending queue. Default is false. | false | boolean
-| *compressionType* (producer) | Set the compression type for the producer. Supported compression types are: NONE: No compression LZ4: Compress with LZ4 algorithm. Faster but lower compression than ZLib ZLI: Standard ZLib compression Default is NONE | NONE | CompressionType
+| *compressionType* (producer) | Set the compression type for the producer. | NONE | CompressionType
 | *initialSequenceId* (producer) | Set the baseline for the sequence ids for messages published by the producer. First message will be using (initialSequenceId 1) as its sequence id and subsequent messages will be assigned incremental sequence ids, if not otherwise specified. | -1 | long
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *maxPendingMessages* (producer) | Set the max size of the queue holding the messages pending to receive an acknowledgment from the broker. Default is 1000. | 1000 | int
diff --git a/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/configuration/PulsarConfiguration.java b/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/configuration/PulsarConfiguration.java
index 388460c..223c124 100644
--- a/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/configuration/PulsarConfiguration.java
+++ b/components/camel-pulsar/src/main/java/org/apache/camel/component/pulsar/configuration/PulsarConfiguration.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.pulsar.configuration;
 
 import java.util.concurrent.TimeUnit;
 
+import org.apache.camel.component.pulsar.PulsarMessageReceipt;
 import org.apache.camel.component.pulsar.utils.consumers.SubscriptionType;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
@@ -66,7 +67,7 @@ public class PulsarConfiguration {
     private boolean batchingEnabled = true;
     @UriParam(label = "producer", description = "The first message published will have a sequence Id of initialSequenceId  1.", defaultValue = "-1")
     private long initialSequenceId = -1;
-    @UriParam(label = "producer", description = "Compression type to use, defaults to NONE from [NONE, LZ4, ZLIB]", defaultValue = "NONE")
+    @UriParam(label = "producer", description = "Compression type to use", defaultValue = "NONE")
     private CompressionType compressionType = CompressionType.NONE;
 
     public String getSubscriptionName() {
@@ -288,20 +289,19 @@ public class PulsarConfiguration {
     }
 
     /**
-     *
      * Set the compression type for the producer.
-     * Supported compression types are:
-     * <ul>
-     *  <li>NONE: No compression</li>
-     *  <li>LZ4: Compress with LZ4 algorithm. Faster but lower compression than ZLib</li>
-     *  <li>ZLI: Standard ZLib compression</li>
-     * </ul>
-     * Default is NONE
      */
     public void setCompressionType(String compressionType) {
         this.compressionType = CompressionType.valueOf(compressionType.toUpperCase());
     }
 
+    /**
+     * Set the compression type for the producer.
+     */
+    public void setCompressionType(CompressionType compressionType) {
+        this.compressionType = compressionType;
+    }
+
     public CompressionType getCompressionType() {
         return compressionType;
     }
diff --git a/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc b/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc
index 36f18ff..d5a5310 100644
--- a/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc
+++ b/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc
@@ -133,7 +133,7 @@ with the following path and query parameters:
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *addresses* (common) | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 |  | Address[]
+| *addresses* (common) | If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345 |  | String
 | *autoDelete* (common) | If it is true, the exchange will be deleted when it is no longer in use | true | boolean
 | *automaticRecoveryEnabled* (common) | Enables connection automatic recovery (uses connection implementation that performs automatic recovery when existing connection has failures) | true | Boolean
 | *connectionFactory* (common) | To use a custom RabbitMQ connection factory. When this option is set, all connection options (connectionTimeout, requestedChannelMax...) set on URI are not used |  | ConnectionFactory
diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQComponent.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQComponent.java
index ea40551..e0da35a 100644
--- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQComponent.java
+++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQComponent.java
@@ -49,7 +49,7 @@ public class RabbitMQComponent extends DefaultComponent {
     @Metadata(label = "common", defaultValue = ConnectionFactory.DEFAULT_VHOST)
     private String vhost = ConnectionFactory.DEFAULT_VHOST;
     @Metadata(label = "common")
-    private Address[] addresses;
+    private String addresses;
     @Metadata(label = "common")
     private ConnectionFactory connectionFactory;
     @Metadata(label = "consumer", defaultValue = "true")
@@ -324,22 +324,10 @@ public class RabbitMQComponent extends DefaultComponent {
      * looks like "server1:12345, server2:12345"
      */
     public void setAddresses(String addresses) {
-        Address[] addressArray = Address.parseAddresses(addresses);
-        if (addressArray.length > 0) {
-            this.addresses = addressArray;
-        }
-    }
-
-    /**
-     * If this option is set, camel-rabbitmq will try to create connection based
-     * on the setting of option addresses. The addresses value is a string which
-     * looks like "server1:12345, server2:12345"
-     */
-    public void setAddresses(Address[] addresses) {
         this.addresses = addresses;
     }
 
-    public Address[] getAddresses() {
+    public String getAddresses() {
         return addresses;
     }
 
diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java
index 56c01f9..58db20a 100644
--- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java
+++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQEndpoint.java
@@ -101,7 +101,7 @@ public class RabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint {
     @UriParam(label = "common")
     private boolean skipExchangeDeclare;
     @UriParam(label = "common")
-    private Address[] addresses;
+    private String addresses;
     @UriParam(label = "common", defaultValue = "true")
     private Boolean automaticRecoveryEnabled = Boolean.TRUE;
     @UriParam(label = "advanced", defaultValue = "" + ConnectionFactory.DEFAULT_CONNECTION_TIMEOUT)
@@ -220,7 +220,7 @@ public class RabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint {
         if (getAddresses() == null) {
             return getOrCreateConnectionFactory().newConnection(executor);
         } else {
-            return getOrCreateConnectionFactory().newConnection(executor, getAddresses());
+            return getOrCreateConnectionFactory().newConnection(executor, parseAddresses());
         }
     }
 
@@ -452,25 +452,21 @@ public class RabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint {
      * looks like "server1:12345, server2:12345"
      */
     public void setAddresses(String addresses) {
-        Address[] addressArray = Address.parseAddresses(addresses);
-        if (addressArray.length > 0) {
-            this.addresses = addressArray;
-        }
-    }
-
-    /**
-     * If this option is set, camel-rabbitmq will try to create connection based
-     * on the setting of option addresses. The addresses value is a string which
-     * looks like "server1:12345, server2:12345"
-     */
-    public void setAddresses(Address[] addresses) {
         this.addresses = addresses;
     }
 
-    public Address[] getAddresses() {
+    public String getAddresses() {
         return addresses;
     }
 
+    public Address[] parseAddresses() {
+        if (addresses != null) {
+            return Address.parseAddresses(getAddresses());
+        } else {
+            return null;
+        }
+    }
+
     public int getConnectionTimeout() {
         return connectionTimeout;
     }
diff --git a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQComponentTest.java b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQComponentTest.java
index 4025f02..10183d9 100644
--- a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQComponentTest.java
+++ b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQComponentTest.java
@@ -23,19 +23,16 @@ import com.rabbitmq.client.ConnectionFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.support.SimpleRegistry;
+import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.AdditionalAnswers.returnsFirstArg;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.when;
+public class RabbitMQComponentTest extends CamelTestSupport {
 
-public class RabbitMQComponentTest {
-
-    private CamelContext context = Mockito.mock(CamelContext.class);
+    @Override
+    public boolean isUseRouteBuilder() {
+        return super.isUseRouteBuilder();
+    }
 
     @Test
     public void testDefaultProperties() throws Exception {
@@ -100,10 +97,9 @@ public class RabbitMQComponentTest {
         String uri = "rabbitmq:special.host:14/queuey";
         String remaining = "special.host:14/queuey";
 
-        RabbitMQComponent comp = new RabbitMQComponent(context);
-        when(context.resolvePropertyPlaceholders(anyString())).then(returnsFirstArg());
+        RabbitMQComponent comp = context.getComponent("rabbitmq", RabbitMQComponent.class);
         comp.setAutoDetectConnectionFactory(false);
-        return comp.createEndpoint(uri, remaining, params);
+        return (RabbitMQEndpoint) comp.createEndpoint(uri, params);
     }
 
     @Test
diff --git a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java
index ba20ac5..0b5dcee 100644
--- a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java
+++ b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQEndpointTest.java
@@ -178,9 +178,9 @@ public class RabbitMQEndpointTest extends CamelTestSupport {
     @Test
     public void brokerEndpointAddressesSettings() throws Exception {
         RabbitMQEndpoint endpoint = context.getEndpoint("rabbitmq:localhost/exchange?addresses=server1:12345,server2:12345", RabbitMQEndpoint.class);
-        assertEquals("Wrong size of endpoint addresses.", 2, endpoint.getAddresses().length);
-        assertEquals("Get a wrong endpoint address.", new Address("server1", 12345), endpoint.getAddresses()[0]);
-        assertEquals("Get a wrong endpoint address.", new Address("server2", 12345), endpoint.getAddresses()[1]);
+        assertEquals("Wrong size of endpoint addresses.", 2, endpoint.parseAddresses().length);
+        assertEquals("Get a wrong endpoint address.", new Address("server1", 12345), endpoint.parseAddresses()[0]);
+        assertEquals("Get a wrong endpoint address.", new Address("server2", 12345), endpoint.parseAddresses()[1]);
     }
 
     private ConnectionFactory createConnectionFactory(String uri) throws TimeoutException {
diff --git a/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java b/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java
index 6bcae93..7823e63 100644
--- a/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java
+++ b/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java
@@ -281,13 +281,11 @@ public final class RestSwaggerEndpoint extends DefaultEndpoint {
 
         Map<String, Object> params = determineEndpointParameters(swagger, operation);
         boolean hasHost = params.containsKey("host");
-        setProperties(endpoint, params);
-
-        // ensure rest configuration is available
-//        final String componentName = determineComponentName();
-//        if (componentName != null) {
-//            RestConfiguration config = camelContext.getRestConfiguration(componentName, true);
-//        }
+        if (endpoint instanceof DefaultEndpoint) {
+            // let the rest endpoint configure itself
+            DefaultEndpoint de = (DefaultEndpoint) endpoint;
+            de.setProperties(endpoint, params);
+        }
 
         // if there is a host then we should use this hardcoded host instead of any Header that may have an existing
         // Host header from some other HTTP input, and if so then lets remove it
diff --git a/components/camel-restlet/src/main/docs/restlet-component.adoc b/components/camel-restlet/src/main/docs/restlet-component.adoc
index 3e7ca83..7f595c0 100644
--- a/components/camel-restlet/src/main/docs/restlet-component.adoc
+++ b/components/camel-restlet/src/main/docs/restlet-component.adoc
@@ -124,7 +124,7 @@ with the following path and query parameters:
 | Name | Description | Default | Type
 | *restletMethod* (common) | On a producer endpoint, specifies the request method to use. On a consumer endpoint, specifies that the endpoint consumes only restletMethod requests. | GET | Method
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *restletMethods* (consumer) | Specify one or more methods separated by commas (e.g. restletMethods=post,put) to be serviced by a restlet consumer endpoint. If both restletMethod and restletMethods options are specified, the restletMethod setting is ignored. The possible methods are: ALL,CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE |  | String
+| *restletMethods* (consumer) | Specify one or more methods separated by commas (e.g. restletMethods=post,put) to be serviced by a restlet consumer endpoint. If both restletMethod and restletMethods options are specified, the restletMethod setting is ignored. The possible methods are: ALL,CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE. Multiple methods can be separated by comma. |  | String
 | *disableStreamCache* (consumer) | Determines whether or not the raw input stream from Restlet is cached or not (Camel will read the stream into a in memory/overflow to file, Stream caching) cache. By default Camel will cache the Restlet input stream to support reading it multiple times to ensure Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persist [...]
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
index ebcbfe2..2b66257 100644
--- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
+++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletComponent.java
@@ -157,7 +157,7 @@ public class RestletComponent extends DefaultComponent implements RestConsumerFa
         setEndpointHeaderFilterStrategy(result);
         setProperties(result, parameters);
         if (restletMethods != null) {
-            result.setRestletMethods(RestletConverter.toMethods(restletMethods));
+            result.setRestletMethods(restletMethods);
         } else {
             result.setRestletMethod(RestletConverter.toMethod(restletMethod));
         }
@@ -272,7 +272,7 @@ public class RestletComponent extends DefaultComponent implements RestConsumerFa
             List<Method> methods = new ArrayList<>();
             Collections.addAll(methods, Method.OPTIONS);
             if (endpoint.getRestletMethods() != null) {
-                Collections.addAll(methods, endpoint.getRestletMethods());
+                Collections.addAll(methods, RestletConverter.toMethods(endpoint.getRestletMethods()));
             } else {
                 Collections.addAll(methods, endpoint.getRestletMethod());
             }
@@ -400,7 +400,7 @@ public class RestletComponent extends DefaultComponent implements RestConsumerFa
         List<Method> methods = new ArrayList<>();
         Collections.addAll(methods, Method.OPTIONS);
         if (endpoint.getRestletMethods() != null) {
-            Collections.addAll(methods, endpoint.getRestletMethods());
+            Collections.addAll(methods, RestletConverter.toMethods(endpoint.getRestletMethods()));
         } else {
             Collections.addAll(methods, endpoint.getRestletMethod());
         }
diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java
index 612732d..d33ef05 100644
--- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java
+++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletEndpoint.java
@@ -63,8 +63,8 @@ public class RestletEndpoint extends DefaultEndpoint implements AsyncEndpoint, H
     private int connectTimeout = DEFAULT_CONNECT_TIMEOUT;
     @UriParam(defaultValue = "GET", enums = "ALL,CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE")
     private Method restletMethod = Method.GET;
-    @UriParam(label = "consumer", javaType = "java.lang.String")
-    private Method[] restletMethods;
+    @UriParam(label = "consumer")
+    private String restletMethods;
     @UriParam(label = "security")
     private Map<String, String> restletRealm;
     @UriParam(label = "advanced")
@@ -254,13 +254,14 @@ public class RestletEndpoint extends DefaultEndpoint implements AsyncEndpoint, H
     /**
      * Specify one or more methods separated by commas (e.g. restletMethods=post,put) to be serviced by a restlet consumer endpoint.
      * If both restletMethod and restletMethods options are specified, the restletMethod setting is ignored.
-     * The possible methods are: ALL,CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE
+     * The possible methods are: ALL,CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE.
+     * Multiple methods can be separated by comma.
      */
-    public void setRestletMethods(Method[] restletMethods) {
+    public void setRestletMethods(String restletMethods) {
         this.restletMethods = restletMethods;
     }
 
-    public Method[] getRestletMethods() {
+    public String getRestletMethods() {
         return restletMethods;
     }
 
diff --git a/components/camel-rss/src/main/docs/rss-component.adoc b/components/camel-rss/src/main/docs/rss-component.adoc
index 59ad821..4f1ca0c 100644
--- a/components/camel-rss/src/main/docs/rss-component.adoc
+++ b/components/camel-rss/src/main/docs/rss-component.adoc
@@ -104,7 +104,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java
index be8656a..f6a1e2e 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java
@@ -96,7 +96,7 @@ public class SalesforceConsumer extends DefaultConsumer {
 
         messageKind = MessageKind.fromTopicName(topicName);
 
-        rawPayload = endpoint.getConfiguration().getRawPayload();
+        rawPayload = endpoint.getConfiguration().isRawPayload();
 
         // get sObjectClass to convert to
         final String sObjectName = endpoint.getConfiguration().getSObjectName();
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpoint.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpoint.java
index 95e1a61..163efce 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpoint.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpoint.java
@@ -29,40 +29,39 @@ import org.apache.camel.support.SynchronousDelegateProducer;
 import org.eclipse.jetty.client.HttpClient;
 
 /**
- * The salesforce component is used for integrating Camel with the massive
- * Salesforce API.
+ * The salesforce component is used for integrating Camel with the massive Salesforce API.
  */
 @UriEndpoint(firstVersion = "2.12.0", scheme = "salesforce", title = "Salesforce", syntax = "salesforce:operationName:topicName", label = "api,cloud,crm")
 public class SalesforceEndpoint extends DefaultEndpoint {
 
     @UriPath(label = "producer", description = "The operation to use", enums = "getVersions,getResources,"
-                                                                               + "getGlobalObjects,getBasicInfo,getDescription,getSObject,createSObject,updateSObject,deleteSObject,"
-                                                                               + "getSObjectWithId,upsertSObject,deleteSObjectWithId,getBlobField,query,queryMore,queryAll,search,apexCall,"
-                                                                               + "recent,createJob,getJob,closeJob,abortJob,createBatch,getBatch,getAllBatches,getRequest,getResults,"
-                                                                               + "createBatchQuery,getQueryResultIds,getQueryResult,getRecentReports,getReportDescription,executeSyncReport,"
-                                                                               + "executeAsyncReport,getReportInstances,getReportResults,limits,approval,approvals,composite-tree,"
-                                                                               + "composite-batch,composite")
+        + "getGlobalObjects,getBasicInfo,getDescription,getSObject,createSObject,updateSObject,deleteSObject,"
+        + "getSObjectWithId,upsertSObject,deleteSObjectWithId,getBlobField,query,queryMore,queryAll,search,apexCall,"
+        + "recent,createJob,getJob,closeJob,abortJob,createBatch,getBatch,getAllBatches,getRequest,getResults,"
+        + "createBatchQuery,getQueryResultIds,getQueryResult,getRecentReports,getReportDescription,executeSyncReport,"
+        + "executeAsyncReport,getReportInstances,getReportResults,limits,approval,approvals,composite-tree,"
+        + "composite-batch,composite")
     private final OperationName operationName;
     @UriPath(label = "consumer", description = "The name of the topic/channel to use")
     private final String topicName;
     @UriParam
-    private final SalesforceEndpointConfig config;
+    private final SalesforceEndpointConfig configuration;
 
     @UriParam(label = "consumer", description = "The replayId value to use when subscribing")
     private Long replayId;
 
-    public SalesforceEndpoint(String uri, SalesforceComponent salesforceComponent, SalesforceEndpointConfig config, OperationName operationName, String topicName) {
+    public SalesforceEndpoint(String uri, SalesforceComponent salesforceComponent,
+                              SalesforceEndpointConfig configuration, OperationName operationName, String topicName) {
         super(uri, salesforceComponent);
 
-        this.config = config;
+        this.configuration = configuration;
         this.operationName = operationName;
         this.topicName = topicName;
     }
 
     @Override
     public Producer createProducer() throws Exception {
-        // producer requires an operation, topicName must be the invalid
-        // operation name
+        // producer requires an operation, topicName must be the invalid operation name
         if (operationName == null) {
             throw new IllegalArgumentException(String.format("Invalid Operation %s", topicName));
         }
@@ -77,10 +76,10 @@ public class SalesforceEndpoint extends DefaultEndpoint {
 
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
-        // consumer requires a topicName, operation name must be the invalid
-        // topic name
+        // consumer requires a topicName, operation name must be the invalid topic name
         if (topicName == null) {
-            throw new IllegalArgumentException(String.format("Invalid topic name %s, matches a producer operation name", operationName.value()));
+            throw new IllegalArgumentException(String.format("Invalid topic name %s, matches a producer operation name",
+                    operationName.value()));
         }
 
         final SubscriptionHelper subscriptionHelper = getComponent().getSubscriptionHelper();
@@ -91,7 +90,7 @@ public class SalesforceEndpoint extends DefaultEndpoint {
 
     @Override
     public SalesforceComponent getComponent() {
-        return (SalesforceComponent)super.getComponent();
+        return (SalesforceComponent) super.getComponent();
     }
 
     @Override
@@ -102,7 +101,7 @@ public class SalesforceEndpoint extends DefaultEndpoint {
     }
 
     public SalesforceEndpointConfig getConfiguration() {
-        return config;
+        return configuration;
     }
 
     public OperationName getOperationName() {
@@ -126,8 +125,7 @@ public class SalesforceEndpoint extends DefaultEndpoint {
         try {
             super.doStart();
         } finally {
-            // check if this endpoint has its own http client that needs to be
-            // started
+            // check if this endpoint has its own http client that needs to be started
             final HttpClient httpClient = getConfiguration().getHttpClient();
             if (httpClient != null && getComponent().getConfig().getHttpClient() != httpClient) {
                 final String endpointUri = getEndpointUri();
@@ -143,8 +141,7 @@ public class SalesforceEndpoint extends DefaultEndpoint {
         try {
             super.doStop();
         } finally {
-            // check if this endpoint has its own http client that needs to be
-            // stopped
+            // check if this endpoint has its own http client that needs to be stopped
             final HttpClient httpClient = getConfiguration().getHttpClient();
             if (httpClient != null && getComponent().getConfig().getHttpClient() != httpClient) {
                 final String endpointUri = getEndpointUri();
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
index 74b310e..098883a 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
@@ -224,7 +224,7 @@ public class SalesforceEndpointConfig implements Cloneable {
         this.format = format;
     }
 
-    public boolean getRawPayload() {
+    public boolean isRawPayload() {
         return rawPayload;
     }
 
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java
index 830a3e3..cdf5052 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java
@@ -56,7 +56,7 @@ public abstract class AbstractSalesforceProcessor implements SalesforceProcessor
         final SalesforceComponent component = endpoint.getComponent();
         session = component.getSession();
         httpClient = endpoint.getConfiguration().getHttpClient();
-        rawPayload = endpoint.getConfiguration().getRawPayload();
+        rawPayload = endpoint.getConfiguration().isRawPayload();
     }
 
     @Override
diff --git a/components/camel-saxon/src/main/docs/xquery-component.adoc b/components/camel-saxon/src/main/docs/xquery-component.adoc
index 4142c32..a265cf1 100644
--- a/components/camel-saxon/src/main/docs/xquery-component.adoc
+++ b/components/camel-saxon/src/main/docs/xquery-component.adoc
@@ -86,7 +86,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-scheduler/src/main/docs/scheduler-component.adoc b/components/camel-scheduler/src/main/docs/scheduler-component.adoc
index c2ae43f..793fbed 100644
--- a/components/camel-scheduler/src/main/docs/scheduler-component.adoc
+++ b/components/camel-scheduler/src/main/docs/scheduler-component.adoc
@@ -86,7 +86,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-servicenow/camel-servicenow-component/src/main/docs/servicenow-component.adoc b/components/camel-servicenow/camel-servicenow-component/src/main/docs/servicenow-component.adoc
index 8e3a4bf..daa1d49 100644
--- a/components/camel-servicenow/camel-servicenow-component/src/main/docs/servicenow-component.adoc
+++ b/components/camel-servicenow/camel-servicenow-component/src/main/docs/servicenow-component.adoc
@@ -93,12 +93,12 @@ with the following path and query parameters:
 | *inputDisplayValue* (producer) | True to set raw value of input fields (default: false) |  | Boolean
 | *key* (producer) | Set this parameter to true to return only scorecards for key indicators. |  | Boolean
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *models* (producer) | Defines both request and response models |  | String
+| *models* (producer) | Defines both request and response models |  | Map
 | *perPage* (producer) | Enter the maximum number of scorecards each query can return. By default this value is 10, and the maximum is 100. | 10 | Integer
 | *release* (producer) | The ServiceNow release to target, default to Helsinki See \https://docs.servicenow.com | HELSINKI | ServiceNowRelease
-| *requestModels* (producer) | Defines the request model |  | String
+| *requestModels* (producer) | Defines the request model |  | Map
 | *resource* (producer) | The default resource, can be overridden by header CamelServiceNowResource |  | String
-| *responseModels* (producer) | Defines the response model |  | String
+| *responseModels* (producer) | Defines the response model |  | Map
 | *sortBy* (producer) | Specify the value to use when sorting results. By default, queries sort records by value. |  | String
 | *sortDir* (producer) | Specify the sort direction, ascending or descending. By default, queries sort records in descending order. Use sysparm_sortdir=asc to sort in ascending order. |  | String
 | *suppressAutoSysField* (producer) | True to suppress auto generation of system fields (default: false) |  | Boolean
diff --git a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowConfiguration.java b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowConfiguration.java
index 2b966d3..9419716 100644
--- a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowConfiguration.java
+++ b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowConfiguration.java
@@ -104,11 +104,11 @@ public class ServiceNowConfiguration implements Cloneable {
     private String displayValue = "false";
     @UriParam
     private Boolean inputDisplayValue = false;
-    @UriParam(prefix = "model.", multiValue = true, javaType = "java.lang.String", description = "Defines both request and response models")
+    @UriParam(prefix = "model.", multiValue = true, description = "Defines both request and response models")
     private transient Map<String, Class<?>> models; // field not in use as its a shortcut for both requestModels/responseModels
-    @UriParam(prefix = "request-model.", multiValue = true, javaType = "java.lang.String")
+    @UriParam(prefix = "request-model.", multiValue = true)
     private Map<String, Class<?>> requestModels;
-    @UriParam(prefix = "response-model.", multiValue = true, javaType = "java.lang.String")
+    @UriParam(prefix = "response-model.", multiValue = true)
     private Map<String, Class<?>> responseModels;
     @UriParam(label = "advanced")
     private ObjectMapper mapper;
@@ -666,6 +666,10 @@ public class ServiceNowConfiguration implements Cloneable {
         setResponseModels(models);
     }
 
+    public Map<String, Class<?>> getModels() {
+        return models;
+    }
+
     public void addModel(String name, Class<?> type) {
         addRequestModel(name, type);
         addResponseModel(name, type);
@@ -687,6 +691,10 @@ public class ServiceNowConfiguration implements Cloneable {
         this.requestModels.putAll(models);
     }
 
+    public Map<String, Class<?>> getResponseModels() {
+        return responseModels;
+    }
+
     public void addRequestModel(String name, Class<?> type) {
         if (this.requestModels == null) {
             this.requestModels = new HashMap<>();
diff --git a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsEndpoint.java b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsEndpoint.java
index e7c2a3b..4a0f2fb 100644
--- a/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsEndpoint.java
+++ b/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsEndpoint.java
@@ -359,11 +359,14 @@ public class SjmsEndpoint extends DefaultEndpoint implements AsyncEndpoint, Mult
     /**
      * Initializes the connectionResource for the endpoint, which takes precedence over the component's connectionResource, if any
      */
+    public void setConnectionResource(ConnectionResource connectionResource) {
+        this.connectionResource = connectionResource;
+    }
+
     public void setConnectionResource(String connectionResource) {
         this.connectionResource = EndpointHelper.resolveReferenceParameter(getCamelContext(), connectionResource, ConnectionResource.class);
     }
 
-
     @Override
     public boolean isSynchronous() {
         return synchronous;
@@ -677,6 +680,10 @@ public class SjmsEndpoint extends DefaultEndpoint implements AsyncEndpoint, Mult
     /**
      * Initializes the connectionFactory for the endpoint, which takes precedence over the component's connectionFactory, if any
      */
+    public void setConnectionFactory(ConnectionFactory connectionFactory) {
+        this.connectionFactory = connectionFactory;
+    }
+
     public void setConnectionFactory(String connectionFactory) {
         this.connectionFactory = EndpointHelper.resolveReferenceParameter(getCamelContext(), connectionFactory, ConnectionFactory.class);
 
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/SjmsEndpointConnectionSettingsTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/SjmsEndpointConnectionSettingsTest.java
index 9af5359..d47c163 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/SjmsEndpointConnectionSettingsTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/SjmsEndpointConnectionSettingsTest.java
@@ -34,7 +34,7 @@ public class SjmsEndpointConnectionSettingsTest extends CamelTestSupport {
 
     @Test
     public void testConnectionFactory() {
-        Endpoint endpoint = context.getEndpoint("sjms:queue:test?connectionFactory=activemq");
+        Endpoint endpoint = context.getEndpoint("sjms:queue:test?connectionFactory=#activemq");
         assertNotNull(endpoint);
         assertTrue(endpoint instanceof SjmsEndpoint);
         SjmsEndpoint qe = (SjmsEndpoint) endpoint;
@@ -43,7 +43,7 @@ public class SjmsEndpointConnectionSettingsTest extends CamelTestSupport {
 
     @Test
     public void testConnectionResource() {
-        Endpoint endpoint = context.getEndpoint("sjms:queue:test?connectionResource=connresource");
+        Endpoint endpoint = context.getEndpoint("sjms:queue:test?connectionResource=#connresource");
         assertNotNull(endpoint);
         assertTrue(endpoint instanceof SjmsEndpoint);
         SjmsEndpoint qe = (SjmsEndpoint) endpoint;
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/batch/SjmsBatchEndpointTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/batch/SjmsBatchEndpointTest.java
index a1fba4e..152f14d 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/batch/SjmsBatchEndpointTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/batch/SjmsBatchEndpointTest.java
@@ -78,7 +78,7 @@ public class SjmsBatchEndpointTest extends CamelTestSupport {
         return true;
     }
 
-    @Test(expected = FailedToCreateRouteException.class)
+    @Test(expected = FailedToStartRouteException.class)
     public void testProducerFailure() throws Exception {
         context.addRoutes(new RouteBuilder() {
             public void configure() throws Exception {
diff --git a/components/camel-slack/src/main/docs/slack-component.adoc b/components/camel-slack/src/main/docs/slack-component.adoc
index 197b198..d9b9c28 100644
--- a/components/camel-slack/src/main/docs/slack-component.adoc
+++ b/components/camel-slack/src/main/docs/slack-component.adoc
@@ -106,7 +106,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConfiguration.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConfiguration.java
index 7758b9f..8c0015e 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConfiguration.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConfiguration.java
@@ -521,7 +521,7 @@ public class SmppConfiguration implements Cloneable {
         this.numberingPlanIndicator = numberingPlanIndicator;
     }
 
-    public boolean getUsingSSL() {
+    public boolean isUsingSSL() {
         return usingSSL;
     }
 
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConnectionFactory.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConnectionFactory.java
index 8527cdd..ee9773c 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConnectionFactory.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppConnectionFactory.java
@@ -85,7 +85,7 @@ public final class SmppConnectionFactory implements ConnectionFactory {
         try {
             Socket socket;
             SocketFactory socketFactory;
-            socketFactory = config.getUsingSSL() && config.getHttpProxyHost() == null ? SSLSocketFactory
+            socketFactory = config.isUsingSSL() && config.getHttpProxyHost() == null ? SSLSocketFactory
                 .getDefault() : SocketFactory.getDefault();
             if (config.getHttpProxyHost() != null) {
                 // setup the proxy tunnel
@@ -99,7 +99,7 @@ public final class SmppConnectionFactory implements ConnectionFactory {
                 socket.connect(new InetSocketAddress(host, port), config.getEnquireLinkTimer());
             }
 
-            if (config.getUsingSSL() && config.getHttpProxyHost() != null) {
+            if (config.isUsingSSL() && config.getHttpProxyHost() != null) {
                 // Init the SSL socket which is based on the proxy socket
                 SSLSocketFactory sslSocketFactory = (SSLSocketFactory)SSLSocketFactory.getDefault();
                 SSLSocket sslSocket = (SSLSocket)sslSocketFactory.createSocket(socket, host, port, true);
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java
index 47b0d0f..9345997 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppEndpoint.java
@@ -156,7 +156,7 @@ public class SmppEndpoint extends DefaultEndpoint {
      * @return the connection string
      */
     public String getConnectionString() {
-        return (configuration.getUsingSSL() ? "smpps://" : "smpp://") 
+        return (configuration.isUsingSSL() ? "smpps://" : "smpp://")
                 + (getConfiguration().getSystemId() != null ? getConfiguration().getSystemId() + "@" : "")
                 + getConfiguration().getHost() + ":"
                 + getConfiguration().getPort();
diff --git a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java
index ca03446..5ce9c90 100644
--- a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java
+++ b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/SmppConfigurationTest.java
@@ -70,7 +70,7 @@ public class SmppConfigurationTest {
         assertEquals("ISO-8859-1", configuration.getEncoding());
         assertEquals(0x00, configuration.getNumberingPlanIndicator());
         assertEquals(0x00, configuration.getTypeOfNumber());
-        assertEquals(false, configuration.getUsingSSL());
+        assertEquals(false, configuration.isUsingSSL());
         assertEquals(5000, configuration.getInitialReconnectDelay());
         assertEquals(5000, configuration.getReconnectDelay());
         assertEquals(null, configuration.getHttpProxyHost());
@@ -105,7 +105,7 @@ public class SmppConfigurationTest {
         assertEquals("UTF-8", configuration.getEncoding());
         assertEquals(0x08, configuration.getNumberingPlanIndicator());
         assertEquals(0x02, configuration.getTypeOfNumber());
-        assertEquals(true, configuration.getUsingSSL());
+        assertEquals(true, configuration.isUsingSSL());
         assertEquals(5001, configuration.getInitialReconnectDelay());
         assertEquals(5002, configuration.getReconnectDelay());
         assertEquals("127.0.0.1", configuration.getHttpProxyHost());
@@ -164,7 +164,7 @@ public class SmppConfigurationTest {
         assertEquals(config.getEncoding(), configuration.getEncoding());
         assertEquals(config.getNumberingPlanIndicator(), configuration.getNumberingPlanIndicator());
         assertEquals(config.getTypeOfNumber(), configuration.getTypeOfNumber());
-        assertEquals(config.getUsingSSL(), configuration.getUsingSSL());
+        assertEquals(config.isUsingSSL(), configuration.isUsingSSL());
         assertEquals(config.getInitialReconnectDelay(), configuration.getInitialReconnectDelay());
         assertEquals(config.getReconnectDelay(), configuration.getReconnectDelay());
         assertEquals(config.getHttpProxyHost(), configuration.getHttpProxyHost());
diff --git a/components/camel-snmp/src/main/docs/snmp-component.adoc b/components/camel-snmp/src/main/docs/snmp-component.adoc
index 75b9106..66268e5 100644
--- a/components/camel-snmp/src/main/docs/snmp-component.adoc
+++ b/components/camel-snmp/src/main/docs/snmp-component.adoc
@@ -84,7 +84,7 @@ with the following path and query parameters:
 | Name | Description | Default | Type
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *delay* (consumer) | Sets update rate in seconds | 60000 | long
-| *oids* (consumer) | Defines which values you are interested in. Please have a look at the Wikipedia to get a better understanding. You may provide a single OID or a coma separated list of OIDs. Example: oids=1.3.6.1.2.1.1.3.0,1.3.6.1.2.1.25.3.2.1.5.1,1.3.6.1.2.1.25.3.5.1.1.1,1.3.6.1.2.1.43.5.1.1.11.1 |  | String
+| *oids* (consumer) | Defines which values you are interested in. Please have a look at the Wikipedia to get a better understanding. You may provide a single OID or a coma separated list of OIDs. Example: oids=1.3.6.1.2.1.1.3.0,1.3.6.1.2.1.25.3.2.1.5.1,1.3.6.1.2.1.25.3.5.1.1.1,1.3.6.1.2.1.43.5.1.1.11.1 |  | OIDList
 | *protocol* (consumer) | Here you can select which protocol to use. You can use either udp or tcp. | udp | String
 | *retries* (consumer) | Defines how often a retry is made before canceling the request. | 2 | int
 | *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
@@ -107,7 +107,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
index bf0b65e..7e86d721 100644
--- a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
+++ b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpEndpoint.java
@@ -79,7 +79,7 @@ public class SnmpEndpoint extends DefaultPollingEndpoint {
     private String snmpContextName;
     @UriParam
     private String snmpContextEngineId;
-    @UriParam(javaType = "java.lang.String")
+    @UriParam
     private OIDList oids = new OIDList();
     @UriParam(label = "consumer", defaultValue = "false")
     private boolean treeList;
diff --git a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
index 26cd2a4..99e7d73 100644
--- a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
+++ b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
@@ -84,9 +84,13 @@ public class SolrEndpoint extends DefaultEndpoint {
     /**
      * Set the ZooKeeper host information which the solrCloud could use, such as "zkhost=localhost:8123".
      */
-    public void setZkHost(String zkHost) throws UnsupportedEncodingException {
-        String decoded = URLDecoder.decode(zkHost, "UTF-8");
-        this.zkHost = decoded;
+    public void setZkHost(String zkHost) {
+        try {
+            String decoded = URLDecoder.decode(zkHost, "UTF-8");
+            this.zkHost = decoded;
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     public String getZkHost() {
diff --git a/components/camel-splunk/src/main/docs/splunk-component.adoc b/components/camel-splunk/src/main/docs/splunk-component.adoc
index babcf10..5589d2c 100644
--- a/components/camel-splunk/src/main/docs/splunk-component.adoc
+++ b/components/camel-splunk/src/main/docs/splunk-component.adoc
@@ -141,7 +141,7 @@ with the following path and query parameters:
 | *savedSearch* (consumer) | The name of the query saved in Splunk to run |  | String
 | *search* (consumer) | The Splunk query to run |  | String
 | *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
-| *streaming* (consumer) | Sets streaming mode. Streaming mode sends exchanges as they are received, rather than in a batch. |  | Boolean
+| *streaming* (consumer) | Sets streaming mode. Streaming mode sends exchanges as they are received, rather than in a batch. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPoll Strategy
@@ -162,7 +162,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-splunk/src/main/java/org/apache/camel/component/splunk/SplunkConfiguration.java b/components/camel-splunk/src/main/java/org/apache/camel/component/splunk/SplunkConfiguration.java
index 9825805..564ef66 100644
--- a/components/camel-splunk/src/main/java/org/apache/camel/component/splunk/SplunkConfiguration.java
+++ b/components/camel-splunk/src/main/java/org/apache/camel/component/splunk/SplunkConfiguration.java
@@ -79,7 +79,7 @@ public class SplunkConfiguration {
     @UriParam(label = "consumer")
     private String initEarliestTime;
     @UriParam(label = "consumer")
-    private Boolean streaming;
+    private boolean streaming;
 
     public String getName() {
         return name;
@@ -301,7 +301,7 @@ public class SplunkConfiguration {
     }
 
     public boolean isStreaming() {
-        return streaming != null ? streaming : false;
+        return streaming;
     }
 
     /**
diff --git a/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchEndpoint.java b/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchEndpoint.java
index bcb1e56..99ad97a 100644
--- a/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchEndpoint.java
+++ b/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchEndpoint.java
@@ -160,7 +160,7 @@ public class SpringBatchEndpoint extends DefaultEndpoint {
         this.jobFromHeader = jobFromHeader;
     }
 
-    public boolean getJobFromHeader() {
+    public boolean isJobFromHeader() {
         return jobFromHeader;
     }
 
diff --git a/components/camel-spring-boot/src/main/docs/spring-boot.adoc b/components/camel-spring-boot/src/main/docs/spring-boot.adoc
index 155da7f..6715705 100644
--- a/components/camel-spring-boot/src/main/docs/spring-boot.adoc
+++ b/components/camel-spring-boot/src/main/docs/spring-boot.adoc
@@ -89,7 +89,7 @@ When using Spring Boot make sure to use the following Maven dependency to have s
 ----
 
 
-The component supports 127 options, which are listed below.
+The component supports 129 options, which are listed below.
 
 
 
@@ -146,6 +146,8 @@ The component supports 127 options, which are listed below.
 | *camel.springboot.allow-use-original-message* | 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. | false | Boolean
 | *camel.springboot.auto-startup* | 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 Camelcon [...]
 | *camel.springboot.backlog-tracing* | Sets whether backlog tracing is enabled or not. Default is false. | false | Boolean
+| *camel.springboot.bean-introspection-extended-statistics* | Sets whether bean introspection uses extended statistics. The default is false. | false | Boolean
+| *camel.springboot.bean-introspection-logging-level* | Sets the logging level used by bean introspection, logging activity of its usage. The default is TRACE. |  | LoggingLevel
 | *camel.springboot.consumer-template-cache-size* | Consumer template endpoints cache size. | 1000 | Integer
 | *camel.springboot.duration-max-idle-seconds* | To specify for how long time in seconds Camel can be idle before automatic terminating the JVM. You can use this to run Spring Boot for a short while. | 0 | Integer
 | *camel.springboot.duration-max-messages* | To specify how many messages to process by Camel before automatic terminating the JVM. You can use this to run Spring Boot for a short while. | 0 | Integer
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
index 8e884a6..b20a47b 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.spring.boot;
 
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.ManagementStatisticsLevel;
 import org.apache.camel.main.DefaultConfigurationProperties;
 import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -444,6 +445,19 @@ public class CamelConfigurationProperties extends DefaultConfigurationProperties
      */
     private String threadNamePattern;
 
+    /**
+     * Sets whether bean introspection uses extended statistics.
+     * The default is false.
+     */
+    private boolean beanIntrospectionExtendedStatistics;
+
+    /**
+     * Sets the logging level used by bean introspection, logging activity of its usage.
+     * The default is TRACE.
+     */
+    private LoggingLevel beanIntrospectionLoggingLevel;
+
+
     // Getters & setters
     // -----------------
 
diff --git a/components/camel-spring-ws/src/main/docs/spring-ws-component.adoc b/components/camel-spring-ws/src/main/docs/spring-ws-component.adoc
index 6831aed..905ad2d 100644
--- a/components/camel-spring-ws/src/main/docs/spring-ws-component.adoc
+++ b/components/camel-spring-ws/src/main/docs/spring-ws-component.adoc
@@ -107,7 +107,7 @@ spring-ws:type:lookupKey:webServiceEndpointUri
 
 with the following path and query parameters:
 
-=== Path Parameters (3 parameters):
+=== Path Parameters (4 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -116,10 +116,11 @@ with the following path and query parameters:
 | *type* | Endpoint mapping type if endpoint mapping is used. rootqname - Offers the option to map web service requests based on the qualified name of the root element contained in the message. soapaction - Used to map web service requests based on the SOAP action specified in the header of the message. uri - In order to map web service requests that target a specific URI. xpathresult - Used to map web service requests based on the evaluation of an XPath expression against the incoming m [...]
 | *lookupKey* | Endpoint mapping key if endpoint mapping is used |  | String
 | *webServiceEndpointUri* | The default Web Service endpoint uri to use for the producer. |  | String
+| *expression* | The XPath expression to use when option type=xpathresult. Then this option is required to be configured. |  | String
 |===
 
 
-=== Query Parameters (24 parameters):
+=== Query Parameters (23 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -129,7 +130,6 @@ with the following path and query parameters:
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *endpointDispatcher* (consumer) | Spring org.springframework.ws.server.endpoint.MessageEndpoint for dispatching messages received by Spring-WS to a Camel endpoint, to integrate with existing (legacy) endpoint mappings like PayloadRootQNameEndpointMapping, SoapActionEndpointMapping, etc. |  | CamelEndpointDispatcher
 | *endpointMapping* (consumer) | Reference to an instance of org.apache.camel.component.spring.ws.bean.CamelEndpointMapping in the Registry/ApplicationContext. Only one bean is required in the registry to serve all Camel/Spring-WS endpoints. This bean is auto-discovered by the MessageDispatcher and used to map requests to Camel endpoints based on characteristics specified on the endpoint (like root QName, SOAP action, etc) |  | CamelSpringWSEndpoint Mapping
-| *expression* (consumer) | The XPath expression to use when option type=xpathresult. Then this option is required to be configured. |  | String
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
 | *allowResponseAttachment Override* (producer) | Option to override soap response attachments in in/out exchange with attachments from the actual service layer. If the invoked service appends or rewrites the soap attachments this option when set to true, allows the modified soap attachments to be overwritten in in/out message attachments | false | boolean
diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceComponent.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceComponent.java
index 6826522..b41a5ae 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceComponent.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceComponent.java
@@ -93,8 +93,10 @@ public class SpringWebserviceComponent extends DefaultComponent implements SSLCo
                 String expression = getAndRemoveParameter(parameters, "expression", String.class);
                 configuration.setExpression(expression);
                 xPathExpression = createXPathExpression(expression);
+                configuration.setxPathExpression(xPathExpression);
             }
-            configuration.setEndpointMappingKey(new EndpointMappingKey(type, lookupKey, xPathExpression));
+            configuration.setEndpointMappingType(type);
+            configuration.setEndpointMappingLookupKey(lookupKey);
         }
     }
 
diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConfiguration.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConfiguration.java
index 09f1e74..f162773 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConfiguration.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConfiguration.java
@@ -23,6 +23,7 @@ import org.apache.camel.component.spring.ws.bean.CamelEndpointDispatcher;
 import org.apache.camel.component.spring.ws.bean.CamelSpringWSEndpointMapping;
 import org.apache.camel.component.spring.ws.filter.MessageFilter;
 import org.apache.camel.component.spring.ws.type.EndpointMappingKey;
+import org.apache.camel.component.spring.ws.type.EndpointMappingType;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
 import org.apache.camel.spi.UriPath;
@@ -33,6 +34,7 @@ import org.springframework.ws.client.core.WebServiceTemplate;
 import org.springframework.ws.soap.addressing.messageid.MessageIdStrategy;
 import org.springframework.ws.soap.addressing.server.annotation.Action;
 import org.springframework.ws.transport.WebServiceMessageSender;
+import org.springframework.xml.xpath.XPathExpression;
 
 @UriParams
 public class SpringWebserviceConfiguration {
@@ -75,14 +77,17 @@ public class SpringWebserviceConfiguration {
     private boolean allowResponseAttachmentOverride;
     
     /* Consumer configuration */
-    @UriParam(label = "consumer")
-    private EndpointMappingKey endpointMappingKey;
+    @UriPath(label = "consumer", name = "type")
+    private EndpointMappingType endpointMappingType;
+    @UriPath(label = "consumer", name = "lookupKey")
+    private String endpointMappingLookupKey;
+    @UriPath(label = "consumer")
+    private String expression;
+    private transient XPathExpression xPathExpression;
     @UriParam(label = "consumer")
     private CamelSpringWSEndpointMapping endpointMapping;
     @UriParam(label = "consumer")
     private CamelEndpointDispatcher endpointDispatcher;
-    @UriParam(label = "consumer")
-    private String expression;
 
     public WebServiceTemplate getWebServiceTemplate() {
         return webServiceTemplate;
@@ -119,17 +124,6 @@ public class SpringWebserviceConfiguration {
         this.webServiceEndpointUri = webServiceEndpointUri;
     }
 
-    public String getExpression() {
-        return expression;
-    }
-
-    /**
-     * The XPath expression to use when option type=xpathresult. Then this option is required to be configured.
-     */
-    public void setExpression(String expression) {
-        this.expression = expression;
-    }
-
     public String getSoapAction() {
         return soapAction;
     }
@@ -142,9 +136,9 @@ public class SpringWebserviceConfiguration {
     }
 
     public String getEndpointUri() {
-        if (endpointMappingKey != null) {
+        if (getEndpointMappingKey() != null) {
             // only for consumers, use lookup key as endpoint uri/key
-            return encode(endpointMappingKey.getLookupKey());
+            return encode(getEndpointMappingKey().getLookupKey());
         } else if (webServiceTemplate != null) {
             return webServiceTemplate.getDefaultUri();
         }
@@ -203,11 +197,61 @@ public class SpringWebserviceConfiguration {
     }
 
     public EndpointMappingKey getEndpointMappingKey() {
-        return endpointMappingKey;
+        if (endpointMappingType != null && endpointMappingLookupKey != null) {
+            return new EndpointMappingKey(endpointMappingType, endpointMappingLookupKey, xPathExpression);
+        } else {
+            return null;
+        }
+    }
+
+    public EndpointMappingType getEndpointMappingType() {
+        return endpointMappingType;
+    }
+
+    /**
+     * Endpoint mapping type if endpoint mapping is used.
+     * <ul>
+     *     <li>rootqname - Offers the option to map web service requests based on the qualified name of the root element contained in the message.</li>
+     *     <li>soapaction - Used to map web service requests based on the SOAP action specified in the header of the message.</li>
+     *     <li>uri - In order to map web service requests that target a specific URI.</li>
+     *     <li>xpathresult - Used to map web service requests based on the evaluation of an XPath expression against the incoming message.
+     *                       The result of the evaluation should match the XPath result specified in the endpoint URI.</li>
+     *     <li>beanname - Allows you to reference an org.apache.camel.component.spring.ws.bean.CamelEndpointDispatcher object in order to integrate with
+     *                    existing (legacy) endpoint mappings like PayloadRootQNameEndpointMapping, SoapActionEndpointMapping, etc</li>
+     * </ul>
+     */
+    public void setEndpointMappingType(EndpointMappingType endpointMappingType) {
+        this.endpointMappingType = endpointMappingType;
+    }
+
+    public String getEndpointMappingLookupKey() {
+        return endpointMappingLookupKey;
+    }
+
+    /**
+     * Endpoint mapping key if endpoint mapping is used
+     */
+    public void setEndpointMappingLookupKey(String endpointMappingLookupKey) {
+        this.endpointMappingLookupKey = endpointMappingLookupKey;
+    }
+
+    public String getExpression() {
+        return expression;
+    }
+
+    /**
+     * The XPath expression to use when option type=xpathresult. Then this option is required to be configured.
+     */
+    public void setExpression(String expression) {
+        this.expression = expression;
+    }
+
+    public XPathExpression getxPathExpression() {
+        return xPathExpression;
     }
 
-    public void setEndpointMappingKey(EndpointMappingKey endpointMappingKey) {
-        this.endpointMappingKey = endpointMappingKey;
+    public void setxPathExpression(XPathExpression xPathExpression) {
+        this.xPathExpression = xPathExpression;
     }
 
     public SSLContextParameters getSslContextParameters() {
diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/type/EndpointMappingKey.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/type/EndpointMappingKey.java
index 6ef8e79..a8e548f 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/type/EndpointMappingKey.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/type/EndpointMappingKey.java
@@ -16,19 +16,12 @@
  */
 package org.apache.camel.component.spring.ws.type;
 
-import org.apache.camel.spi.UriParams;
-import org.apache.camel.spi.UriPath;
 import org.springframework.xml.xpath.XPathExpression;
 
-@UriParams
 public class EndpointMappingKey {
-    @UriPath(label = "consumer")
-    private EndpointMappingType type;
-    @UriPath(label = "consumer")
-    private String lookupKey;
-
-    /* expression in case type is 'xpath' */
-    private XPathExpression expression;
+    private final EndpointMappingType type;
+    private final String lookupKey;
+    private final XPathExpression expression;
 
     public EndpointMappingKey(EndpointMappingType type, String lookupKey, XPathExpression expression) {
         this.type = type;
@@ -40,41 +33,14 @@ public class EndpointMappingKey {
         return type;
     }
 
-    /**
-     * Endpoint mapping type if endpoint mapping is used.
-     * <ul>
-     *     <li>rootqname - Offers the option to map web service requests based on the qualified name of the root element contained in the message.</li>
-     *     <li>soapaction - Used to map web service requests based on the SOAP action specified in the header of the message.</li>
-     *     <li>uri - In order to map web service requests that target a specific URI.</li>
-     *     <li>xpathresult - Used to map web service requests based on the evaluation of an XPath expression against the incoming message.
-     *                       The result of the evaluation should match the XPath result specified in the endpoint URI.</li>
-     *     <li>beanname - Allows you to reference an org.apache.camel.component.spring.ws.bean.CamelEndpointDispatcher object in order to integrate with
-     *                    existing (legacy) endpoint mappings like PayloadRootQNameEndpointMapping, SoapActionEndpointMapping, etc</li>
-     * </ul>
-     */
-    public void setType(EndpointMappingType type) {
-        this.type = type;
-    }
-
     public String getLookupKey() {
         return lookupKey;
     }
 
-    /**
-     * Endpoint mapping key if endpoint mapping is used
-     */
-    public void setLookupKey(String lookupKey) {
-        this.lookupKey = lookupKey;
-    }
-
     public XPathExpression getExpression() {
         return expression;
     }
 
-    public void setExpression(XPathExpression expression) {
-        this.expression = expression;
-    }
-
     @Override
     public int hashCode() {
         final int prime = 31;
diff --git a/components/camel-sql/src/main/docs/sql-component.adoc b/components/camel-sql/src/main/docs/sql-component.adoc
index b72118b..f6866ea 100644
--- a/components/camel-sql/src/main/docs/sql-component.adoc
+++ b/components/camel-sql/src/main/docs/sql-component.adoc
@@ -188,7 +188,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-sql/src/test/java/org/apache/camel/component/sql/stored/ProducerBatchInvalidTest.java b/components/camel-sql/src/test/java/org/apache/camel/component/sql/stored/ProducerBatchInvalidTest.java
index b3e920a..824baf4 100644
--- a/components/camel-sql/src/test/java/org/apache/camel/component/sql/stored/ProducerBatchInvalidTest.java
+++ b/components/camel-sql/src/test/java/org/apache/camel/component/sql/stored/ProducerBatchInvalidTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.sql.stored;
 import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.PropertyBindingException;
 import org.apache.camel.ResolveEndpointFailedException;
+import org.apache.camel.TypeConversionException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.After;
@@ -69,8 +70,8 @@ public class ProducerBatchInvalidTest extends CamelTestSupport {
             fail("Should throw exception");
         } catch (FailedToCreateRouteException e) {
             ResolveEndpointFailedException refe = assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause());
-            PropertyBindingException pbe = assertIsInstanceOf(PropertyBindingException.class, refe.getCause());
-            assertEquals("batch", pbe.getPropertyName());
+            TypeConversionException pbe = assertIsInstanceOf(TypeConversionException.class, refe.getCause());
+            assertEquals("[true, true]", pbe.getValue().toString());
         }
     }
 
diff --git a/components/camel-ssh/src/main/docs/ssh-component.adoc b/components/camel-ssh/src/main/docs/ssh-component.adoc
index 95e3b76..7cabb91 100644
--- a/components/camel-ssh/src/main/docs/ssh-component.adoc
+++ b/components/camel-ssh/src/main/docs/ssh-component.adoc
@@ -108,7 +108,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshEndpoint.java b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshEndpoint.java
index 041226e..2180257 100644
--- a/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshEndpoint.java
+++ b/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshEndpoint.java
@@ -35,7 +35,7 @@ public class SshEndpoint extends ScheduledPollEndpoint {
     protected final Logger log = LoggerFactory.getLogger(getClass());
 
     @UriParam
-    private SshConfiguration sshConfiguration;
+    private SshConfiguration configuration;
 
     public SshEndpoint() {
     }
@@ -46,7 +46,7 @@ public class SshEndpoint extends ScheduledPollEndpoint {
 
     public SshEndpoint(String uri, SshComponent component, SshConfiguration configuration) {
         super(uri, component);
-        this.sshConfiguration = configuration;
+        this.configuration = configuration;
     }
 
     @Override
@@ -68,11 +68,11 @@ public class SshEndpoint extends ScheduledPollEndpoint {
     }
 
     public SshConfiguration getConfiguration() {
-        return sshConfiguration;
+        return configuration;
     }
 
     public void setConfiguration(SshConfiguration configuration) {
-        this.sshConfiguration = configuration;
+        this.configuration = configuration;
     }
 
     public String getHost() {
diff --git a/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java b/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java
index edf8ef8..6d61c95 100644
--- a/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java
+++ b/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java
@@ -57,23 +57,27 @@ import static org.fusesource.stomp.client.Constants.UNSUBSCRIBE;
 @UriEndpoint(firstVersion = "2.12.0", scheme = "stomp", title = "Stomp", syntax = "stomp:destination", label = "messaging")
 public class StompEndpoint extends DefaultEndpoint implements AsyncEndpoint, HeaderFilterStrategyAware {
 
+    private CallbackConnection connection;
+    private Stomp stomp;
+    private final List<StompConsumer> consumers = new CopyOnWriteArrayList<>();
+
     @UriPath(description = "Name of the queue") @Metadata(required = true)
     private String destination;
     @UriParam
     private StompConfiguration configuration;
-    private CallbackConnection connection;
-    private Stomp stomp;
     @UriParam(label = "advanced", description = "To use a custom HeaderFilterStrategy to filter header to and from Camel message.")
     private HeaderFilterStrategy headerFilterStrategy;
 
-    private final List<StompConsumer> consumers = new CopyOnWriteArrayList<>();
-
     public StompEndpoint(String uri, StompComponent component, StompConfiguration configuration, String destination) {
         super(uri, component);
         this.configuration = configuration;
         this.destination = destination;
     }
 
+    public StompConfiguration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         return new StompProducer(this);
diff --git a/components/camel-telegram/src/main/docs/telegram-component.adoc b/components/camel-telegram/src/main/docs/telegram-component.adoc
index 4438e55..31ccdce 100644
--- a/components/camel-telegram/src/main/docs/telegram-component.adoc
+++ b/components/camel-telegram/src/main/docs/telegram-component.adoc
@@ -102,7 +102,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-thrift/src/main/java/org/apache/camel/component/thrift/ThriftEndpoint.java b/components/camel-thrift/src/main/java/org/apache/camel/component/thrift/ThriftEndpoint.java
index ec8f69d..f3b5b24 100644
--- a/components/camel-thrift/src/main/java/org/apache/camel/component/thrift/ThriftEndpoint.java
+++ b/components/camel-thrift/src/main/java/org/apache/camel/component/thrift/ThriftEndpoint.java
@@ -45,6 +45,10 @@ public class ThriftEndpoint extends DefaultEndpoint {
         servicePackage = ThriftUtils.extractServicePackage(configuration.getService());
     }
 
+    public ThriftConfiguration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         ThriftProducer producer = new ThriftProducer(this, configuration);
diff --git a/components/camel-tika/src/main/docs/tika-component.adoc b/components/camel-tika/src/main/docs/tika-component.adoc
index 465f4b2..c5a99c4 100644
--- a/components/camel-tika/src/main/docs/tika-component.adoc
+++ b/components/camel-tika/src/main/docs/tika-component.adoc
@@ -57,7 +57,7 @@ with the following path and query parameters:
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *operation* | *Required* Tika Operation. parse or detect |  | TikaOperation
+| *operation* | *Required* Tika Operation - parse or detect |  | TikaOperation
 |===
 
 
@@ -68,9 +68,9 @@ with the following path and query parameters:
 |===
 | Name | Description | Default | Type
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *tikaConfig* (producer) | Tika Config |  | TikaConfig
-| *tikaConfigUri* (producer) | Tika Config Uri: The URI of tika-config.xml |  | String
-| *tikaParseOutputEncoding* (producer) | Tika Parse Output Encoding - Used to specify the character encoding of the parsed output. Defaults to Charset.defaultCharset() . |  | String
+| *tikaConfig* (producer) | To use a custom Tika config. |  | TikaConfig
+| *tikaConfigUri* (producer) | Tika Config Uri: The URI of tika-config.xml file to use. |  | String
+| *tikaParseOutputEncoding* (producer) | Tika Parse Output Encoding - Used to specify the character encoding of the parsed output. Defaults to Charset.defaultCharset(). |  | String
 | *tikaParseOutputFormat* (producer) | Tika Output Format. Supported output formats. xml: Returns Parsed Content as XML. html: Returns Parsed Content as HTML. text: Returns Parsed Content as Text. textMain: Uses the boilerpipe library to automatically extract the main content from a web page. | xml | TikaParseOutputFormat
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
diff --git a/components/camel-tika/src/main/java/org/apache/camel/component/tika/TikaConfiguration.java b/components/camel-tika/src/main/java/org/apache/camel/component/tika/TikaConfiguration.java
index 2919f40..2323784 100644
--- a/components/camel-tika/src/main/java/org/apache/camel/component/tika/TikaConfiguration.java
+++ b/components/camel-tika/src/main/java/org/apache/camel/component/tika/TikaConfiguration.java
@@ -16,18 +16,13 @@
  */
 package org.apache.camel.component.tika;
 
-import java.io.IOException;
 import java.nio.charset.Charset;
 
-import org.xml.sax.SAXException;
-
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
 import org.apache.camel.spi.UriPath;
 import org.apache.tika.config.TikaConfig;
-import org.apache.tika.exception.TikaException;
-
 
 @UriParams
 public class TikaConfiguration {
@@ -49,9 +44,7 @@ public class TikaConfiguration {
     }
 
     /**
-     * 
-     * Tika Operation.  parse or detect
-     * 
+     * Tika Operation - parse or detect
      */
     public void setOperation(TikaOperation operation) {
         this.operation = operation;
@@ -66,15 +59,13 @@ public class TikaConfiguration {
     }
 
     /**
-     * 
-     * Tika Output Format. Supported output formats. 
+     * Tika Output Format. Supported output formats.
      * <ul>
      *   <li>xml: Returns Parsed Content as XML. </li>
      *   <li>html: Returns Parsed Content as HTML. </li>
      *   <li>text: Returns Parsed Content as Text. </li>
      *   <li>textMain: Uses the <a href="http://code.google.com/p/boilerpipe/">boilerpipe</a> library to automatically extract the main content from a web page. </li>
      * </ul>
-     * 
      */
     public void setTikaParseOutputFormat(TikaParseOutputFormat tikaParseOutputFormat) {
         this.tikaParseOutputFormat = tikaParseOutputFormat;
@@ -86,8 +77,7 @@ public class TikaConfiguration {
     
     /**
      * Tika Parse Output Encoding - Used to specify the character encoding of the parsed output.  
-     * Defaults to Charset.defaultCharset() .
-     * 
+     * Defaults to Charset.defaultCharset().
      */
     public void setTikaParseOutputEncoding(String tikaParseOutputEncoding) {
         this.tikaParseOutputEncoding = tikaParseOutputEncoding;
@@ -98,9 +88,7 @@ public class TikaConfiguration {
     }
 
     /**
-     * 
-     * Tika Config
-     * 
+     * To use a custom Tika config.
      */
     public void setTikaConfig(TikaConfig tikaConfig) {
         this.tikaConfig = tikaConfig;
@@ -111,12 +99,14 @@ public class TikaConfiguration {
     }
 
     /**
-     * 
-     * Tika Config Uri: The URI of  tika-config.xml
-     * 
+     * Tika Config Uri: The URI of tika-config.xml file to use.
      */
-    public void setTikaConfigUri(String tikaConfigUri) throws TikaException, IOException, SAXException {
+    public void setTikaConfigUri(String tikaConfigUri) {
         this.tikaConfigUri = tikaConfigUri;
-        this.tikaConfig = new TikaConfig(tikaConfigUri);
+        try {
+            this.tikaConfig = new TikaConfig(tikaConfigUri);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
     }
 }
diff --git a/components/camel-timer/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java b/components/camel-timer/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java
index 236dbb9..8cc57f8 100644
--- a/components/camel-timer/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java
+++ b/components/camel-timer/src/main/java/org/apache/camel/component/timer/TimerEndpoint.java
@@ -225,12 +225,8 @@ public class TimerEndpoint extends DefaultEndpoint implements MultipleConsumersS
         this.pattern = pattern;
     }
 
-    public Timer getTimer(TimerConsumer consumer) {
-        if (timer != null) {
-            // use custom timer
-            return timer;
-        }
-        return getComponent().getTimer(consumer);
+    public Timer getTimer() {
+        return timer;
     }
 
     /**
@@ -240,6 +236,14 @@ public class TimerEndpoint extends DefaultEndpoint implements MultipleConsumersS
         this.timer = timer;
     }
 
+    public Timer getTimer(TimerConsumer consumer) {
+        if (timer != null) {
+            // use custom timer
+            return timer;
+        }
+        return getComponent().getTimer(consumer);
+    }
+
     public void removeTimer(TimerConsumer consumer) {
         if (timer == null) {
             // only remove timer if we are not using a custom timer
diff --git a/components/camel-twitter/src/main/docs/twitter-directmessage-component.adoc b/components/camel-twitter/src/main/docs/twitter-directmessage-component.adoc
index 67434da..898dcfa 100644
--- a/components/camel-twitter/src/main/docs/twitter-directmessage-component.adoc
+++ b/components/camel-twitter/src/main/docs/twitter-directmessage-component.adoc
@@ -84,7 +84,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-twitter/src/main/docs/twitter-search-component.adoc b/components/camel-twitter/src/main/docs/twitter-search-component.adoc
index ac05304..d9a2c0e 100644
--- a/components/camel-twitter/src/main/docs/twitter-search-component.adoc
+++ b/components/camel-twitter/src/main/docs/twitter-search-component.adoc
@@ -93,7 +93,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-twitter/src/main/docs/twitter-timeline-component.adoc b/components/camel-twitter/src/main/docs/twitter-timeline-component.adoc
index 408bfc6..e27246e 100644
--- a/components/camel-twitter/src/main/docs/twitter-timeline-component.adoc
+++ b/components/camel-twitter/src/main/docs/twitter-timeline-component.adoc
@@ -85,7 +85,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
index 6edd3a6..5dd7dc7 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
@@ -51,6 +51,14 @@ public class TwitterTimelineEndpoint extends AbstractTwitterEndpoint {
         this.user = user;
     }
 
+    public String getUser() {
+        return user;
+    }
+
+    public void setUser(String user) {
+        this.user = user;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         switch (timelineType) {
diff --git a/components/camel-weather/src/main/docs/weather-component.adoc b/components/camel-weather/src/main/docs/weather-component.adoc
index 33f8396..9b5cd6c 100644
--- a/components/camel-weather/src/main/docs/weather-component.adoc
+++ b/components/camel-weather/src/main/docs/weather-component.adoc
@@ -112,7 +112,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-web3j/src/main/docs/web3j-component.adoc b/components/camel-web3j/src/main/docs/web3j-component.adoc
index 48c75e3..eda6a37 100644
--- a/components/camel-web3j/src/main/docs/web3j-component.adoc
+++ b/components/camel-web3j/src/main/docs/web3j-component.adoc
@@ -137,14 +137,14 @@ The component supports 36 options, which are listed below.
 | *camel.component.web3j.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
 | *camel.component.web3j.configuration.address* | Contract address. |  | String
 | *camel.component.web3j.configuration.addresses* | Contract address or a list of addresses. |  | List
-| *camel.component.web3j.configuration.at-block* | The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions. | latest | String
+| *camel.component.web3j.configuration.at-block* | The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions. |  | DefaultBlockParameter
 | *camel.component.web3j.configuration.block-hash* | Hash of the block where this transaction was in. |  | String
 | *camel.component.web3j.configuration.client-id* | A random hexadecimal(32 bytes) ID identifying the client. |  | String
 | *camel.component.web3j.configuration.data* | The compiled code of a contract OR the hash of the invoked method signature and encoded parameters. |  | String
 | *camel.component.web3j.configuration.database-name* | The local database name. |  | String
 | *camel.component.web3j.configuration.filter-id* | The filter id to use. |  | BigInteger
 | *camel.component.web3j.configuration.from-address* | The address the transaction is send from |  | String
-| *camel.component.web3j.configuration.from-block* | The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions. | latest | String
+| *camel.component.web3j.configuration.from-block* | The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions. |  | DefaultBlockParameter
 | *camel.component.web3j.configuration.full-transaction-objects* | If true it returns the full transaction objects, if false only the hashes of the transactions. | false | Boolean
 | *camel.component.web3j.configuration.gas-limit* | The maximum gas allowed in this block. |  | BigInteger
 | *camel.component.web3j.configuration.gas-price* | Gas price used for each paid gas. |  | BigInteger
@@ -163,7 +163,7 @@ The component supports 36 options, which are listed below.
 | *camel.component.web3j.configuration.signed-transaction-data* | The signed transaction data for a new message call transaction or a contract creation for signed transactions. |  | String
 | *camel.component.web3j.configuration.source-code* | The source code to compile. |  | String
 | *camel.component.web3j.configuration.to-address* | The address the transaction is directed to. |  | String
-| *camel.component.web3j.configuration.to-block* | The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions. | latest | String
+| *camel.component.web3j.configuration.to-block* | The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions. |  | DefaultBlockParameter
 | *camel.component.web3j.configuration.topics* | Topics are order-dependent. Each topic can also be a list of topics. Specify multiple topics separated by comma. |  | List
 | *camel.component.web3j.configuration.transaction-hash* | The information about a transaction requested by transaction hash. |  | String
 | *camel.component.web3j.configuration.ttl* | The time to live in seconds of a whisper message. |  | BigInteger
diff --git a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConfiguration.java b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConfiguration.java
index d6a901e..9eebaf1 100644
--- a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConfiguration.java
+++ b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jConfiguration.java
@@ -432,6 +432,20 @@ public class Web3jConfiguration implements Cloneable {
     /**
      * The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions.
      */
+    public void setFromBlock(DefaultBlockParameter fromBlock) {
+        this.fromBlock = fromBlock;
+    }
+
+    /**
+     * The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions.
+     */
+    public void setToBlock(DefaultBlockParameter toBlock) {
+        this.toBlock = toBlock;
+    }
+
+    /**
+     * The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions.
+     */
     public void setToBlock(String block) {
         this.toBlock = toDefaultBlockParameter(block);
     }
@@ -464,6 +478,13 @@ public class Web3jConfiguration implements Cloneable {
     /**
      * The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions.
      */
+    public void setAtBlock(DefaultBlockParameter atBlock) {
+        this.atBlock = atBlock;
+    }
+
+    /**
+     * The block number, or the string "latest" for the last mined block or "pending", "earliest" for not yet mined transactions.
+     */
     public void setAtBlock(String block) {
         this.atBlock = toDefaultBlockParameter(block);
     }
diff --git a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jEndpoint.java b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jEndpoint.java
index be9ed39..d226b5c 100644
--- a/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jEndpoint.java
+++ b/components/camel-web3j/src/main/java/org/apache/camel/component/web3j/Web3jEndpoint.java
@@ -62,6 +62,10 @@ public class Web3jEndpoint extends DefaultEndpoint {
         this.web3j = buildService(remaining, configuration);
     }
 
+    public Web3jConfiguration getConfiguration() {
+        return configuration;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         return new Web3jProducer(this, configuration);
diff --git a/components/camel-websocket-jsr356/pom.xml b/components/camel-websocket-jsr356/pom.xml
index 9caf967..91e565a 100644
--- a/components/camel-websocket-jsr356/pom.xml
+++ b/components/camel-websocket-jsr356/pom.xml
@@ -34,7 +34,7 @@
     <description>Camel WebSocket using JSR356 (javax)</description>
 
     <properties>
-        <tomcat.version>9.0.13</tomcat.version>
+        <tomcat.version>9.0.24</tomcat.version>
 
         <camel.osgi.import.pkg>
             !org.apache.camel.component.websocket.jsr356.*,
diff --git a/components/camel-websocket-jsr356/src/main/docs/websocket-jsr356-component.adoc b/components/camel-websocket-jsr356/src/main/docs/websocket-jsr356-component.adoc
index 5848996..04ffa67 100644
--- a/components/camel-websocket-jsr356/src/main/docs/websocket-jsr356-component.adoc
+++ b/components/camel-websocket-jsr356/src/main/docs/websocket-jsr356-component.adoc
@@ -61,13 +61,12 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (8 parameters):
+=== Query Parameters (7 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *context* (common) | the servlet context to use (represented by its path) |  | String
 | *sessionCount* (common) | Used when the endpoint is in client mode to populate a pool of sessions |  | int
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
diff --git a/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Consumer.java b/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Consumer.java
index df3243c..701b254 100644
--- a/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Consumer.java
+++ b/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Consumer.java
@@ -21,7 +21,6 @@ import java.util.function.BiConsumer;
 
 import static java.util.Optional.ofNullable;
 
-
 import javax.websocket.ClientEndpointConfig;
 import javax.websocket.Session;
 import javax.websocket.server.ServerEndpointConfig;
@@ -30,10 +29,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.support.DefaultConsumer;
 
-
 public class JSR356Consumer extends DefaultConsumer {
     private final int sessionCount;
-    private final String context;
     private ClientSessions manager;
     private Runnable closeTask;
 
@@ -48,10 +45,9 @@ public class JSR356Consumer extends DefaultConsumer {
         });
     };;
 
-    JSR356Consumer(final JSR356Endpoint jsr356Endpoint, final Processor processor, final int sessionCount, final String context) {
+    JSR356Consumer(final JSR356Endpoint jsr356Endpoint, final Processor processor, final int sessionCount) {
         super(jsr356Endpoint, processor);
         this.sessionCount = sessionCount;
-        this.context = context;
     }
 
     @Override
@@ -69,7 +65,7 @@ public class JSR356Consumer extends DefaultConsumer {
             manager = new ClientSessions(sessionCount, URI.create(endpointKey), clientConfig.build(), onMessage);
             manager.prepare();
         } else {
-            final JSR356WebSocketComponent.ContextBag bag = JSR356WebSocketComponent.getContext(context);
+            final JSR356WebSocketComponent.ContextBag bag = JSR356WebSocketComponent.getContext(null);
             final CamelServerEndpoint endpoint = bag.getEndpoints().get(endpointKey);
             if (endpoint == null) {
                 // todo: make it customizable (the endpoint config)
diff --git a/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Endpoint.java b/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Endpoint.java
index 8ba00ce..ec90e82 100644
--- a/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Endpoint.java
+++ b/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Endpoint.java
@@ -32,9 +32,6 @@ public class JSR356Endpoint extends DefaultEndpoint {
     @UriParam(description = "Used when the endpoint is in client mode to populate a pool of sessions")
     private int sessionCount = 1;
 
-    @UriParam(description = "the servlet context to use (represented by its path)")
-    private String context;
-
     private final JSR356WebSocketComponent component;
 
     public JSR356Endpoint(final JSR356WebSocketComponent component, final String uri) {
@@ -49,7 +46,7 @@ public class JSR356Endpoint extends DefaultEndpoint {
 
     @Override
     public Consumer createConsumer(final Processor processor) {
-        return new JSR356Consumer(this, processor, sessionCount, context);
+        return new JSR356Consumer(this, processor, sessionCount);
     }
 
     @Override
diff --git a/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356WebSocketComponent.java b/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356WebSocketComponent.java
index 531b6dd..2637042 100644
--- a/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356WebSocketComponent.java
+++ b/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356WebSocketComponent.java
@@ -31,7 +31,6 @@ import javax.websocket.server.ServerContainer;
 
 import org.apache.camel.Endpoint;
 
-import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.util.IOHelper;
@@ -42,7 +41,6 @@ public class JSR356WebSocketComponent extends DefaultComponent {
     // CamelContext is in the ServletContext
     private static final Map<String, ContextBag> SERVER_CONTAINERS = new ConcurrentHashMap<>();
 
-    @Metadata(label = "sessionCount")
     protected int sessionCount;
 
     @Override
@@ -51,9 +49,7 @@ public class JSR356WebSocketComponent extends DefaultComponent {
     }
 
     public static void sendMessage(final Session session, final Object message) throws IOException {
-        final RemoteEndpoint.Basic basicRemote = session.getBasicRemote(); // todo:
-                                                                           // handle
-                                                                           // async?
+        final RemoteEndpoint.Basic basicRemote = session.getBasicRemote(); // todo: handle async?
         synchronized (session) {
             if (String.class.isInstance(message)) {
                 basicRemote.sendText(String.valueOf(message));
diff --git a/components/camel-wordpress/src/main/docs/wordpress-component.adoc b/components/camel-wordpress/src/main/docs/wordpress-component.adoc
index 2d1cc1c..a06c4a0 100644
--- a/components/camel-wordpress/src/main/docs/wordpress-component.adoc
+++ b/components/camel-wordpress/src/main/docs/wordpress-component.adoc
@@ -50,7 +50,7 @@ with the following path and query parameters:
 | Name | Description | Default | Type
 | *apiVersion* (common) | The Wordpress REST API version | 2 | String
 | *criteria* (common) | The criteria to use with complex searches. |  | Map
-| *force* (common) | Whether to bypass trash and force deletion. | false | Boolean
+| *force* (common) | Whether to bypass trash and force deletion. | false | boolean
 | *id* (common) | The entity ID. Should be passed when the operation performed requires a specific entity, e.g. deleting a post |  | Integer
 | *password* (common) | Password from authorized user |  | String
 | *searchCriteria* (common) | Search criteria |  | SearchCriteria
@@ -80,7 +80,7 @@ When using Spring Boot make sure to use the following Maven dependency to have s
 ----
 
 
-The component supports 9 options, which are listed below.
+The component supports 10 options, which are listed below.
 
 
 
@@ -89,6 +89,7 @@ The component supports 9 options, which are listed below.
 | Name | Description | Default | Type
 | *camel.component.wordpress.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
 | *camel.component.wordpress.configuration.api-version* | The Wordpress REST API version | 2 | String
+| *camel.component.wordpress.configuration.criteria* | The criteria to use with complex searches. |  | Map
 | *camel.component.wordpress.configuration.force* | Whether to bypass trash and force deletion. | false | Boolean
 | *camel.component.wordpress.configuration.id* | The entity ID. Should be passed when the operation performed requires a specific entity, e.g. deleting a post |  | Integer
 | *camel.component.wordpress.configuration.password* | Password from authorized user |  | String
diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressComponentConfiguration.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressComponentConfiguration.java
index bf1c558..cf06ab7 100644
--- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressComponentConfiguration.java
+++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressComponentConfiguration.java
@@ -41,12 +41,12 @@ public class WordpressComponentConfiguration {
     private String user;
     @UriParam(description = "Password from authorized user")
     private String password;
-    @UriParam(description = "The entity ID. Should be passed when the operation performed requires a specific entity, e.g. deleting a post", javaType = "java.lang.Integer")
+    @UriParam(description = "The entity ID. Should be passed when the operation performed requires a specific entity, e.g. deleting a post")
     private Integer id;
     @UriParam(description = "The criteria to use with complex searches.", prefix = "criteria.", multiValue = true)
     private Map<String, Object> criteria;
-    @UriParam(description = "Whether to bypass trash and force deletion.", defaultValue = "false", javaType = "java.lang.Boolean")
-    private Boolean force = false;
+    @UriParam(description = "Whether to bypass trash and force deletion.")
+    private boolean force;
     @UriParam(description = "Search criteria")
     private SearchCriteria searchCriteria;
 
@@ -94,11 +94,19 @@ public class WordpressComponentConfiguration {
         this.id = id;
     }
 
-    public Boolean isForce() {
+    public Map<String, Object> getCriteria() {
+        return criteria;
+    }
+
+    public void setCriteria(Map<String, Object> criteria) {
+        this.criteria = criteria;
+    }
+
+    public boolean isForce() {
         return force;
     }
 
-    public void setForce(Boolean force) {
+    public void setForce(boolean force) {
         this.force = force;
     }
 
diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressEndpoint.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressEndpoint.java
index 11b5b73..3f3bd3e 100644
--- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressEndpoint.java
+++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/WordpressEndpoint.java
@@ -57,15 +57,15 @@ public class WordpressEndpoint extends DefaultEndpoint {
     private String operationDetail;
 
     @UriParam
-    private WordpressComponentConfiguration config;
+    private WordpressComponentConfiguration configuration;
 
     public WordpressEndpoint(String uri, WordpressComponent component, WordpressComponentConfiguration configuration) {
         super(uri, component);
-        this.config = configuration;
+        this.configuration = configuration;
     }
 
-    public WordpressComponentConfiguration getConfig() {
-        return config;
+    public WordpressComponentConfiguration getConfiguration() {
+        return configuration;
     }
 
     public String getOperation() {
@@ -116,12 +116,12 @@ public class WordpressEndpoint extends DefaultEndpoint {
 
         // set configuration properties first
         try {
-            if (config == null) {
-                config = new WordpressComponentConfiguration();
+            if (configuration == null) {
+                configuration = new WordpressComponentConfiguration();
             }
-            PropertyBindingSupport.bindProperties(getCamelContext(), config, options);
+            PropertyBindingSupport.bindProperties(getCamelContext(), configuration, options);
 
-            if (config.getSearchCriteria() == null) {
+            if (configuration.getSearchCriteria() == null) {
                 final SearchCriteria searchCriteria = WordpressOperationType.valueOf(operation).getCriteriaType().newInstance();
                 Map<String, Object> criteriaOptions = IntrospectionSupport.extractProperties(options, "criteria.");
                 // any property that has a "," should be a List
@@ -132,21 +132,21 @@ public class WordpressEndpoint extends DefaultEndpoint {
                     return e.getValue();
                 }));
                 PropertyBindingSupport.bindProperties(getCamelContext(), searchCriteria, criteriaOptions);
-                config.setSearchCriteria(searchCriteria);
+                configuration.setSearchCriteria(searchCriteria);
             }
         } catch (Exception e) {
             throw new IllegalArgumentException(e.getMessage(), e);
         }
         // validate configuration
-        config.validate();
+        configuration.validate();
         this.initServiceProvider();
     }
 
     private void initServiceProvider() {
-        final WordpressAPIConfiguration apiConfiguration = new WordpressAPIConfiguration(config.getUrl(), config.getApiVersion());
+        final WordpressAPIConfiguration apiConfiguration = new WordpressAPIConfiguration(configuration.getUrl(), configuration.getApiVersion());
         // basic auth
-        if (ObjectHelper.isNotEmpty(config.getUser())) {
-            apiConfiguration.setAuthentication(new WordpressBasicAuthentication(config.getUser(), config.getPassword()));
+        if (ObjectHelper.isNotEmpty(configuration.getUser())) {
+            apiConfiguration.setAuthentication(new WordpressBasicAuthentication(configuration.getUser(), configuration.getPassword()));
         }
 
         WordpressServiceProvider.getInstance().init(apiConfiguration);
diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/consumer/AbstractWordpressConsumer.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/consumer/AbstractWordpressConsumer.java
index b75aac4..7f95886 100644
--- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/consumer/AbstractWordpressConsumer.java
+++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/consumer/AbstractWordpressConsumer.java
@@ -34,13 +34,13 @@ public abstract class AbstractWordpressConsumer extends ScheduledPollConsumer {
 
     public AbstractWordpressConsumer(WordpressEndpoint endpoint, Processor processor) {
         super(endpoint, processor);
-        this.configuration = endpoint.getConfig();
+        this.configuration = endpoint.getConfiguration();
         this.initConsumer();
     }
 
     public AbstractWordpressConsumer(WordpressEndpoint endpoint, Processor processor, ScheduledExecutorService scheduledExecutorService) {
         super(endpoint, processor, scheduledExecutorService);
-        this.configuration = endpoint.getConfig();
+        this.configuration = endpoint.getConfiguration();
         this.initConsumer();
     }
 
diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/producer/AbstractWordpressProducer.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/producer/AbstractWordpressProducer.java
index b27c58b..a79b76e 100644
--- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/producer/AbstractWordpressProducer.java
+++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/producer/AbstractWordpressProducer.java
@@ -32,7 +32,7 @@ public abstract class AbstractWordpressProducer<T> extends DefaultProducer {
 
     public AbstractWordpressProducer(WordpressEndpoint endpoint) {
         super(endpoint);
-        this.configuration = endpoint.getConfig();
+        this.configuration = endpoint.getConfiguration();
         if (!WordpressServiceProvider.getInstance().hasAuthentication()) {
             LOG.warn("Wordpress Producer hasn't authentication. This may lead to errors during route execution. Wordpress writing operations need authentication.");
         }
diff --git a/components/camel-wordpress/src/test/java/org/apache/camel/component/wordpress/WordpressComponentTest.java b/components/camel-wordpress/src/test/java/org/apache/camel/component/wordpress/WordpressComponentTest.java
index 3643deb..3ba998e 100644
--- a/components/camel-wordpress/src/test/java/org/apache/camel/component/wordpress/WordpressComponentTest.java
+++ b/components/camel-wordpress/src/test/java/org/apache/camel/component/wordpress/WordpressComponentTest.java
@@ -40,16 +40,16 @@ public class WordpressComponentTest extends CamelTestSupport {
         final WordpressEndpoint endpoint = (WordpressEndpoint)component
             .createEndpoint("wordpress:post?apiVersion=2&url=http://mysite.com/&criteria.search=test&criteria.page=1&criteria.perPage=10&criteria.orderBy=author&criteria.categories=camel,dozer,json");
 
-        assertThat(endpoint.getConfig().getSearchCriteria(), instanceOf(PostSearchCriteria.class));
-        assertNotNull(endpoint.getConfig().getSearchCriteria());
-        assertThat(endpoint.getConfig().getSearchCriteria().getPage(), is(1));
-        assertThat(endpoint.getConfig().getSearchCriteria().getPerPage(), is(10));
-        assertThat(endpoint.getConfig().getSearchCriteria().getSearch(), is("test"));
-        assertThat(((PostSearchCriteria)endpoint.getConfig().getSearchCriteria()).getOrderBy(), is(PostOrderBy.author));
-        assertThat(((PostSearchCriteria)endpoint.getConfig().getSearchCriteria()).getCategories(), notNullValue());
-        assertThat(((PostSearchCriteria)endpoint.getConfig().getSearchCriteria()).getCategories(), not(emptyCollectionOf(String.class)));
-
-        LOGGER.info("Categories are {}", ((PostSearchCriteria)endpoint.getConfig().getSearchCriteria()).getCategories());
+        assertThat(endpoint.getConfiguration().getSearchCriteria(), instanceOf(PostSearchCriteria.class));
+        assertNotNull(endpoint.getConfiguration().getSearchCriteria());
+        assertThat(endpoint.getConfiguration().getSearchCriteria().getPage(), is(1));
+        assertThat(endpoint.getConfiguration().getSearchCriteria().getPerPage(), is(10));
+        assertThat(endpoint.getConfiguration().getSearchCriteria().getSearch(), is("test"));
+        assertThat(((PostSearchCriteria)endpoint.getConfiguration().getSearchCriteria()).getOrderBy(), is(PostOrderBy.author));
+        assertThat(((PostSearchCriteria)endpoint.getConfiguration().getSearchCriteria()).getCategories(), notNullValue());
+        assertThat(((PostSearchCriteria)endpoint.getConfiguration().getSearchCriteria()).getCategories(), not(emptyCollectionOf(String.class)));
+
+        LOGGER.info("Categories are {}", ((PostSearchCriteria)endpoint.getConfiguration().getSearchCriteria()).getCategories());
     }
 
 }
diff --git a/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChangeConfiguration.java b/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChangeConfiguration.java
index d832872..7bb8db4 100644
--- a/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChangeConfiguration.java
+++ b/components/camel-xchange/src/main/java/org/apache/camel/component/xchange/XChangeConfiguration.java
@@ -94,6 +94,10 @@ public class XChangeConfiguration {
         return currency;
     }
 
+    public void setCurrency(Currency currency) {
+        this.currency = currency;
+    }
+
     public void setCurrency(String curr) {
         this.currency = Currency.getInstanceNoCreate(curr);
     }
@@ -102,6 +106,10 @@ public class XChangeConfiguration {
         return currencyPair;
     }
 
+    public void setCurrencyPair(CurrencyPair currencyPair) {
+        this.currencyPair = currencyPair;
+    }
+
     public void setCurrencyPair(String pair) {
         this.currencyPair = new CurrencyPair(pair);
     }
diff --git a/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/XmlSignatureEndpoint.java b/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/XmlSignatureEndpoint.java
index e181e20..eecd99d 100644
--- a/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/XmlSignatureEndpoint.java
+++ b/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/XmlSignatureEndpoint.java
@@ -51,6 +51,14 @@ public abstract class XmlSignatureEndpoint extends DefaultEndpoint {
         super(uri, component);
     }
 
+    public XmlSignerConfiguration getSignerConfiguration() {
+        return signerConfiguration;
+    }
+
+    public XmlVerifierConfiguration getVerifierConfiguration() {
+        return verifierConfiguration;
+    }
+
     public XmlCommand getCommand() {
         return command;
     }
diff --git a/components/camel-yammer/src/main/docs/yammer-component.adoc b/components/camel-yammer/src/main/docs/yammer-component.adoc
index bd7daff..5410c84 100644
--- a/components/camel-yammer/src/main/docs/yammer-component.adoc
+++ b/components/camel-yammer/src/main/docs/yammer-component.adoc
@@ -113,7 +113,7 @@ with the following path and query parameters:
 | *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
 | *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
 | *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutor Service
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | ScheduledPollConsumer Scheduler
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
 | *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
 | *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
 | *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
diff --git a/components/camel-zookeeper/src/main/docs/zookeeper-component.adoc b/components/camel-zookeeper/src/main/docs/zookeeper-component.adoc
index 8317817..1086868 100644
--- a/components/camel-zookeeper/src/main/docs/zookeeper-component.adoc
+++ b/components/camel-zookeeper/src/main/docs/zookeeper-component.adoc
@@ -71,13 +71,12 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (14 parameters):
+=== Query Parameters (13 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-| *awaitExistence* (common) | *Deprecated* Not in use | true | boolean
 | *listChildren* (common) | Whether the children of the node should be listed | false | boolean
 | *timeout* (common) | The time interval to wait on connection before timing out. | 5000 | int
 | *backoff* (consumer) | The time interval to backoff for after an error before retrying. | 5000 | long
@@ -109,7 +108,7 @@ When using Spring Boot make sure to use the following Maven dependency to have s
 ----
 
 
-The component supports 57 options, which are listed below.
+The component supports 56 options, which are listed below.
 
 
 
@@ -172,7 +171,6 @@ The component supports 57 options, which are listed below.
 | *camel.component.zookeeper.service-registry.service-host* |  |  | String
 | *camel.component.zookeeper.service-registry.session-timeout* |  |  | Long
 | *camel.component.zookeeper.service-registry.session-timeout-unit* |  |  | TimeUnit
-| *camel.component.zookeeper.configuration.await-existence* | *Deprecated* Not in use | true | Boolean
 |===
 // spring-boot-auto-configure options: END
 
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConfiguration.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConfiguration.java
index 12b107e..287614c 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConfiguration.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConfiguration.java
@@ -45,9 +45,6 @@ public class ZooKeeperConfiguration implements Cloneable {
     private int timeout = 5000;
     @UriParam(label = "consumer", defaultValue = "5000")
     private long backoff = 5000;
-    @UriParam(defaultValue = "true")
-    @Deprecated
-    private boolean awaitExistence = true;
     @UriParam(label = "consumer")
... 15234 lines suppressed ...