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 <[email protected]>
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");
+            }
+        };
+    }
+}

Reply via email to