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/21 06:56:46 UTC

[camel] branch CAMEL-13870 updated: CAMEL-13870: Fast property configuration of Camel endpoints. Work in progress.

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

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


The following commit(s) were added to refs/heads/CAMEL-13870 by this push:
     new d24a9be  CAMEL-13870: Fast property configuration of Camel endpoints. Work in progress.
d24a9be is described below

commit d24a9be776f66c22dafbaff294ed527c08cf24f1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Aug 21 08:56:31 2019 +0200

    CAMEL-13870: Fast property configuration of Camel endpoints. Work in progress.
---
 .../component/lucene/LuceneConfiguration.java      |  28 +--
 .../camel/component/lucene/LuceneEndpoint.java     |   2 +-
 .../component/lucene/LuceneQueryProducer.java      |   2 +-
 .../camel-mail/src/main/docs/mail-component.adoc   |   2 +-
 .../apache/camel/component/mail/MailEndpoint.java  |   2 +-
 .../src/main/docs/milo-client-component.adoc       |   4 +-
 .../milo/client/MiloClientConfiguration.java       |   4 +-
 .../milo/client/MiloClientConnection.java          |   4 +
 .../component/milo/client/MiloClientEndpoint.java  |  47 ++--
 .../src/main/docs/mongodb-gridfs-component.adoc    |   3 +-
 .../component/mongodb/gridfs/GridFsConverter.java  |  39 ++++
 .../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 +-
 .../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 +-
 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 +-
 .../apache/camel/component/sjms/SjmsEndpoint.java  |   9 +-
 .../endpoint/dsl/GridFsEndpointBuilderFactory.java |  91 --------
 .../endpoint/dsl/MQTTEndpointBuilderFactory.java   |  21 +-
 .../dsl/MiloClientEndpointBuilderFactory.java      |  90 +-------
 .../dsl/MongoDbEndpointBuilderFactory.java         |  18 +-
 .../dsl/NettyHttpEndpointBuilderFactory.java       | 240 ---------------------
 .../springboot/LuceneComponentConfiguration.java   |  20 +-
 .../MiloClientComponentConfiguration.java          |   7 +-
 .../components-starter/camel-nsq-starter/pom.xml   |   8 -
 34 files changed, 282 insertions(+), 628 deletions(-)

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..4cf1830 100644
--- a/components/camel-mail/src/main/docs/mail-component.adoc
+++ b/components/camel-mail/src/main/docs/mail-component.adoc
@@ -194,7 +194,7 @@ with the following path and query parameters:
 | *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-milo/src/main/docs/milo-client-component.adoc b/components/camel-milo/src/main/docs/milo-client-component.adoc
