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

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


The following commit(s) were added to refs/heads/main by this push:
     new 251aa272bf1 CAMEL-20846: Add capability to configure 
elasticsearch-rest-client with component options (#14446)
251aa272bf1 is described below

commit 251aa272bf1584121fdb0e21b6d67b686a51f1f6
Author: James Netherton <jamesnether...@users.noreply.github.com>
AuthorDate: Mon Jun 10 16:02:17 2024 +0100

    CAMEL-20846: Add capability to configure elasticsearch-rest-client with 
component options (#14446)
---
 .../components/elasticsearch-rest-client.json      |  14 +-
 ...ElasticsearchRestClientComponentConfigurer.java |  59 +++++++
 .../rest/client/elasticsearch-rest-client.json     |  14 +-
 .../client/ElasticsearchRestClientComponent.java   | 146 ++++++++++++++++-
 ...SearchRestClientComponentConfigurationTest.java |  66 ++++++++
 ...ticsearchRestClientComponentBuilderFactory.java | 175 +++++++++++++++++++++
 6 files changed, 469 insertions(+), 5 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/elasticsearch-rest-client.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/elasticsearch-rest-client.json
index 6edf65e32ae..a36af6dc55d 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/elasticsearch-rest-client.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/elasticsearch-rest-client.json
@@ -23,8 +23,18 @@
     "remote": true
   },
   "componentProperties": {
-    "lazyStartProducer": { "index": 0, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"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 [...]
-    "autowiredEnabled": { "index": 1, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "connectionTimeout": { "index": 0, "kind": "property", "displayName": 
"Connection Timeout", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30000, "description": "Connection timeout" },
+    "hostAddressesList": { "index": 1, "kind": "property", "displayName": 
"Host Addresses List", "group": "producer", "label": "", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "List of host Addresses, 
multiple hosts can be separated by comma." },
+    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"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 [...]
+    "socketTimeout": { "index": 3, "kind": "property", "displayName": "Socket 
Timeout", "group": "producer", "label": "", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30000, "description": "Socket timeout" },
+    "autowiredEnabled": { "index": 4, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "enableSniffer": { "index": 5, "kind": "property", "displayName": "Enable 
Sniffer", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Enabling Sniffer" },
+    "restClient": { "index": 6, "kind": "property", "displayName": "Rest 
Client", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.elasticsearch.client.RestClient", "deprecated": 
false, "autowired": true, "secret": false, "description": "Rest Client of type 
org.elasticsearch.client.RestClient. This is only for advanced usage" },
+    "sniffAfterFailureDelay": { "index": 7, "kind": "property", "displayName": 
"Sniff After Failure Delay", "group": "advanced", "label": "advanced", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 60000, "description": 
"Sniffer after failure delay (in millis)" },
+    "snifferInterval": { "index": 8, "kind": "property", "displayName": 
"Sniffer Interval", "group": "advanced", "label": "advanced", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 60000, "description": "Sniffer interval 
(in millis)" },
+    "certificatePath": { "index": 9, "kind": "property", "displayName": 
"Certificate Path", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "supportFileReference": true, 
"description": "Certificate Path" },
+    "password": { "index": 10, "kind": "property", "displayName": "Password", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "description": "Password" },
+    "user": { "index": 11, "kind": "property", "displayName": "User", "group": 
"security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "description": "Username" }
   },
   "properties": {
     "clusterName": { "index": 0, "kind": "path", "displayName": "Cluster 
Name", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Cluster Name" },
diff --git 
a/components/camel-elasticsearch-rest-client/src/generated/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientComponentConfigurer.java
 
b/components/camel-elasticsearch-rest-client/src/generated/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientComponentConfigurer.java
index 3ccfb2b9013..0db4ab9e77c 100644
--- 
a/components/camel-elasticsearch-rest-client/src/generated/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientComponentConfigurer.java
+++ 
b/components/camel-elasticsearch-rest-client/src/generated/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientComponentConfigurer.java
@@ -25,19 +25,60 @@ public class ElasticsearchRestClientComponentConfigurer 
extends PropertyConfigur
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "autowiredenabled":
         case "autowiredEnabled": 
target.setAutowiredEnabled(property(camelContext, boolean.class, value)); 
return true;
+        case "certificatepath":
+        case "certificatePath": 
target.setCertificatePath(property(camelContext, java.lang.String.class, 
value)); return true;
+        case "connectiontimeout":
+        case "connectionTimeout": 
target.setConnectionTimeout(property(camelContext, int.class, value)); return 
true;
+        case "enablesniffer":
+        case "enableSniffer": target.setEnableSniffer(property(camelContext, 
boolean.class, value)); return true;
+        case "hostaddresseslist":
+        case "hostAddressesList": 
target.setHostAddressesList(property(camelContext, java.lang.String.class, 
value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
+        case "password": target.setPassword(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "restclient":
+        case "restClient": target.setRestClient(property(camelContext, 
org.elasticsearch.client.RestClient.class, value)); return true;
+        case "sniffafterfailuredelay":
+        case "sniffAfterFailureDelay": 
target.setSniffAfterFailureDelay(property(camelContext, int.class, value)); 
return true;
+        case "snifferinterval":
+        case "snifferInterval": 
target.setSnifferInterval(property(camelContext, int.class, value)); return 
true;
+        case "sockettimeout":
+        case "socketTimeout": target.setSocketTimeout(property(camelContext, 
int.class, value)); return true;
+        case "user": target.setUser(property(camelContext, 
java.lang.String.class, value)); return true;
         default: return false;
         }
     }
 
+    @Override
+    public String[] getAutowiredNames() {
+        return new String[]{"restClient"};
+    }
+
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "autowiredenabled":
         case "autowiredEnabled": return boolean.class;
+        case "certificatepath":
+        case "certificatePath": return java.lang.String.class;
+        case "connectiontimeout":
+        case "connectionTimeout": return int.class;
+        case "enablesniffer":
+        case "enableSniffer": return boolean.class;
+        case "hostaddresseslist":
+        case "hostAddressesList": return java.lang.String.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
+        case "password": return java.lang.String.class;
+        case "restclient":
+        case "restClient": return org.elasticsearch.client.RestClient.class;
+        case "sniffafterfailuredelay":
+        case "sniffAfterFailureDelay": return int.class;
+        case "snifferinterval":
+        case "snifferInterval": return int.class;
+        case "sockettimeout":
+        case "socketTimeout": return int.class;
+        case "user": return java.lang.String.class;
         default: return null;
         }
     }
@@ -48,8 +89,26 @@ public class ElasticsearchRestClientComponentConfigurer 
extends PropertyConfigur
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "autowiredenabled":
         case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "certificatepath":
+        case "certificatePath": return target.getCertificatePath();
+        case "connectiontimeout":
+        case "connectionTimeout": return target.getConnectionTimeout();
+        case "enablesniffer":
+        case "enableSniffer": return target.isEnableSniffer();
+        case "hostaddresseslist":
+        case "hostAddressesList": return target.getHostAddressesList();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "password": return target.getPassword();
+        case "restclient":
+        case "restClient": return target.getRestClient();
+        case "sniffafterfailuredelay":
+        case "sniffAfterFailureDelay": return 
target.getSniffAfterFailureDelay();
+        case "snifferinterval":
+        case "snifferInterval": return target.getSnifferInterval();
+        case "sockettimeout":
+        case "socketTimeout": return target.getSocketTimeout();
+        case "user": return target.getUser();
         default: return null;
         }
     }
diff --git 
a/components/camel-elasticsearch-rest-client/src/generated/resources/META-INF/org/apache/camel/component/elasticsearch/rest/client/elasticsearch-rest-client.json
 
b/components/camel-elasticsearch-rest-client/src/generated/resources/META-INF/org/apache/camel/component/elasticsearch/rest/client/elasticsearch-rest-client.json
index 6edf65e32ae..a36af6dc55d 100644
--- 
a/components/camel-elasticsearch-rest-client/src/generated/resources/META-INF/org/apache/camel/component/elasticsearch/rest/client/elasticsearch-rest-client.json
+++ 
b/components/camel-elasticsearch-rest-client/src/generated/resources/META-INF/org/apache/camel/component/elasticsearch/rest/client/elasticsearch-rest-client.json
@@ -23,8 +23,18 @@
     "remote": true
   },
   "componentProperties": {
-    "lazyStartProducer": { "index": 0, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"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 [...]
-    "autowiredEnabled": { "index": 1, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "connectionTimeout": { "index": 0, "kind": "property", "displayName": 
"Connection Timeout", "group": "producer", "label": "", "required": false, 
"type": "integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30000, "description": "Connection timeout" },
+    "hostAddressesList": { "index": 1, "kind": "property", "displayName": 
"Host Addresses List", "group": "producer", "label": "", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "List of host Addresses, 
multiple hosts can be separated by comma." },
+    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"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 [...]
+    "socketTimeout": { "index": 3, "kind": "property", "displayName": "Socket 
Timeout", "group": "producer", "label": "", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 30000, "description": "Socket timeout" },
+    "autowiredEnabled": { "index": 4, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "enableSniffer": { "index": 5, "kind": "property", "displayName": "Enable 
Sniffer", "group": "advanced", "label": "advanced", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Enabling Sniffer" },
+    "restClient": { "index": 6, "kind": "property", "displayName": "Rest 
Client", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.elasticsearch.client.RestClient", "deprecated": 
false, "autowired": true, "secret": false, "description": "Rest Client of type 
org.elasticsearch.client.RestClient. This is only for advanced usage" },
+    "sniffAfterFailureDelay": { "index": 7, "kind": "property", "displayName": 
"Sniff After Failure Delay", "group": "advanced", "label": "advanced", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 60000, "description": 
"Sniffer after failure delay (in millis)" },
+    "snifferInterval": { "index": 8, "kind": "property", "displayName": 
"Sniffer Interval", "group": "advanced", "label": "advanced", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": 60000, "description": "Sniffer interval 
(in millis)" },
+    "certificatePath": { "index": 9, "kind": "property", "displayName": 
"Certificate Path", "group": "security", "label": "security", "required": 
false, "type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "supportFileReference": true, 
"description": "Certificate Path" },
+    "password": { "index": 10, "kind": "property", "displayName": "Password", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "description": "Password" },
+    "user": { "index": 11, "kind": "property", "displayName": "User", "group": 
"security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "description": "Username" }
   },
   "properties": {
     "clusterName": { "index": 0, "kind": "path", "displayName": "Cluster 
Name", "group": "producer", "label": "", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Cluster Name" },
diff --git 
a/components/camel-elasticsearch-rest-client/src/main/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientComponent.java
 
b/components/camel-elasticsearch-rest-client/src/main/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientComponent.java
index 45c71a587df..7e3d7eb8ea1 100644
--- 
a/components/camel-elasticsearch-rest-client/src/main/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientComponent.java
+++ 
b/components/camel-elasticsearch-rest-client/src/main/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientComponent.java
@@ -19,18 +19,162 @@ package 
org.apache.camel.component.elasticsearch.rest.client;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
+import org.elasticsearch.client.RestClient;
 
 @Component("elasticsearch-rest-client")
 public class ElasticsearchRestClientComponent extends DefaultComponent {
 
+    @Metadata(label = "advanced", autowired = true)
+    RestClient restClient;
+    @Metadata
+    String hostAddressesList;
+    @Metadata(defaultValue = "" + 
ElasticSearchRestClientConstant.SOCKET_CONNECTION_TIMEOUT)
+    private int connectionTimeout = 
ElasticSearchRestClientConstant.SOCKET_CONNECTION_TIMEOUT;
+    @Metadata(defaultValue = "" + 
ElasticSearchRestClientConstant.SOCKET_CONNECTION_TIMEOUT)
+    private int socketTimeout = 
ElasticSearchRestClientConstant.SOCKET_CONNECTION_TIMEOUT;
+    @Metadata(label = "security", secret = true)
+    private String user;
+    @Metadata(label = "security", secret = true)
+    private String password;
+    @Metadata(label = "security", supportFileReference = true)
+    private String certificatePath;
+    @Metadata(label = "advanced")
+    private boolean enableSniffer;
+    @Metadata(label = "advanced", defaultValue = "" + 
ElasticSearchRestClientConstant.SNIFFER_INTERVAL_AND_FAILURE_DELAY)
+    private int snifferInterval = 
ElasticSearchRestClientConstant.SNIFFER_INTERVAL_AND_FAILURE_DELAY;
+    @Metadata(label = "advanced", defaultValue = "" + 
ElasticSearchRestClientConstant.SNIFFER_INTERVAL_AND_FAILURE_DELAY)
+    private int sniffAfterFailureDelay = 
ElasticSearchRestClientConstant.SNIFFER_INTERVAL_AND_FAILURE_DELAY;
+
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
         if (remaining == null || remaining.isBlank()) {
             throw new IllegalArgumentException("Cluster Name must be 
specified.");
         }
-        Endpoint endpoint = new ElasticsearchRestClientEndpoint(uri, this);
+
+        ElasticsearchRestClientEndpoint endpoint = new 
ElasticsearchRestClientEndpoint(uri, this);
+        endpoint.setRestClient(restClient);
+        endpoint.setHostAddressesList(hostAddressesList);
+        endpoint.setConnectionTimeout(connectionTimeout);
+        endpoint.setSocketTimeout(socketTimeout);
+        endpoint.setUser(user);
+        endpoint.setPassword(password);
+        endpoint.setCertificatePath(certificatePath);
+        endpoint.setEnableSniffer(enableSniffer);
+        endpoint.setSnifferInterval(snifferInterval);
+        endpoint.setSniffAfterFailureDelay(sniffAfterFailureDelay);
         setProperties(endpoint, parameters);
         return endpoint;
     }
+
+    /**
+     * Rest Client of type org.elasticsearch.client.RestClient. This is only 
for advanced usage
+     */
+    public RestClient getRestClient() {
+        return restClient;
+    }
+
+    public void setRestClient(RestClient restClient) {
+        this.restClient = restClient;
+    }
+
+    /**
+     * List of host Addresses, multiple hosts can be separated by comma.
+     */
+    public String getHostAddressesList() {
+        return hostAddressesList;
+    }
+
+    public void setHostAddressesList(String hostAddressesList) {
+        this.hostAddressesList = hostAddressesList;
+    }
+
+    /**
+     * Connection timeout
+     */
+    public int getConnectionTimeout() {
+        return connectionTimeout;
+    }
+
+    public void setConnectionTimeout(int connectionTimeout) {
+        this.connectionTimeout = connectionTimeout;
+    }
+
+    /**
+     * Socket timeout
+     */
+    public int getSocketTimeout() {
+        return socketTimeout;
+    }
+
+    public void setSocketTimeout(int socketTimeout) {
+        this.socketTimeout = socketTimeout;
+    }
+
+    /**
+     * Username
+     */
+    public String getUser() {
+        return user;
+    }
+
+    public void setUser(String user) {
+        this.user = user;
+    }
+
+    /**
+     * Password
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    /**
+     * Certificate Path
+     */
+    public String getCertificatePath() {
+        return certificatePath;
+    }
+
+    public void setCertificatePath(String certificatePath) {
+        this.certificatePath = certificatePath;
+    }
+
+    /**
+     * Enabling Sniffer
+     */
+    public boolean isEnableSniffer() {
+        return enableSniffer;
+    }
+
+    public void setEnableSniffer(boolean enableSniffer) {
+        this.enableSniffer = enableSniffer;
+    }
+
+    /**
+     * Sniffer interval (in millis)
+     */
+    public int getSnifferInterval() {
+        return snifferInterval;
+    }
+
+    public void setSnifferInterval(int snifferInterval) {
+        this.snifferInterval = snifferInterval;
+    }
+
+    /**
+     * Sniffer after failure delay (in millis)
+     */
+    public int getSniffAfterFailureDelay() {
+        return sniffAfterFailureDelay;
+    }
+
+    public void setSniffAfterFailureDelay(int sniffAfterFailureDelay) {
+        this.sniffAfterFailureDelay = sniffAfterFailureDelay;
+    }
 }
diff --git 
a/components/camel-elasticsearch-rest-client/src/test/java/org/apache/camel/component/elasticsearch/rest/client/ElasticSearchRestClientComponentConfigurationTest.java
 
b/components/camel-elasticsearch-rest-client/src/test/java/org/apache/camel/component/elasticsearch/rest/client/ElasticSearchRestClientComponentConfigurationTest.java
new file mode 100644
index 00000000000..01e1e38a38b
--- /dev/null
+++ 
b/components/camel-elasticsearch-rest-client/src/test/java/org/apache/camel/component/elasticsearch/rest/client/ElasticSearchRestClientComponentConfigurationTest.java
@@ -0,0 +1,66 @@
+/*
+ * 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.elasticsearch.rest.client;
+
+import java.io.IOException;
+
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.http.HttpHost;
+import org.elasticsearch.client.RestClient;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertSame;
+
+public class ElasticSearchRestClientComponentConfigurationTest extends 
CamelTestSupport {
+
+    @Test
+    void componentConfiguration() throws IOException {
+        RestClient client = RestClient.builder(new HttpHost("localhost", 
9200)).build();
+
+        try {
+            ElasticsearchRestClientComponent component = new 
ElasticsearchRestClientComponent();
+            component.setHostAddressesList("localhost:9200");
+            component.setUser("camel");
+            component.setPassword("c4m3l");
+            component.setEnableSniffer(true);
+            component.setConnectionTimeout(100);
+            component.setSocketTimeout(200);
+            component.setSniffAfterFailureDelay(300);
+            component.setSnifferInterval(400);
+            component.setCertificatePath("/foo/bar");
+            component.setRestClient(client);
+
+            context.addComponent("elasticsearch-rest-client", component);
+
+            ElasticsearchRestClientEndpoint endpoint = context.getEndpoint(
+                    "elasticsearch-rest-client:camel?operation=CREATE_INDEX", 
ElasticsearchRestClientEndpoint.class);
+            assertEquals(component.getHostAddressesList(), 
endpoint.getHostAddressesList());
+            assertEquals(component.getUser(), endpoint.getUser());
+            assertEquals(component.getPassword(), endpoint.getPassword());
+            assertEquals(component.isEnableSniffer(), 
endpoint.isEnableSniffer());
+            assertEquals(component.getConnectionTimeout(), 
endpoint.getConnectionTimeout());
+            assertEquals(component.getSocketTimeout(), 
endpoint.getSocketTimeout());
+            assertEquals(component.getSniffAfterFailureDelay(), 
endpoint.getSniffAfterFailureDelay());
+            assertEquals(component.getSnifferInterval(), 
endpoint.getSnifferInterval());
+            assertEquals(component.getCertificatePath(), 
endpoint.getCertificatePath());
+            assertSame(component.getRestClient(), endpoint.getRestClient());
+        } finally {
+            client.close();
+        }
+    }
+}
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ElasticsearchRestClientComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ElasticsearchRestClientComponentBuilderFactory.java
index e8c5ccbef99..89fcef0e377 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ElasticsearchRestClientComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ElasticsearchRestClientComponentBuilderFactory.java
@@ -53,6 +53,38 @@ public interface 
ElasticsearchRestClientComponentBuilderFactory {
     interface ElasticsearchRestClientComponentBuilder extends 
ComponentBuilder<ElasticsearchRestClientComponent> {
     
         
+        /**
+         * Connection timeout.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 30000
+         * Group: producer
+         * 
+         * @param connectionTimeout the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder connectionTimeout(int 
connectionTimeout) {
+            doSetProperty("connectionTimeout", connectionTimeout);
+            return this;
+        }
+    
+        /**
+         * List of host Addresses, multiple hosts can be separated by comma.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: producer
+         * 
+         * @param hostAddressesList the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder 
hostAddressesList(java.lang.String hostAddressesList) {
+            doSetProperty("hostAddressesList", hostAddressesList);
+            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
@@ -78,6 +110,23 @@ public interface 
ElasticsearchRestClientComponentBuilderFactory {
         }
     
         
+        /**
+         * Socket timeout.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 30000
+         * Group: producer
+         * 
+         * @param socketTimeout the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder socketTimeout(int 
socketTimeout) {
+            doSetProperty("socketTimeout", socketTimeout);
+            return this;
+        }
+    
+        
         /**
          * Whether autowiring is enabled. This is used for automatic autowiring
          * options (the option must be marked as autowired) by looking up in 
the
@@ -98,6 +147,122 @@ public interface 
ElasticsearchRestClientComponentBuilderFactory {
             doSetProperty("autowiredEnabled", autowiredEnabled);
             return this;
         }
+    
+        
+        /**
+         * Enabling Sniffer.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: false
+         * Group: advanced
+         * 
+         * @param enableSniffer the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder enableSniffer(boolean 
enableSniffer) {
+            doSetProperty("enableSniffer", enableSniffer);
+            return this;
+        }
+    
+        /**
+         * Rest Client of type org.elasticsearch.client.RestClient. This is 
only
+         * for advanced usage.
+         * 
+         * The option is a:
+         * &lt;code&gt;org.elasticsearch.client.RestClient&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param restClient the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder 
restClient(org.elasticsearch.client.RestClient restClient) {
+            doSetProperty("restClient", restClient);
+            return this;
+        }
+    
+        
+        /**
+         * Sniffer after failure delay (in millis).
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60000
+         * Group: advanced
+         * 
+         * @param sniffAfterFailureDelay the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder 
sniffAfterFailureDelay(int sniffAfterFailureDelay) {
+            doSetProperty("sniffAfterFailureDelay", sniffAfterFailureDelay);
+            return this;
+        }
+    
+        
+        /**
+         * Sniffer interval (in millis).
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Default: 60000
+         * Group: advanced
+         * 
+         * @param snifferInterval the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder snifferInterval(int 
snifferInterval) {
+            doSetProperty("snifferInterval", snifferInterval);
+            return this;
+        }
+    
+        /**
+         * Certificate Path.
+         * 
+         * This option can also be loaded from an existing file, by prefixing
+         * with file: or classpath: followed by the location of the file.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param certificatePath the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder 
certificatePath(java.lang.String certificatePath) {
+            doSetProperty("certificatePath", certificatePath);
+            return this;
+        }
+    
+        /**
+         * Password.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param password the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder 
password(java.lang.String password) {
+            doSetProperty("password", password);
+            return this;
+        }
+    
+        /**
+         * Username.
+         * 
+         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
+         * 
+         * Group: security
+         * 
+         * @param user the value to set
+         * @return the dsl builder
+         */
+        default ElasticsearchRestClientComponentBuilder user(java.lang.String 
user) {
+            doSetProperty("user", user);
+            return this;
+        }
     }
 
     class ElasticsearchRestClientComponentBuilderImpl
@@ -113,8 +278,18 @@ public interface 
ElasticsearchRestClientComponentBuilderFactory {
                 String name,
                 Object value) {
             switch (name) {
+            case "connectionTimeout": ((ElasticsearchRestClientComponent) 
component).setConnectionTimeout((int) value); return true;
+            case "hostAddressesList": ((ElasticsearchRestClientComponent) 
component).setHostAddressesList((java.lang.String) value); return true;
             case "lazyStartProducer": ((ElasticsearchRestClientComponent) 
component).setLazyStartProducer((boolean) value); return true;
+            case "socketTimeout": ((ElasticsearchRestClientComponent) 
component).setSocketTimeout((int) value); return true;
             case "autowiredEnabled": ((ElasticsearchRestClientComponent) 
component).setAutowiredEnabled((boolean) value); return true;
+            case "enableSniffer": ((ElasticsearchRestClientComponent) 
component).setEnableSniffer((boolean) value); return true;
+            case "restClient": ((ElasticsearchRestClientComponent) 
component).setRestClient((org.elasticsearch.client.RestClient) value); return 
true;
+            case "sniffAfterFailureDelay": ((ElasticsearchRestClientComponent) 
component).setSniffAfterFailureDelay((int) value); return true;
+            case "snifferInterval": ((ElasticsearchRestClientComponent) 
component).setSnifferInterval((int) value); return true;
+            case "certificatePath": ((ElasticsearchRestClientComponent) 
component).setCertificatePath((java.lang.String) value); return true;
+            case "password": ((ElasticsearchRestClientComponent) 
component).setPassword((java.lang.String) value); return true;
+            case "user": ((ElasticsearchRestClientComponent) 
component).setUser((java.lang.String) value); return true;
             default: return false;
             }
         }


Reply via email to