You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2020/07/23 06:44:35 UTC

[camel] 04/06: CAMEL-15310 - AWS* - Support for more than 1 client in the registry - Camel-AWS-Kinesis Firehose

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

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

commit 1025a5512d0abd168813b4fb970ed88362ec7d69
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Jul 23 08:42:47 2020 +0200

    CAMEL-15310 - AWS* - Support for more than 1 client in the registry - Camel-AWS-Kinesis Firehose
---
 .../KinesisFirehoseComponentConfigurer.java        |  5 ++++
 .../KinesisFirehoseEndpointConfigurer.java         |  5 ++++
 .../aws/firehose/aws-kinesis-firehose.json         |  2 ++
 .../main/docs/aws-kinesis-firehose-component.adoc  |  6 +++--
 .../aws/firehose/KinesisFirehoseComponent.java     |  4 ++-
 .../aws/firehose/KinesisFirehoseConfiguration.java | 11 ++++++++
 .../KinesisFirehoseComponentConfigurationTest.java | 11 ++++++++
 .../AwsKinesisFirehoseComponentBuilderFactory.java | 16 ++++++++++++
 .../dsl/KinesisFirehoseEndpointBuilderFactory.java | 30 ++++++++++++++++++++++
 9 files changed, 87 insertions(+), 3 deletions(-)

diff --git a/components/camel-aws-kinesis/src/generated/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponentConfigurer.java b/components/camel-aws-kinesis/src/generated/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponentConfigurer.java
index 94bc8f3..50660c2 100644
--- a/components/camel-aws-kinesis/src/generated/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponentConfigurer.java
+++ b/components/camel-aws-kinesis/src/generated/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponentConfigurer.java
@@ -30,6 +30,8 @@ public class KinesisFirehoseComponentConfigurer extends PropertyConfigurerSuppor
         case "accessKey": getOrCreateConfiguration(target).setAccessKey(property(camelContext, java.lang.String.class, value)); return true;
         case "amazonkinesisfirehoseclient":
         case "amazonKinesisFirehoseClient": getOrCreateConfiguration(target).setAmazonKinesisFirehoseClient(property(camelContext, com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehose.class, value)); return true;
+        case "autodiscoverclient":
+        case "autoDiscoverClient": getOrCreateConfiguration(target).setAutoDiscoverClient(property(camelContext, boolean.class, value)); return true;
         case "basicpropertybinding":
         case "basicPropertyBinding": target.setBasicPropertyBinding(property(camelContext, boolean.class, value)); return true;
         case "configuration": target.setConfiguration(property(camelContext, org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration.class, value)); return true;
@@ -53,6 +55,7 @@ public class KinesisFirehoseComponentConfigurer extends PropertyConfigurerSuppor
         Map<String, Object> answer = new CaseInsensitiveMap();
         answer.put("accessKey", java.lang.String.class);
         answer.put("amazonKinesisFirehoseClient", com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehose.class);
+        answer.put("autoDiscoverClient", boolean.class);
         answer.put("basicPropertyBinding", boolean.class);
         answer.put("configuration", org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration.class);
         answer.put("lazyStartProducer", boolean.class);
@@ -72,6 +75,8 @@ public class KinesisFirehoseComponentConfigurer extends PropertyConfigurerSuppor
         case "accessKey": return getOrCreateConfiguration(target).getAccessKey();
         case "amazonkinesisfirehoseclient":
         case "amazonKinesisFirehoseClient": return getOrCreateConfiguration(target).getAmazonKinesisFirehoseClient();
+        case "autodiscoverclient":
+        case "autoDiscoverClient": return getOrCreateConfiguration(target).isAutoDiscoverClient();
         case "basicpropertybinding":
         case "basicPropertyBinding": return target.isBasicPropertyBinding();
         case "configuration": return target.getConfiguration();
diff --git a/components/camel-aws-kinesis/src/generated/java/org/apache/camel/component/aws/firehose/KinesisFirehoseEndpointConfigurer.java b/components/camel-aws-kinesis/src/generated/java/org/apache/camel/component/aws/firehose/KinesisFirehoseEndpointConfigurer.java
index f003384..965b271 100644
--- a/components/camel-aws-kinesis/src/generated/java/org/apache/camel/component/aws/firehose/KinesisFirehoseEndpointConfigurer.java
+++ b/components/camel-aws-kinesis/src/generated/java/org/apache/camel/component/aws/firehose/KinesisFirehoseEndpointConfigurer.java
@@ -23,6 +23,8 @@ public class KinesisFirehoseEndpointConfigurer extends PropertyConfigurerSupport
         case "accessKey": target.getConfiguration().setAccessKey(property(camelContext, java.lang.String.class, value)); return true;
         case "amazonkinesisfirehoseclient":
         case "amazonKinesisFirehoseClient": target.getConfiguration().setAmazonKinesisFirehoseClient(property(camelContext, com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehose.class, value)); return true;