index 5a22266..df96814 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
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..25720f5 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
@@ -277,8 +277,8 @@ 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(URL keyStoreUrl) {
+        this.keyStoreUrl = keyStoreUrl;
     }
 
     public URL getKeyStoreUrl() {
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-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-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsConverter.java b/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsConverter.java
new file mode 100644
index 0000000..3c3f3a9
--- /dev/null
+++ b/components/camel-mongodb-gridfs/src/main/java/org/apache/camel/component/mongodb/gridfs/GridFsConverter.java
@@ -0,0 +1,39 @@
+/*
+ * 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.mongodb.gridfs;
+
+import com.mongodb.ReadPreference;
+import com.mongodb.WriteConcern;
+import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
+
+@Converter(loader = true)
+public final class GridFsConverter {
+
+    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-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-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-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/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/GridFsEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/GridFsEndpointBuilderFactory.java
index f5fdaec..4ac2cd1 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/GridFsEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/GridFsEndpointBuilderFactory.java
@@ -128,37 +128,6 @@ public interface GridFsEndpointBuilderFactory {
             return this;
         }
         /**
-         * 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.
-         * 
-         * The option is a: <code>com.mongodb.WriteConcern</code> type.
-         * 
-         * Group: common
-         */
-        default GridFsEndpointConsumerBuilder writeConcernRef(
-                Object writeConcernRef) {
-            setProperty("writeConcernRef", writeConcernRef);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a
-         * <code>com.mongodb.WriteConcern</code> type.
-         * 
-         * Group: common
-         */
-        default GridFsEndpointConsumerBuilder writeConcernRef(
-                String writeConcernRef) {
-            setProperty("writeConcernRef", writeConcernRef);
-            return this;
-        }
-        /**
          * 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
@@ -538,37 +507,6 @@ public interface GridFsEndpointBuilderFactory {
             return this;
         }
         /**
-         * 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.
-         * 
-         * The option is a: <code>com.mongodb.WriteConcern</code> type.
-         * 
-         * Group: common
-         */
-        default GridFsEndpointProducerBuilder writeConcernRef(
-                Object writeConcernRef) {
-            setProperty("writeConcernRef", writeConcernRef);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a
-         * <code>com.mongodb.WriteConcern</code> type.
-         * 
-         * Group: common
-         */
-        default GridFsEndpointProducerBuilder writeConcernRef(
-                String writeConcernRef) {
-            setProperty("writeConcernRef", writeConcernRef);
-            return this;
-        }
-        /**
          * 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
@@ -777,35 +715,6 @@ public interface GridFsEndpointBuilderFactory {
             setProperty("writeConcern", writeConcern);
             return this;
         }
-        /**
-         * 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.
-         * 
-         * The option is a: <code>com.mongodb.WriteConcern</code> type.
-         * 
-         * Group: common
-         */
-        default GridFsEndpointBuilder writeConcernRef(Object writeConcernRef) {
-            setProperty("writeConcernRef", writeConcernRef);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a
-         * <code>com.mongodb.WriteConcern</code> type.
-         * 
-         * Group: common
-         */
-        default GridFsEndpointBuilder writeConcernRef(String writeConcernRef) {
-            setProperty("writeConcernRef", writeConcernRef);
-            return this;
-        }
     }
 
     /**
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MQTTEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MQTTEndpointBuilderFactory.java
index 276a277..98fe02d 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MQTTEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MQTTEndpointBuilderFactory.java
@@ -748,11 +748,11 @@ public interface MQTTEndpointBuilderFactory {
          * Set to true if you want the Will to be published with the retain
          * option.
          * 
-         * The option is a: <code>org.fusesource.mqtt.client.QoS</code> type.
+         * The option is a: <code>boolean</code> type.
          * 
          * Group: common
          */
-        default MQTTEndpointConsumerBuilder willRetain(QoS willRetain) {
+        default MQTTEndpointConsumerBuilder willRetain(boolean willRetain) {
             setProperty("willRetain", willRetain);
             return this;
         }
@@ -760,8 +760,7 @@ public interface MQTTEndpointBuilderFactory {
          * Set to true if you want the Will to be published with the retain
          * option.
          * 
-         * The option will be converted to a
-         * <code>org.fusesource.mqtt.client.QoS</code> type.
+         * The option will be converted to a <code>boolean</code> type.
          * 
          * Group: common
          */
@@ -1652,11 +1651,11 @@ public interface MQTTEndpointBuilderFactory {
          * Set to true if you want the Will to be published with the retain
          * option.
          * 
-         * The option is a: <code>org.fusesource.mqtt.client.QoS</code> type.
+         * The option is a: <code>boolean</code> type.
          * 
          * Group: common
          */
-        default MQTTEndpointProducerBuilder willRetain(QoS willRetain) {
+        default MQTTEndpointProducerBuilder willRetain(boolean willRetain) {
             setProperty("willRetain", willRetain);
             return this;
         }
@@ -1664,8 +1663,7 @@ public interface MQTTEndpointBuilderFactory {
          * Set to true if you want the Will to be published with the retain
          * option.
          * 
-         * The option will be converted to a
-         * <code>org.fusesource.mqtt.client.QoS</code> type.
+         * The option will be converted to a <code>boolean</code> type.
          * 
          * Group: common
          */
@@ -2514,11 +2512,11 @@ public interface MQTTEndpointBuilderFactory {
          * Set to true if you want the Will to be published with the retain
          * option.
          * 
-         * The option is a: <code>org.fusesource.mqtt.client.QoS</code> type.
+         * The option is a: <code>boolean</code> type.
          * 
          * Group: common
          */
-        default MQTTEndpointBuilder willRetain(QoS willRetain) {
+        default MQTTEndpointBuilder willRetain(boolean willRetain) {
             setProperty("willRetain", willRetain);
             return this;
         }
@@ -2526,8 +2524,7 @@ public interface MQTTEndpointBuilderFactory {
          * Set to true if you want the Will to be published with the retain
          * option.
          * 
-         * The option will be converted to a
-         * <code>org.fusesource.mqtt.client.QoS</code> type.
+         * The option will be converted to a <code>boolean</code> type.
          * 
          * Group: common
          */
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MiloClientEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MiloClientEndpointBuilderFactory.java
index 1a26d66..cd7f1ee 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MiloClientEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MiloClientEndpointBuilderFactory.java
@@ -107,20 +107,7 @@ public interface MiloClientEndpointBuilderFactory {
         /**
          * The method definition (see Method ID).
          * 
-         * The option is a:
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
-         * 
-         * Group: common
-         */
-        default MiloClientEndpointConsumerBuilder method(Object method) {
-            setProperty("method", method);
-            return this;
-        }
-        /**
-         * The method definition (see Method ID).
-         * 
-         * The option will be converted to a
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          */
@@ -131,20 +118,7 @@ public interface MiloClientEndpointBuilderFactory {
         /**
          * The node definition (see Node ID).
          * 
-         * The option is a:
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
-         * 
-         * Group: common
-         */
-        default MiloClientEndpointConsumerBuilder node(Object node) {
-            setProperty("node", node);
-            return this;
-        }
-        /**
-         * The node definition (see Node ID).
-         * 
-         * The option will be converted to a
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          */
@@ -694,20 +668,7 @@ public interface MiloClientEndpointBuilderFactory {
         /**
          * The method definition (see Method ID).
          * 
-         * The option is a:
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
-         * 
-         * Group: common
-         */
-        default MiloClientEndpointProducerBuilder method(Object method) {
-            setProperty("method", method);
-            return this;
-        }
-        /**
-         * The method definition (see Method ID).
-         * 
-         * The option will be converted to a
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          */
@@ -718,20 +679,7 @@ public interface MiloClientEndpointBuilderFactory {
         /**
          * The node definition (see Node ID).
          * 
-         * The option is a:
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
-         * 
-         * Group: common
-         */
-        default MiloClientEndpointProducerBuilder node(Object node) {
-            setProperty("node", node);
-            return this;
-        }
-        /**
-         * The node definition (see Node ID).
-         * 
-         * The option will be converted to a
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          */
@@ -1228,20 +1176,7 @@ public interface MiloClientEndpointBuilderFactory {
         /**
          * The method definition (see Method ID).
          * 
-         * The option is a:
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
-         * 
-         * Group: common
-         */
-        default MiloClientEndpointBuilder method(Object method) {
-            setProperty("method", method);
-            return this;
-        }
-        /**
-         * The method definition (see Method ID).
-         * 
-         * The option will be converted to a
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          */
@@ -1252,20 +1187,7 @@ public interface MiloClientEndpointBuilderFactory {
         /**
          * The node definition (see Node ID).
          * 
-         * The option is a:
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
-         * 
-         * Group: common
-         */
-        default MiloClientEndpointBuilder node(Object node) {
-            setProperty("node", node);
-            return this;
-        }
-        /**
-         * The node definition (see Node ID).
-         * 
-         * The option will be converted to a
-         * <code>org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId</code> type.
+         * The option is a: <code>java.lang.String</code> type.
          * 
          * Group: common
          */
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MongoDbEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MongoDbEndpointBuilderFactory.java
index 800093e..27d56f2 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MongoDbEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/MongoDbEndpointBuilderFactory.java
@@ -128,8 +128,7 @@ public interface MongoDbEndpointBuilderFactory {
             return this;
         }
         /**
-         * Sets the operation this endpoint will execute against MongoDB. For
-         * possible values, see MongoDbOperation.
+         * Sets the operation this endpoint will execute against MongoDB.
          * 
          * The option is a:
          * <code>org.apache.camel.component.mongodb.MongoDbOperation</code>
@@ -143,8 +142,7 @@ public interface MongoDbEndpointBuilderFactory {
             return this;
         }
         /**
-         * Sets the operation this endpoint will execute against MongoDB. For
-         * possible values, see MongoDbOperation.
+         * Sets the operation this endpoint will execute against MongoDB.
          * 
          * The option will be converted to a
          * <code>org.apache.camel.component.mongodb.MongoDbOperation</code>
@@ -665,8 +663,7 @@ public interface MongoDbEndpointBuilderFactory {
             return this;
         }
         /**
-         * Sets the operation this endpoint will execute against MongoDB. For
-         * possible values, see MongoDbOperation.
+         * Sets the operation this endpoint will execute against MongoDB.
          * 
          * The option is a:
          * <code>org.apache.camel.component.mongodb.MongoDbOperation</code>
@@ -680,8 +677,7 @@ public interface MongoDbEndpointBuilderFactory {
             return this;
         }
         /**
-         * Sets the operation this endpoint will execute against MongoDB. For
-         * possible values, see MongoDbOperation.
+         * Sets the operation this endpoint will execute against MongoDB.
          * 
          * The option will be converted to a
          * <code>org.apache.camel.component.mongodb.MongoDbOperation</code>
@@ -1133,8 +1129,7 @@ public interface MongoDbEndpointBuilderFactory {
             return this;
         }
         /**
-         * Sets the operation this endpoint will execute against MongoDB. For
-         * possible values, see MongoDbOperation.
+         * Sets the operation this endpoint will execute against MongoDB.
          * 
          * The option is a:
          * <code>org.apache.camel.component.mongodb.MongoDbOperation</code>
@@ -1147,8 +1142,7 @@ public interface MongoDbEndpointBuilderFactory {
             return this;
         }
         /**
-         * Sets the operation this endpoint will execute against MongoDB. For
-         * possible values, see MongoDbOperation.
+         * Sets the operation this endpoint will execute against MongoDB.
          * 
          * The option will be converted to a
          * <code>org.apache.camel.component.mongodb.MongoDbOperation</code>
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/NettyHttpEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/NettyHttpEndpointBuilderFactory.java
index ce9e753..afe6d28 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/NettyHttpEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/NettyHttpEndpointBuilderFactory.java
@@ -291,33 +291,6 @@ public interface NettyHttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * To use a single decoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option is a: <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointConsumerBuilder decoder(Object decoder) {
-            setProperty("decoder", decoder);
-            return this;
-        }
-        /**
-         * To use a single decoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option will be converted to a
-         * <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointConsumerBuilder decoder(String decoder) {
-            setProperty("decoder", decoder);
-            return this;
-        }
-        /**
          * 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
@@ -350,33 +323,6 @@ public interface NettyHttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * To use a single encoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option is a: <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointConsumerBuilder encoder(Object encoder) {
-            setProperty("encoder", encoder);
-            return this;
-        }
-        /**
-         * To use a single encoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option will be converted to a
-         * <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointConsumerBuilder encoder(String encoder) {
-            setProperty("encoder", encoder);
-            return this;
-        }
-        /**
          * 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
@@ -1819,32 +1765,6 @@ public interface NettyHttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * To use a custom configured NettyServerBootstrapConfiguration for
-         * configuring this endpoint.
-         * 
-         * The option is a: <code>java.lang.Object</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedNettyHttpEndpointConsumerBuilder bootstrapConfiguration(
-                Object bootstrapConfiguration) {
-            setProperty("bootstrapConfiguration", bootstrapConfiguration);
-            return this;
-        }
-        /**
-         * To use a custom configured NettyServerBootstrapConfiguration for
-         * configuring this endpoint.
-         * 
-         * The option will be converted to a <code>java.lang.Object</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedNettyHttpEndpointConsumerBuilder bootstrapConfiguration(
-                String bootstrapConfiguration) {
-            setProperty("bootstrapConfiguration", bootstrapConfiguration);
-            return this;
-        }
-        /**
          * Sets whether synchronous processing should be strictly used, or Camel
          * is allowed to use asynchronous processing (if supported).
          * 
@@ -2182,33 +2102,6 @@ public interface NettyHttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * To use a single decoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option is a: <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointProducerBuilder decoder(Object decoder) {
-            setProperty("decoder", decoder);
-            return this;
-        }
-        /**
-         * To use a single decoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option will be converted to a
-         * <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointProducerBuilder decoder(String decoder) {
-            setProperty("decoder", decoder);
-            return this;
-        }
-        /**
          * 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
@@ -2241,33 +2134,6 @@ public interface NettyHttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * To use a single encoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option is a: <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointProducerBuilder encoder(Object encoder) {
-            setProperty("encoder", encoder);
-            return this;
-        }
-        /**
-         * To use a single encoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option will be converted to a
-         * <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointProducerBuilder encoder(String encoder) {
-            setProperty("encoder", encoder);
-            return this;
-        }
-        /**
          * 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
@@ -3319,32 +3185,6 @@ public interface NettyHttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * To use a custom configured NettyServerBootstrapConfiguration for
-         * configuring this endpoint.
-         * 
-         * The option is a: <code>java.lang.Object</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedNettyHttpEndpointProducerBuilder bootstrapConfiguration(
-                Object bootstrapConfiguration) {
-            setProperty("bootstrapConfiguration", bootstrapConfiguration);
-            return this;
-        }
-        /**
-         * To use a custom configured NettyServerBootstrapConfiguration for
-         * configuring this endpoint.
-         * 
-         * The option will be converted to a <code>java.lang.Object</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedNettyHttpEndpointProducerBuilder bootstrapConfiguration(
-                String bootstrapConfiguration) {
-            setProperty("bootstrapConfiguration", bootstrapConfiguration);
-            return this;
-        }
-        /**
          * Sets whether synchronous processing should be strictly used, or Camel
          * is allowed to use asynchronous processing (if supported).
          * 
@@ -3566,33 +3406,6 @@ public interface NettyHttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * To use a single decoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option is a: <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointBuilder decoder(Object decoder) {
-            setProperty("decoder", decoder);
-            return this;
-        }
-        /**
-         * To use a single decoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option will be converted to a
-         * <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointBuilder decoder(String decoder) {
-            setProperty("decoder", decoder);
-            return this;
-        }
-        /**
          * 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
@@ -3625,33 +3438,6 @@ public interface NettyHttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * To use a single encoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option is a: <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointBuilder encoder(Object encoder) {
-            setProperty("encoder", encoder);
-            return this;
-        }
-        /**
-         * To use a single encoder. This options is deprecated use encoders
-         * instead.
-         * 
-         * The option will be converted to a
-         * <code>io.netty.channel.ChannelHandler</code> type.
-         * 
-         * Group: codec
-         */
-        @Deprecated
-        default NettyHttpEndpointBuilder encoder(String encoder) {
-            setProperty("encoder", encoder);
-            return this;
-        }
-        /**
          * 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
@@ -4414,32 +4200,6 @@ public interface NettyHttpEndpointBuilderFactory {
             return this;
         }
         /**
-         * To use a custom configured NettyServerBootstrapConfiguration for
-         * configuring this endpoint.
-         * 
-         * The option is a: <code>java.lang.Object</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedNettyHttpEndpointBuilder bootstrapConfiguration(
-                Object bootstrapConfiguration) {
-            setProperty("bootstrapConfiguration", bootstrapConfiguration);
-            return this;
-        }
-        /**
-         * To use a custom configured NettyServerBootstrapConfiguration for
-         * configuring this endpoint.
-         * 
-         * The option will be converted to a <code>java.lang.Object</code> type.
-         * 
-         * Group: advanced
-         */
-        default AdvancedNettyHttpEndpointBuilder bootstrapConfiguration(
-                String bootstrapConfiguration) {
-            setProperty("bootstrapConfiguration", bootstrapConfiguration);
-            return this;
-        }
-        /**
          * Sets whether synchronous processing should be strictly used, or Camel
          * is allowed to use asynchronous processing (if supported).
          * 
diff --git a/platforms/spring-boot/components-starter/camel-lucene-starter/src/main/java/org/apache/camel/component/lucene/springboot/LuceneComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-lucene-starter/src/main/java/org/apache/camel/component/lucene/springboot/LuceneComponentConfiguration.java
index 9328097..70eaaef 100644
--- a/platforms/spring-boot/components-starter/camel-lucene-starter/src/main/java/org/apache/camel/component/lucene/springboot/LuceneComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-lucene-starter/src/main/java/org/apache/camel/component/lucene/springboot/LuceneComponentConfiguration.java
@@ -86,12 +86,12 @@ public class LuceneComponentConfiguration
          * An optional directory containing files to be used to be analyzed and
          * added to the index at producer startup.
          */
-        private File sourceDirectory;
+        private File srcDir;
         /**
          * A file system directory in which index files are created upon
          * analysis of the document by the specified analyzer
          */
-        private File indexDirectory;
+        private File indexDir;
         /**
          * An Analyzer builds TokenStreams, which analyze text. It thus
          * represents a policy for extracting index terms from text. The value
@@ -141,20 +141,20 @@ public class LuceneComponentConfiguration
             this.authority = authority;
         }
 
-        public File getSourceDirectory() {
-            return sourceDirectory;
+        public File getSrcDir() {
+            return srcDir;
         }
 
-        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;
         }
 
-        public void setIndexDirectory(File indexDirectory) {
-            this.indexDirectory = indexDirectory;
+        public void setIndexDir(File indexDir) {
+            this.indexDir = indexDir;
         }
 
         public Analyzer getAnalyzer() {
diff --git a/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentConfiguration.java
index d975bac..0c6eabb 100644
--- a/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-milo-starter/src/main/java/org/apache/camel/component/milo/client/springboot/MiloClientComponentConfiguration.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.milo.client.springboot;
 
+import java.net.URL;
 import java.util.Set;
 import javax.annotation.Generated;
 import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
@@ -167,7 +168,7 @@ public class MiloClientComponentConfiguration
         /**
          * The URL where the key should be loaded from
          */
-        private String keyStoreUrl;
+        private URL keyStoreUrl;
         /**
          * The key store type
          */
@@ -291,11 +292,11 @@ public class MiloClientComponentConfiguration
             this.maxResponseMessageSize = maxResponseMessageSize;
         }
 
-        public String getKeyStoreUrl() {
+        public URL getKeyStoreUrl() {
             return keyStoreUrl;
         }
 
-        public void setKeyStoreUrl(String keyStoreUrl) {
+        public void setKeyStoreUrl(URL keyStoreUrl) {
             this.keyStoreUrl = keyStoreUrl;
         }
 
diff --git a/platforms/spring-boot/components-starter/camel-nsq-starter/pom.xml b/platforms/spring-boot/components-starter/camel-nsq-starter/pom.xml
index 7bce516..8e697a5 100644
--- a/platforms/spring-boot/components-starter/camel-nsq-starter/pom.xml
+++ b/platforms/spring-boot/components-starter/camel-nsq-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-nsq</artifactId>
       <version>${project.version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.logging.log4j</groupId>
-          <artifactId>log4j-core</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>