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 2022/07/22 10:24:32 UTC

[camel] branch main updated (1d5058b0319 -> 7fb98e9b190)

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

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


    from 1d5058b0319 Added Hashicorp Vault instructions in security section
     new 0e42ce4447b CAMEL-18287 - Camel-AWS Eventbridge: Support operation putEvents to send custom event to Eventbridge
     new 3789264b0fb CAMEL-18287 - Camel-AWS Eventbridge: Support operation putEvents to send custom event to Eventbridge
     new 853d3e9af1e Upgrade AWS SDK v2 to version 2.17.237
     new eb8d7b3b808 Sync deps and regen
     new 7fb98e9b190 CAMEL-18287 - Camel-AWS Eventbridge: Support operation putEvents to send custom event to Eventbridge

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 camel-dependencies/pom.xml                         |  2 +-
 .../camel/catalog/components/aws2-eventbridge.json |  9 ++-
 .../aws2/eventbridge/aws2-eventbridge.json         |  9 ++-
 .../aws2/eventbridge/EventbridgeConstants.java     |  6 ++
 .../aws2/eventbridge/EventbridgeOperations.java    |  3 +-
 .../aws2/eventbridge/EventbridgeProducer.java      | 79 ++++++++++++++++------
 ...ePutRuleIT.java => EventbridgePutEventsIT.java} | 44 +++++-------
 .../dsl/EventbridgeEndpointBuilderFactory.java     | 40 +++++++++++
 parent/pom.xml                                     |  2 +-
 9 files changed, 136 insertions(+), 58 deletions(-)
 copy components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/{EventbridgePutRuleIT.java => EventbridgePutEventsIT.java} (64%)


[camel] 02/05: CAMEL-18287 - Camel-AWS Eventbridge: Support operation putEvents to send custom event to Eventbridge

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 3789264b0fb343ea1a6c6c6f8ea1388b9f01d1ea
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Jul 22 11:14:12 2022 +0200

    CAMEL-18287 - Camel-AWS Eventbridge: Support operation putEvents to send custom event to Eventbridge
---
 .../aws2/eventbridge/aws2-eventbridge.json         |  9 ++-
 .../localstack/EventbridgePutEventsIT.java         | 73 ++++++++++++++++++++++
 2 files changed, 79 insertions(+), 3 deletions(-)

