This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch CAMEL-21207 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 565ce2954509df75f12e43128a5aa29b2c3f58f3 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Thu Sep 12 15:12:24 2024 +0200 CAMEL-21207 - Camel-Opensearch: Provide a parameter to set HostNameVerifier on client Signed-off-by: Andrea Cosentino <anco...@gmail.com> --- .../camel/catalog/components/opensearch.json | 9 ++++--- .../opensearch/OpensearchEndpointConfigurer.java | 6 +++++ .../opensearch/OpensearchEndpointUriFactory.java | 3 ++- .../camel/component/opensearch/opensearch.json | 9 ++++--- .../opensearch/OpensearchConfiguration.java | 15 +++++++++++ .../component/opensearch/OpensearchProducer.java | 3 +++ .../dsl/OpensearchEndpointBuilderFactory.java | 31 ++++++++++++++++++++++ 7 files changed, 67 insertions(+), 9 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/opensearch.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/opensearch.json index 57dceb58c9f..d629c50f885 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/opensearch.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/opensearch.json @@ -66,9 +66,10 @@ "lazyStartProducer": { "index": 13, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 produ [...] "documentClass": { "index": 14, "kind": "parameter", "displayName": "Document Class", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.Class<java.lang.Object>", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "ObjectNode", "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The class to use when deserializing the docu [...] "enableSniffer": { "index": 15, "kind": "parameter", "displayName": "Enable Sniffer", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "Enable automatically discover nodes from a running OpenSearch cluster. If th [...] - "sniffAfterFailureDelay": { "index": 16, "kind": "parameter", "displayName": "Sniff After Failure Delay", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60000, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The delay of a sniff execution scheduled after a failure (in [...] - "snifferInterval": { "index": 17, "kind": "parameter", "displayName": "Sniffer Interval", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 300000, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The interval between consecutive ordinary sniff executions in milliseconds. [...] - "certificatePath": { "index": 18, "kind": "parameter", "displayName": "Certificate Path", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The certificate that can be used t [...] - "enableSSL": { "index": 19, "kind": "parameter", "displayName": "Enable SSL", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "Enable SSL" } + "hostnameVerifier": { "index": 16, "kind": "parameter", "displayName": "Hostname Verifier", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The class to use as HostnameVerifier. By default there is no HostnameVe [...] + "sniffAfterFailureDelay": { "index": 17, "kind": "parameter", "displayName": "Sniff After Failure Delay", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60000, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The delay of a sniff execution scheduled after a failure (in [...] + "snifferInterval": { "index": 18, "kind": "parameter", "displayName": "Sniffer Interval", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 300000, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The interval between consecutive ordinary sniff executions in milliseconds. [...] + "certificatePath": { "index": 19, "kind": "parameter", "displayName": "Certificate Path", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The certificate that can be used t [...] + "enableSSL": { "index": 20, "kind": "parameter", "displayName": "Enable SSL", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "Enable SSL" } } } diff --git a/components/camel-opensearch/src/generated/java/org/apache/camel/component/opensearch/OpensearchEndpointConfigurer.java b/components/camel-opensearch/src/generated/java/org/apache/camel/component/opensearch/OpensearchEndpointConfigurer.java index 4ac6c3d62b2..c867569c5a7 100644 --- a/components/camel-opensearch/src/generated/java/org/apache/camel/component/opensearch/OpensearchEndpointConfigurer.java +++ b/components/camel-opensearch/src/generated/java/org/apache/camel/component/opensearch/OpensearchEndpointConfigurer.java @@ -37,6 +37,8 @@ public class OpensearchEndpointConfigurer extends PropertyConfigurerSupport impl case "from": target.getConfiguration().setFrom(property(camelContext, java.lang.Integer.class, value)); return true; case "hostaddresses": case "hostAddresses": target.getConfiguration().setHostAddresses(property(camelContext, java.lang.String.class, value)); return true; + case "hostnameverifier": + case "hostnameVerifier": target.getConfiguration().setHostnameVerifier(property(camelContext, javax.net.ssl.HostnameVerifier.class, value)); return true; case "indexname": case "indexName": target.getConfiguration().setIndexName(property(camelContext, java.lang.String.class, value)); return true; case "lazystartproducer": @@ -78,6 +80,8 @@ public class OpensearchEndpointConfigurer extends PropertyConfigurerSupport impl case "from": return java.lang.Integer.class; case "hostaddresses": case "hostAddresses": return java.lang.String.class; + case "hostnameverifier": + case "hostnameVerifier": return javax.net.ssl.HostnameVerifier.class; case "indexname": case "indexName": return java.lang.String.class; case "lazystartproducer": @@ -120,6 +124,8 @@ public class OpensearchEndpointConfigurer extends PropertyConfigurerSupport impl case "from": return target.getConfiguration().getFrom(); case "hostaddresses": case "hostAddresses": return target.getConfiguration().getHostAddresses(); + case "hostnameverifier": + case "hostnameVerifier": return target.getConfiguration().getHostnameVerifier(); case "indexname": case "indexName": return target.getConfiguration().getIndexName(); case "lazystartproducer": diff --git a/components/camel-opensearch/src/generated/java/org/apache/camel/component/opensearch/OpensearchEndpointUriFactory.java b/components/camel-opensearch/src/generated/java/org/apache/camel/component/opensearch/OpensearchEndpointUriFactory.java index 938efe87de6..69bd323361d 100644 --- a/components/camel-opensearch/src/generated/java/org/apache/camel/component/opensearch/OpensearchEndpointUriFactory.java +++ b/components/camel-opensearch/src/generated/java/org/apache/camel/component/opensearch/OpensearchEndpointUriFactory.java @@ -23,7 +23,7 @@ public class OpensearchEndpointUriFactory extends org.apache.camel.support.compo private static final Set<String> SECRET_PROPERTY_NAMES; private static final Set<String> MULTI_VALUE_PREFIXES; static { - Set<String> props = new HashSet<>(20); + Set<String> props = new HashSet<>(21); props.add("certificatePath"); props.add("clusterName"); props.add("connectionTimeout"); @@ -33,6 +33,7 @@ public class OpensearchEndpointUriFactory extends org.apache.camel.support.compo props.add("enableSniffer"); props.add("from"); props.add("hostAddresses"); + props.add("hostnameVerifier"); props.add("indexName"); props.add("lazyStartProducer"); props.add("maxRetryTimeout"); diff --git a/components/camel-opensearch/src/generated/resources/META-INF/org/apache/camel/component/opensearch/opensearch.json b/components/camel-opensearch/src/generated/resources/META-INF/org/apache/camel/component/opensearch/opensearch.json index 57dceb58c9f..d629c50f885 100644 --- a/components/camel-opensearch/src/generated/resources/META-INF/org/apache/camel/component/opensearch/opensearch.json +++ b/components/camel-opensearch/src/generated/resources/META-INF/org/apache/camel/component/opensearch/opensearch.json @@ -66,9 +66,10 @@ "lazyStartProducer": { "index": 13, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 produ [...] "documentClass": { "index": 14, "kind": "parameter", "displayName": "Document Class", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.Class<java.lang.Object>", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "ObjectNode", "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The class to use when deserializing the docu [...] "enableSniffer": { "index": 15, "kind": "parameter", "displayName": "Enable Sniffer", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "Enable automatically discover nodes from a running OpenSearch cluster. If th [...] - "sniffAfterFailureDelay": { "index": 16, "kind": "parameter", "displayName": "Sniff After Failure Delay", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60000, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The delay of a sniff execution scheduled after a failure (in [...] - "snifferInterval": { "index": 17, "kind": "parameter", "displayName": "Sniffer Interval", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 300000, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The interval between consecutive ordinary sniff executions in milliseconds. [...] - "certificatePath": { "index": 18, "kind": "parameter", "displayName": "Certificate Path", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The certificate that can be used t [...] - "enableSSL": { "index": 19, "kind": "parameter", "displayName": "Enable SSL", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "Enable SSL" } + "hostnameVerifier": { "index": 16, "kind": "parameter", "displayName": "Hostname Verifier", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The class to use as HostnameVerifier. By default there is no HostnameVe [...] + "sniffAfterFailureDelay": { "index": 17, "kind": "parameter", "displayName": "Sniff After Failure Delay", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60000, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The delay of a sniff execution scheduled after a failure (in [...] + "snifferInterval": { "index": 18, "kind": "parameter", "displayName": "Sniffer Interval", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 300000, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The interval between consecutive ordinary sniff executions in milliseconds. [...] + "certificatePath": { "index": 19, "kind": "parameter", "displayName": "Certificate Path", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "The certificate that can be used t [...] + "enableSSL": { "index": 20, "kind": "parameter", "displayName": "Enable SSL", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.opensearch.OpensearchConfiguration", "configurationField": "configuration", "description": "Enable SSL" } } } diff --git a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java index c507f7a519b..87dbafc6b7f 100644 --- a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java +++ b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java @@ -18,6 +18,8 @@ package org.apache.camel.component.opensearch; import java.util.List; +import javax.net.ssl.HostnameVerifier; + import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; @@ -72,6 +74,8 @@ public class OpensearchConfiguration { private int sniffAfterFailureDelay = OpensearchConstants.DEFAULT_AFTER_FAILURE_DELAY; @UriParam(label = "advanced", defaultValue = "ObjectNode") private Class<?> documentClass = ObjectNode.class; + @UriParam(label = "advanced") + private HostnameVerifier hostnameVerifier; /** * Starting index of the response. @@ -314,4 +318,15 @@ public class OpensearchConfiguration { public void setDocumentClass(Class<?> documentClass) { this.documentClass = documentClass; } + + public HostnameVerifier getHostnameVerifier() { + return hostnameVerifier; + } + + /** + * The class to use as HostnameVerifier. By default there is no HostnameVerifier. + */ + public void setHostnameVerifier(HostnameVerifier hostnameVerifier) { + this.hostnameVerifier = hostnameVerifier; + } } diff --git a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java index 5ee5ebed4c6..0d95488a833 100644 --- a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java +++ b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java @@ -479,6 +479,9 @@ class OpensearchProducer extends DefaultAsyncProducer { if (configuration.getCertificatePath() != null) { httpClientBuilder.setSSLContext(createSslContextFromCa()); } + if (configuration.getHostnameVerifier() != null) { + httpClientBuilder.setSSLHostnameVerifier(configuration.getHostnameVerifier()); + } return httpClientBuilder; }); } diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpensearchEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpensearchEndpointBuilderFactory.java index 4ab5c15ef01..5ab606a8b10 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpensearchEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OpensearchEndpointBuilderFactory.java @@ -548,6 +548,37 @@ public interface OpensearchEndpointBuilderFactory { doSetProperty("enableSniffer", enableSniffer); return this; } + /** + * The class to use as HostnameVerifier. By default there is no + * HostnameVerifier. + * + * The option is a: <code>javax.net.ssl.HostnameVerifier</code> type. + * + * Group: advanced + * + * @param hostnameVerifier the value to set + * @return the dsl builder + */ + default AdvancedOpensearchEndpointBuilder hostnameVerifier(javax.net.ssl.HostnameVerifier hostnameVerifier) { + doSetProperty("hostnameVerifier", hostnameVerifier); + return this; + } + /** + * The class to use as HostnameVerifier. By default there is no + * HostnameVerifier. + * + * The option will be converted to a + * <code>javax.net.ssl.HostnameVerifier</code> type. + * + * Group: advanced + * + * @param hostnameVerifier the value to set + * @return the dsl builder + */ + default AdvancedOpensearchEndpointBuilder hostnameVerifier(String hostnameVerifier) { + doSetProperty("hostnameVerifier", hostnameVerifier); + return this; + } /** * The delay of a sniff execution scheduled after a failure (in * milliseconds).