+        case "autodiscoverclient":
+        case "autoDiscoverClient": target.getConfiguration().setAutoDiscoverClient(property(camelContext, boolean.class, value)); return true;
         case "basicpropertybinding":
         case "basicPropertyBinding": target.setBasicPropertyBinding(property(camelContext, boolean.class, value)); return true;
         case "lazystartproducer":
@@ -46,6 +48,7 @@ public class KinesisFirehoseEndpointConfigurer extends PropertyConfigurerSupport
         Map<String, Object> answer = new CaseInsensitiveMap();
         answer.put("accessKey", java.lang.String.class);
         answer.put("amazonKinesisFirehoseClient", com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehose.class);
+        answer.put("autoDiscoverClient", boolean.class);
         answer.put("basicPropertyBinding", boolean.class);
         answer.put("lazyStartProducer", boolean.class);
         answer.put("proxyHost", java.lang.String.class);
@@ -65,6 +68,8 @@ public class KinesisFirehoseEndpointConfigurer extends PropertyConfigurerSupport
         case "accessKey": return target.getConfiguration().getAccessKey();
         case "amazonkinesisfirehoseclient":
         case "amazonKinesisFirehoseClient": return target.getConfiguration().getAmazonKinesisFirehoseClient();
+        case "autodiscoverclient":
+        case "autoDiscoverClient": return target.getConfiguration().isAutoDiscoverClient();
         case "basicpropertybinding":
         case "basicPropertyBinding": return target.isBasicPropertyBinding();
         case "lazystartproducer":