diff --git a/components/camel-aws/camel-aws2-eventbridge/src/generated/resources/org/apache/camel/component/aws2/eventbridge/aws2-eventbridge.json b/components/camel-aws/camel-aws2-eventbridge/src/generated/resources/org/apache/camel/component/aws2/eventbridge/aws2-eventbridge.json
index 1dd43918151..f3e4b45100e 100644
--- a/components/camel-aws/camel-aws2-eventbridge/src/generated/resources/org/apache/camel/component/aws2/eventbridge/aws2-eventbridge.json
+++ b/components/camel-aws/camel-aws2-eventbridge/src/generated/resources/org/apache/camel/component/aws2/eventbridge/aws2-eventbridge.json
@@ -26,7 +26,7 @@
     "eventbridgeClient": { "kind": "property", "displayName": "Eventbridge Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.eventbridge.EventBridgeClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "To use a existing configured AW [...]
     "eventPatternFile": { "kind": "property", "displayName": "Event Pattern File", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "EventPattern File" },
     "lazyStartProducer": { "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 during star [...]
-    "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.eventbridge.EventbridgeOperations", "enum": [ "putRule", "putTargets", "removeTargets", "deleteRule", "enableRule", "disableRule", "describeRule", "listRules", "listTargetsByRule", "listRuleNamesByTarget" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "putR [...]
+    "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.eventbridge.EventbridgeOperations", "enum": [ "putRule", "putTargets", "removeTargets", "deleteRule", "enableRule", "disableRule", "describeRule", "listRules", "listTargetsByRule", "listRuleNamesByTarget", "putEvent" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultV [...]
     "overrideEndpoint": { "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "Set the need for overidding the endpoint. This option needs to be used in combination [...]
     "pojoRequest": { "kind": "property", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" },
     "proxyHost": { "kind": "property", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Eventbridge client" },
@@ -47,13 +47,16 @@
     "CamelAwsEventbridgeEventPattern": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The event pattern.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#EVENT_PATTERN" },
     "CamelAwsEventbridgeTargets": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Collection<Target>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The targets to update or add to the rule.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#TARGETS" },
     "CamelAwsEventbridgeTargetsIds": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Collection<String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The IDs of the targets to remove from the rule.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#TARGETS_IDS" },
-    "CamelAwsEventbridgeTargetArn": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Amazon Resource Name (ARN) of the target resource.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#TARGET_ARN" }
+    "CamelAwsEventbridgeTargetArn": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Amazon Resource Name (ARN) of the target resource.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#TARGET_ARN" },
+    "CamelAwsEventbridgeResourcesArn": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Comma separated list of Amazon Resource Names (ARN) of the resources related to Event", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#EVENT_RESOURCES_ARN" },
+    "CamelAwsEventbridgeSource": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The source related to Event", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#EVENT_SOURCE" },
+    "CamelAwsEventbridgeDetailType": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The detail type related to Event", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#EVENT_DETAIL_TYPE" }
   },
   "properties": {
     "eventbusNameOrArn": { "kind": "path", "displayName": "Eventbus Name Or Arn", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Event bus name or ARN" },
     "eventbridgeClient": { "kind": "parameter", "displayName": "Eventbridge Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.eventbridge.EventBridgeClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "To use a existing configured A [...]
     "eventPatternFile": { "kind": "parameter", "displayName": "Event Pattern File", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "EventPattern File" },
-    "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.eventbridge.EventbridgeOperations", "enum": [ "putRule", "putTargets", "removeTargets", "deleteRule", "enableRule", "disableRule", "describeRule", "listRules", "listTargetsByRule", "listRuleNamesByTarget" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "put [...]
+    "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.eventbridge.EventbridgeOperations", "enum": [ "putRule", "putTargets", "removeTargets", "deleteRule", "enableRule", "disableRule", "describeRule", "listRules", "listTargetsByRule", "listRuleNamesByTarget", "putEvent" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "default [...]
     "overrideEndpoint": { "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "Set the need for overidding the endpoint. This option needs to be used in combinatio [...]
     "pojoRequest": { "kind": "parameter", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" },
     "proxyHost": { "kind": "parameter", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Eventbridge client" },
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgePutEventsIT.java b/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgePutEventsIT.java
new file mode 100644
index 00000000000..681557e9482
--- /dev/null
+++ b/components/camel-aws/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/localstack/EventbridgePutEventsIT.java
@@ -0,0 +1,73 @@
+/*
+ * 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.aws2.eventbridge.localstack;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.aws2.eventbridge.EventbridgeConstants;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.Assert;
+import org.junit.jupiter.api.Test;
+import software.amazon.awssdk.services.eventbridge.model.PutEventsResponse;
+import software.amazon.awssdk.services.eventbridge.model.Target;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class EventbridgePutEventsIT extends Aws2EventbridgeBase {
+
+    @EndpointInject
+    private ProducerTemplate template;
+
+    @EndpointInject("mock:result")
+    private MockEndpoint result;
+
+    @Test
+    public void sendIn() throws Exception {
+        result.expectedMessageCount(1);
+
+        template.send("direct:evs-events", new Processor() {
+
+            @Override
+            public void process(Exchange exchange) {
+                exchange.getIn().setHeader(EventbridgeConstants.EVENT_RESOURCES_ARN, "arn:aws:sqs:eu-west-1:780410022472:camel-connector-test");
+                exchange.getIn().setHeader(EventbridgeConstants.EVENT_SOURCE, "com.pippo");
+                exchange.getIn().setHeader(EventbridgeConstants.EVENT_DETAIL_TYPE, "peppe");
+                exchange.getIn().setBody("Test Event");
+            }
+        });
+        assertMockEndpointsSatisfied();
+        Assert.assertTrue(result.getExchanges().get(0).getMessage().getBody(PutEventsResponse.class).hasEntries());
+        Assert.assertEquals(1, result.getExchanges().get(0).getMessage().getBody(PutEventsResponse.class).entries().size());
+        Assert.assertNotNull(result.getExchanges().get(0).getMessage().getBody(PutEventsResponse.class).entries().get(0).eventId());
+
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                String event = "aws2-eventbridge://default?operation=putEvent";
+                from("direct:evs-events").to(event).log("${body}").to("mock:result");
+            }
+        };
+    }
+}


[camel] 05/05: CAMEL-18287 - Camel-AWS Eventbridge: Support operation putEvents to send custom event to Eventbridge

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7fb98e9b1900c478f7ca97b26b18a5f02f4cabe6
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Jul 22 12:24:20 2022 +0200

    CAMEL-18287 - Camel-AWS Eventbridge: Support operation putEvents to send custom event to Eventbridge
---
 .../dsl/EventbridgeEndpointBuilderFactory.java     | 40 ++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/EventbridgeEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/EventbridgeEndpointBuilderFactory.java
index 7bd08de39ad..0d5d110ae54 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/EventbridgeEndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/EventbridgeEndpointBuilderFactory.java
@@ -620,6 +620,46 @@ public interface EventbridgeEndpointBuilderFactory {
         public String awsEventbridgeTargetArn() {
             return "AwsEventbridgeTargetArn";
         }
+
+        /**
+         * Comma separated list of Amazon Resource Names (ARN) of the resources
+         * related to Event.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsEventbridgeResourcesArn}.
+         */
+        public String awsEventbridgeResourcesArn() {
+            return "AwsEventbridgeResourcesArn";
+        }
+
+        /**
+         * The source related to Event.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsEventbridgeSource}.
+         */
+        public String awsEventbridgeSource() {
+            return "AwsEventbridgeSource";
+        }
+
+        /**
+         * The detail type related to Event.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code AwsEventbridgeDetailType}.
+         */
+        public String awsEventbridgeDetailType() {
+            return "AwsEventbridgeDetailType";
+        }
     }
     static EventbridgeEndpointBuilder endpointBuilder(
             String componentName,


[camel] 03/05: Upgrade AWS SDK v2 to version 2.17.237

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 853d3e9af1e506c8d6a83754c684af68ae7f5f2e
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Jul 22 11:18:59 2022 +0200

    Upgrade AWS SDK v2 to version 2.17.237
---
 parent/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/parent/pom.xml b/parent/pom.xml
index 2ff834b779b..2ed8ad12dc8 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -80,7 +80,7 @@
         <avro-ipc-jetty-version>1.11.0</avro-ipc-jetty-version>
         <avro-ipc-netty-version>1.11.0</avro-ipc-netty-version>
         <awaitility-version>4.2.0</awaitility-version>
-        <aws-java-sdk2-version>2.17.236</aws-java-sdk2-version>
+        <aws-java-sdk2-version>2.17.237</aws-java-sdk2-version>
         <aws-xray-version>2.6.1</aws-xray-version>
         <axiom-version>1.2.14</axiom-version>
         <azure-jackson2-version>2.13.3</azure-jackson2-version>


[camel] 04/05: Sync deps and regen

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit eb8d7b3b808f3f67908b956bafd177cdb25cb073
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Jul 22 11:24:16 2022 +0200

    Sync deps and regen
---
 camel-dependencies/pom.xml                                       | 2 +-
 .../org/apache/camel/catalog/components/aws2-eventbridge.json    | 9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index bb1bc3a8c5b..f33daf55d18 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -63,7 +63,7 @@
     <avro-ipc-netty-version>1.11.0</avro-ipc-netty-version>
     <avro-version>1.11.0</avro-version>
     <awaitility-version>4.2.0</awaitility-version>
-    <aws-java-sdk2-version>2.17.236</aws-java-sdk2-version>
+    <aws-java-sdk2-version>2.17.237</aws-java-sdk2-version>
     <aws-xray-version>2.6.1</aws-xray-version>
     <axiom-version>1.2.14</axiom-version>
     <azure-cosmos-version>4.29.1</azure-cosmos-version>
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-eventbridge.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-eventbridge.json
index 1dd43918151..f3e4b45100e 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-eventbridge.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-eventbridge.json
@@ -26,7 +26,7 @@
     "eventbridgeClient": { "kind": "property", "displayName": "Eventbridge Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.eventbridge.EventBridgeClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "To use a existing configured AW [...]
     "eventPatternFile": { "kind": "property", "displayName": "Event Pattern File", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "EventPattern File" },
     "lazyStartProducer": { "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 during star [...]
-    "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.eventbridge.EventbridgeOperations", "enum": [ "putRule", "putTargets", "removeTargets", "deleteRule", "enableRule", "disableRule", "describeRule", "listRules", "listTargetsByRule", "listRuleNamesByTarget" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "putR [...]
+    "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.eventbridge.EventbridgeOperations", "enum": [ "putRule", "putTargets", "removeTargets", "deleteRule", "enableRule", "disableRule", "describeRule", "listRules", "listTargetsByRule", "listRuleNamesByTarget", "putEvent" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultV [...]
     "overrideEndpoint": { "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "Set the need for overidding the endpoint. This option needs to be used in combination [...]
     "pojoRequest": { "kind": "property", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" },
     "proxyHost": { "kind": "property", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Eventbridge client" },
@@ -47,13 +47,16 @@
     "CamelAwsEventbridgeEventPattern": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The event pattern.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#EVENT_PATTERN" },
     "CamelAwsEventbridgeTargets": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Collection<Target>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The targets to update or add to the rule.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#TARGETS" },
     "CamelAwsEventbridgeTargetsIds": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Collection<String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The IDs of the targets to remove from the rule.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#TARGETS_IDS" },
-    "CamelAwsEventbridgeTargetArn": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Amazon Resource Name (ARN) of the target resource.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#TARGET_ARN" }
+    "CamelAwsEventbridgeTargetArn": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Amazon Resource Name (ARN) of the target resource.", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#TARGET_ARN" },
+    "CamelAwsEventbridgeResourcesArn": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Comma separated list of Amazon Resource Names (ARN) of the resources related to Event", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#EVENT_RESOURCES_ARN" },
+    "CamelAwsEventbridgeSource": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The source related to Event", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#EVENT_SOURCE" },
+    "CamelAwsEventbridgeDetailType": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The detail type related to Event", "constantName": "org.apache.camel.component.aws2.eventbridge.EventbridgeConstants#EVENT_DETAIL_TYPE" }
   },
   "properties": {
     "eventbusNameOrArn": { "kind": "path", "displayName": "Eventbus Name Or Arn", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Event bus name or ARN" },
     "eventbridgeClient": { "kind": "parameter", "displayName": "Eventbridge Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "software.amazon.awssdk.services.eventbridge.EventBridgeClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "To use a existing configured A [...]
     "eventPatternFile": { "kind": "parameter", "displayName": "Event Pattern File", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "EventPattern File" },
-    "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.eventbridge.EventbridgeOperations", "enum": [ "putRule", "putTargets", "removeTargets", "deleteRule", "enableRule", "disableRule", "describeRule", "listRules", "listTargetsByRule", "listRuleNamesByTarget" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "put [...]
+    "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.eventbridge.EventbridgeOperations", "enum": [ "putRule", "putTargets", "removeTargets", "deleteRule", "enableRule", "disableRule", "describeRule", "listRules", "listTargetsByRule", "listRuleNamesByTarget", "putEvent" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "default [...]
     "overrideEndpoint": { "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "Set the need for overidding the endpoint. This option needs to be used in combinatio [...]
     "pojoRequest": { "kind": "parameter", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" },
     "proxyHost": { "kind": "parameter", "displayName": "Proxy Host", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.eventbridge.EventbridgeConfiguration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the Eventbridge client" },


[camel] 01/05: CAMEL-18287 - Camel-AWS Eventbridge: Support operation putEvents to send custom event to Eventbridge

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0e42ce4447baed541698f5754fb5459749eee6cc
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Jul 22 10:53:19 2022 +0200

    CAMEL-18287 - Camel-AWS Eventbridge: Support operation putEvents to send custom event to Eventbridge
---
 .../aws2/eventbridge/EventbridgeConstants.java     |  6 ++
 .../aws2/eventbridge/EventbridgeOperations.java    |  3 +-
 .../aws2/eventbridge/EventbridgeProducer.java      | 79 ++++++++++++++++------
 3 files changed, 66 insertions(+), 22 deletions(-)

diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConstants.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConstants.java
index 028dca7a858..f7db6911567 100644
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConstants.java
+++ b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConstants.java
@@ -36,4 +36,10 @@ public interface EventbridgeConstants {
     String TARGETS_IDS = "CamelAwsEventbridgeTargetsIds";
     @Metadata(description = "The Amazon Resource Name (ARN) of the target resource.", javaType = "String")
     String TARGET_ARN = "CamelAwsEventbridgeTargetArn";
+    @Metadata(description = "Comma separated list of Amazon Resource Names (ARN) of the resources related to Event", javaType = "String")
+    String EVENT_RESOURCES_ARN = "CamelAwsEventbridgeResourcesArn";
+    @Metadata(description = "The source related to Event", javaType = "String")
+    String EVENT_SOURCE = "CamelAwsEventbridgeSource";
+    @Metadata(description = "The detail type related to Event", javaType = "String")
+    String EVENT_DETAIL_TYPE = "CamelAwsEventbridgeDetailType";
 }
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeOperations.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeOperations.java
index 0b42b9f1de6..87a76ff862d 100644
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeOperations.java
+++ b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeOperations.java
@@ -27,5 +27,6 @@ public enum EventbridgeOperations {
     describeRule,
     listRules,
     listTargetsByRule,
-    listRuleNamesByTarget
+    listRuleNamesByTarget,
+    putEvent
 }
diff --git a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeProducer.java b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeProducer.java
index cd71ae4b529..7e7c67da1be 100644
--- a/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeProducer.java
+++ b/components/camel-aws/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeProducer.java
@@ -20,6 +20,9 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.Charset;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
@@ -34,27 +37,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import software.amazon.awssdk.awscore.exception.AwsServiceException;
 import software.amazon.awssdk.services.eventbridge.EventBridgeClient;
-import software.amazon.awssdk.services.eventbridge.model.DeleteRuleRequest;
-import software.amazon.awssdk.services.eventbridge.model.DeleteRuleResponse;
-import software.amazon.awssdk.services.eventbridge.model.DescribeRuleRequest;
-import software.amazon.awssdk.services.eventbridge.model.DescribeRuleResponse;
-import software.amazon.awssdk.services.eventbridge.model.DisableRuleRequest;
-import software.amazon.awssdk.services.eventbridge.model.DisableRuleResponse;
-import software.amazon.awssdk.services.eventbridge.model.EnableRuleRequest;
-import software.amazon.awssdk.services.eventbridge.model.EnableRuleResponse;
-import software.amazon.awssdk.services.eventbridge.model.ListRuleNamesByTargetRequest;
-import software.amazon.awssdk.services.eventbridge.model.ListRuleNamesByTargetResponse;
-import software.amazon.awssdk.services.eventbridge.model.ListRulesRequest;
-import software.amazon.awssdk.services.eventbridge.model.ListRulesResponse;
-import software.amazon.awssdk.services.eventbridge.model.ListTargetsByRuleRequest;
-import software.amazon.awssdk.services.eventbridge.model.ListTargetsByRuleResponse;
-import software.amazon.awssdk.services.eventbridge.model.PutRuleRequest;
-import software.amazon.awssdk.services.eventbridge.model.PutRuleResponse;
-import software.amazon.awssdk.services.eventbridge.model.PutTargetsRequest;
-import software.amazon.awssdk.services.eventbridge.model.PutTargetsResponse;
-import software.amazon.awssdk.services.eventbridge.model.RemoveTargetsRequest;
-import software.amazon.awssdk.services.eventbridge.model.RemoveTargetsResponse;
-import software.amazon.awssdk.services.eventbridge.model.Target;
+import software.amazon.awssdk.services.eventbridge.model.*;
 
 /**
  * A Producer which sends messages to the Amazon Eventbridge Service SDK v2
@@ -103,6 +86,9 @@ public class EventbridgeProducer extends DefaultProducer {
             case listRuleNamesByTarget:
                 listRuleNamesByTarget(getEndpoint().getEventbridgeClient(), exchange);
                 break;
+            case putEvent:
+                putEvent(getEndpoint().getEventbridgeClient(), exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -482,6 +468,57 @@ public class EventbridgeProducer extends DefaultProducer {
         }
     }
 
+    private void putEvent(EventBridgeClient eventbridgeClient, Exchange exchange) throws InvalidPayloadException, IOException {
+        if (getConfiguration().isPojoRequest()) {
+            Object payload = exchange.getIn().getMandatoryBody();
+            if (payload instanceof PutEventsRequest) {
+                PutEventsResponse result;
+                try {
+                    result = eventbridgeClient.putEvents((PutEventsRequest) payload);
+                } catch (AwsServiceException ase) {
+                    LOG.trace("PutEvents command returned the error code {}", ase.awsErrorDetails().errorCode());
+                    throw ase;
+                }
+                Message message = getMessageForResponse(exchange);
+                message.setBody(result);
+            }
+        } else {
+            PutEventsRequest.Builder builder = PutEventsRequest.builder();
+            PutEventsRequestEntry.Builder entryBuilder = PutEventsRequestEntry.builder();
+            if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EventbridgeConstants.EVENT_RESOURCES_ARN))) {
+                String resourcesArn = exchange.getIn().getHeader(EventbridgeConstants.EVENT_RESOURCES_ARN, String.class);
+                entryBuilder.resources(Stream.of(resourcesArn.split(",")).collect(Collectors.toList()));
+            } else {
+                throw new IllegalArgumentException("At least one resource ARN must be specified");
+            }
+            if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EventbridgeConstants.EVENT_DETAIL_TYPE))) {
+                String detailType = exchange.getIn().getHeader(EventbridgeConstants.EVENT_DETAIL_TYPE, String.class);
+                entryBuilder.detailType(detailType);
+            } else {
+                throw new IllegalArgumentException("Detail Type must be specified");
+            }
+            if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EventbridgeConstants.EVENT_SOURCE))) {
+                String source = exchange.getIn().getHeader(EventbridgeConstants.EVENT_SOURCE, String.class);
+                entryBuilder.source(source);
+            } else {
+                throw new IllegalArgumentException("Source must be specified");
+            }
+            entryBuilder.eventBusName(getConfiguration().getEventbusName());
+            entryBuilder.detail(exchange.getMessage().getMandatoryBody(String.class));
+
+            builder.entries(entryBuilder.build());
+            PutEventsResponse result;
+            try {
+                result = eventbridgeClient.putEvents(builder.build());
+            } catch (AwsServiceException ase) {
+                LOG.trace("Put Events command returned the error code {}", ase.awsErrorDetails().errorCode());
+                throw ase;
+            }
+            Message message = getMessageForResponse(exchange);
+            message.setBody(result);
+        }
+    }
+
     @Override
     public EventbridgeEndpoint getEndpoint() {
         return (EventbridgeEndpoint) super.getEndpoint();