diff --git a/components/camel-aws-kinesis/src/generated/resources/org/apache/camel/component/aws/firehose/aws-kinesis-firehose.json b/components/camel-aws-kinesis/src/generated/resources/org/apache/camel/component/aws/firehose/aws-kinesis-firehose.json
index 69dad8d..ddd45e1 100644
--- a/components/camel-aws-kinesis/src/generated/resources/org/apache/camel/component/aws/firehose/aws-kinesis-firehose.json
+++ b/components/camel-aws-kinesis/src/generated/resources/org/apache/camel/component/aws/firehose/aws-kinesis-firehose.json
@@ -22,6 +22,7 @@
   },
   "componentProperties": {
     "amazonKinesisFirehoseClient": { "kind": "property", "displayName": "Amazon Kinesis Firehose Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehose", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration", "configurationField": "configuration", "description": "Amazon Kinesis Firehose client to use for all reques [...]
+    "autoDiscoverClient": { "kind": "property", "displayName": "Auto Discover Client", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": "true", "configurationClass": "org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration", "configurationField": "configuration", "description": "Setting the autoDiscoverClient mechanism, if true, the component will look for a client instanc [...]
     "configuration": { "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration", "deprecated": false, "secret": false, "description": "The component configuration" },
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": 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 during starting and cause the r [...]
     "proxyHost": { "kind": "property", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Kinesis Firehose client" },
@@ -35,6 +36,7 @@
   "properties": {
     "streamName": { "kind": "path", "displayName": "Stream Name", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "secret": false, "configurationClass": "org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration", "configurationField": "configuration", "description": "Name of the stream" },
     "amazonKinesisFirehoseClient": { "kind": "parameter", "displayName": "Amazon Kinesis Firehose Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehose", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration", "configurationField": "configuration", "description": "Amazon Kinesis Firehose client to use for all reque [...]
+    "autoDiscoverClient": { "kind": "parameter", "displayName": "Auto Discover Client", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": "true", "configurationClass": "org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration", "configurationField": "configuration", "description": "Setting the autoDiscoverClient mechanism, if true, the component will look for a client instan [...]
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": 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 during starting and cause the  [...]
     "proxyHost": { "kind": "parameter", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Kinesis Firehose client" },
     "proxyPort": { "kind": "parameter", "displayName": "Proxy Port", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration", "configurationField": "configuration", "description": "To define a proxy port when instantiating the Kinesis Firehose client" },
diff --git a/components/camel-aws-kinesis/src/main/docs/aws-kinesis-firehose-component.adoc b/components/camel-aws-kinesis/src/main/docs/aws-kinesis-firehose-component.adoc
index 70d2c22..33a6c0d 100644
--- a/components/camel-aws-kinesis/src/main/docs/aws-kinesis-firehose-component.adoc
+++ b/components/camel-aws-kinesis/src/main/docs/aws-kinesis-firehose-component.adoc
@@ -36,7 +36,7 @@ The stream needs to be created prior to it being used. +
 
 
 // component options: START
-The AWS Kinesis Firehose component supports 10 options, which are listed below.
+The AWS Kinesis Firehose component supports 11 options, which are listed below.
 
 
 
@@ -44,6 +44,7 @@ The AWS Kinesis Firehose component supports 10 options, which are listed below.
 |===
 | Name | Description | Default | Type
 | *amazonKinesisFirehoseClient* (producer) | Amazon Kinesis Firehose client to use for all requests for this endpoint |  | AmazonKinesisFirehose
+| *autoDiscoverClient* (common) | Setting the autoDiscoverClient mechanism, if true, the component will look for a client instance in the registry automatically otherwise it will skip that checking | true | boolean
 | *configuration* (producer) | The component configuration |  | KinesisFirehoseConfiguration
 | *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 [...]
 | *proxyHost* (producer) | To define a proxy host when instantiating the Kinesis Firehose client |  | String
@@ -81,13 +82,14 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (10 parameters):
+=== Query Parameters (11 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *amazonKinesisFirehoseClient* (producer) | Amazon Kinesis Firehose client to use for all requests for this endpoint |  | AmazonKinesisFirehose
+| *autoDiscoverClient* (common) | Setting the autoDiscoverClient mechanism, if true, the component will look for a client instance in the registry automatically otherwise it will skip that checking | true | boolean
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
 | *proxyHost* (producer) | To define a proxy host when instantiating the Kinesis Firehose client |  | String
 | *proxyPort* (producer) | To define a proxy port when instantiating the Kinesis Firehose client |  | Integer
diff --git a/components/camel-aws-kinesis/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponent.java b/components/camel-aws-kinesis/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponent.java
index e19a253..19bfe43 100644
--- a/components/camel-aws-kinesis/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponent.java
+++ b/components/camel-aws-kinesis/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponent.java
@@ -48,7 +48,9 @@ public class KinesisFirehoseComponent extends DefaultComponent {
         configuration.setStreamName(remaining);
         KinesisFirehoseEndpoint endpoint = new KinesisFirehoseEndpoint(uri, configuration, this);
         setProperties(endpoint, parameters);
-        checkAndSetRegistryClient(configuration);
+        if (endpoint.getConfiguration().isAutoDiscoverClient()) {
+            checkAndSetRegistryClient(configuration);
+        }
         if (configuration.getAmazonKinesisFirehoseClient() == null && (configuration.getAccessKey() == null || configuration.getSecretKey() == null)) {
             throw new IllegalArgumentException("AmazonKinesisFirehoseClient or accessKey and secretKey must be specified");
         }
diff --git a/components/camel-aws-kinesis/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseConfiguration.java b/components/camel-aws-kinesis/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseConfiguration.java
index 397a0ae..fe6dda5 100644
--- a/components/camel-aws-kinesis/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseConfiguration.java
+++ b/components/camel-aws-kinesis/src/main/java/org/apache/camel/component/aws/firehose/KinesisFirehoseConfiguration.java
@@ -45,6 +45,9 @@ public class KinesisFirehoseConfiguration implements Cloneable {
     private String proxyHost;
     @UriParam(description = "To define a proxy port when instantiating the Kinesis Firehose client")
     private Integer proxyPort;
+    @UriParam(label = "common", defaultValue = "true", description = "Setting the autoDiscoverClient mechanism, if true, the component will "  
+            + " look for a client instance in the registry automatically otherwise it will skip that checking")
+    private boolean autoDiscoverClient = true;
     
     public void setAmazonKinesisFirehoseClient(AmazonKinesisFirehose client) {
         this.amazonKinesisFirehoseClient = client;
@@ -110,6 +113,14 @@ public class KinesisFirehoseConfiguration implements Cloneable {
         this.proxyPort = proxyPort;
     }
     
+    public boolean isAutoDiscoverClient() {
+        return autoDiscoverClient;
+    }
+
+    public void setAutoDiscoverClient(boolean autoDiscoverClient) {
+        this.autoDiscoverClient = autoDiscoverClient;
+    }
+    
     // *************************************************
     //
     // *************************************************
diff --git a/components/camel-aws-kinesis/src/test/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponentConfigurationTest.java b/components/camel-aws-kinesis/src/test/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponentConfigurationTest.java
index d4b4622..ec84240 100644
--- a/components/camel-aws-kinesis/src/test/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponentConfigurationTest.java
+++ b/components/camel-aws-kinesis/src/test/java/org/apache/camel/component/aws/firehose/KinesisFirehoseComponentConfigurationTest.java
@@ -76,4 +76,15 @@ public class KinesisFirehoseComponentConfigurationTest extends CamelTestSupport
         assertEquals("localhost", endpoint.getConfiguration().getProxyHost());
         assertEquals(Integer.valueOf(9000), endpoint.getConfiguration().getProxyPort());
     }
+    
+    @Test
+    public void createEndpointWithAutoDiscoverClientFalse() throws Exception {
+        KinesisFirehoseComponent component = context.getComponent("aws-kinesis-firehose", KinesisFirehoseComponent.class);
+        KinesisFirehoseEndpoint endpoint = (KinesisFirehoseEndpoint)component.createEndpoint("aws-kinesis-firehose://some_stream_name?accessKey=xxxxx&secretKey=yyyyy&autoDiscoverClient=false");
+        
+        assertEquals("some_stream_name", endpoint.getConfiguration().getStreamName());
+        assertEquals("xxxxx", endpoint.getConfiguration().getAccessKey());
+        assertEquals("yyyyy", endpoint.getConfiguration().getSecretKey());
+        assertEquals(false, endpoint.getConfiguration().isAutoDiscoverClient());
+    }
 }
diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsKinesisFirehoseComponentBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsKinesisFirehoseComponentBuilderFactory.java
index dce1bfa..f47495d 100644
--- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsKinesisFirehoseComponentBuilderFactory.java
+++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsKinesisFirehoseComponentBuilderFactory.java
@@ -63,6 +63,21 @@ public interface AwsKinesisFirehoseComponentBuilderFactory {
             return this;
         }
         /**
+         * Setting the autoDiscoverClient mechanism, if true, the component will
+         * look for a client instance in the registry automatically otherwise it
+         * will skip that checking.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: common
+         */
+        default AwsKinesisFirehoseComponentBuilder autoDiscoverClient(
+                boolean autoDiscoverClient) {
+            doSetProperty("autoDiscoverClient", autoDiscoverClient);
+            return this;
+        }
+        /**
          * The component configuration.
          * 
          * The option is a:
@@ -214,6 +229,7 @@ public interface AwsKinesisFirehoseComponentBuilderFactory {
                 Object value) {
             switch (name) {
             case "amazonKinesisFirehoseClient": getOrCreateConfiguration((KinesisFirehoseComponent) component).setAmazonKinesisFirehoseClient((com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehose) value); return true;
+            case "autoDiscoverClient": getOrCreateConfiguration((KinesisFirehoseComponent) component).setAutoDiscoverClient((boolean) value); return true;
             case "configuration": ((KinesisFirehoseComponent) component).setConfiguration((org.apache.camel.component.aws.firehose.KinesisFirehoseConfiguration) value); return true;
             case "lazyStartProducer": ((KinesisFirehoseComponent) component).setLazyStartProducer((boolean) value); return true;
             case "proxyHost": getOrCreateConfiguration((KinesisFirehoseComponent) component).setProxyHost((java.lang.String) value); return true;
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/KinesisFirehoseEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/KinesisFirehoseEndpointBuilderFactory.java
index 4a8befa..f1fc715 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/KinesisFirehoseEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/KinesisFirehoseEndpointBuilderFactory.java
@@ -68,6 +68,36 @@ public interface KinesisFirehoseEndpointBuilderFactory {
             return this;
         }
         /**
+         * Setting the autoDiscoverClient mechanism, if true, the component will
+         * look for a client instance in the registry automatically otherwise it
+         * will skip that checking.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: common
+         */
+        default KinesisFirehoseEndpointBuilder autoDiscoverClient(
+                boolean autoDiscoverClient) {
+            doSetProperty("autoDiscoverClient", autoDiscoverClient);
+            return this;
+        }
+        /**
+         * Setting the autoDiscoverClient mechanism, if true, the component will
+         * look for a client instance in the registry automatically otherwise it
+         * will skip that checking.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: common
+         */
+        default KinesisFirehoseEndpointBuilder autoDiscoverClient(
+                String autoDiscoverClient) {
+            doSetProperty("autoDiscoverClient", autoDiscoverClient);
+            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