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/09/21 16:30:40 UTC
[camel] 07/10: CAMEL-15375 - Camel-AWS2-Eventbridge: WIP
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 41d759f6e6994493a7490431686d1037c6b340af
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Mon Sep 21 16:38:30 2020 +0200
CAMEL-15375 - Camel-AWS2-Eventbridge: WIP
---
.../aws2/eventbridge/EvenbridgeOperations.java | 2 +-
.../aws2/eventbridge/EventbridgeConstants.java | 1 +
.../aws2/eventbridge/EventbridgeProducer.java | 79 ++++++++++++----------
.../EventbridgePutRuleIntegrationTest.java | 26 ++++++-
4 files changed, 69 insertions(+), 39 deletions(-)
diff --git a/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EvenbridgeOperations.java b/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EvenbridgeOperations.java
index 9bef090..44f810f 100644
--- a/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EvenbridgeOperations.java
+++ b/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EvenbridgeOperations.java
@@ -19,5 +19,5 @@ package org.apache.camel.component.aws2.eventbridge;
public enum EvenbridgeOperations {
putRule,
- putTarget
+ putTargets
}
diff --git a/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConstants.java b/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConstants.java
index eecf9ca..e7acf29 100644
--- a/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConstants.java
+++ b/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeConstants.java
@@ -23,4 +23,5 @@ public interface EventbridgeConstants {
String OPERATION = "CamelAwsEventbridgeOperation";
String RULE_NAME = "CamelAwsEventbridgeRuleName";
String EVENT_PATTERN = "CamelAwsEventbridgeEventPattern";
+ String TARGETS = "CamelAwsEventbridgeTargets";
}
diff --git a/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeProducer.java b/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeProducer.java
index efb947c..e4e4d05f 100644
--- a/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeProducer.java
+++ b/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeProducer.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.aws2.eventbridge;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
+import java.util.Collection;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
@@ -35,6 +36,9 @@ import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.services.eventbridge.EventBridgeClient;
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.Target;
/**
* A Producer which sends messages to the Amazon Eventbridge Service SDK v2 <a href="http://aws.amazon.com/sts/">AWS
@@ -56,6 +60,9 @@ public class EventbridgeProducer extends DefaultProducer {
case putRule:
putRule(getEndpoint().getEventbridgeClient(), exchange);
break;
+ case putTargets:
+ putTargets(getEndpoint().getEventbridgeClient(), exchange);
+ break;
default:
throw new IllegalArgumentException("Unsupported operation");
}
@@ -122,41 +129,43 @@ public class EventbridgeProducer extends DefaultProducer {
}
}
- // private void putTarget(EventBridgeClient eventbridgeClient, Exchange exchange) throws InvalidPayloadException {
- // if (getConfiguration().isPojoRequest()) {
- // Object payload = exchange.getIn().getMandatoryBody();
- // if (payload instanceof PutTargetsRequest) {
- // PutTargetsResponse result;
- // try {
- // result = eventbridgeClient.putTargets((PutTargetsRequest) payload);
- // } catch (AwsServiceException ase) {
- // LOG.trace("PutTargets command returned the error code {}", ase.awsErrorDetails().errorCode());
- // throw ase;
- // }
- // Message message = getMessageForResponse(exchange);
- // message.setBody(result);
- // }
- // } else {
- // Put.Builder builder = PutRuleRequest.builder();
- // if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EventbridgeConstants.RULE_NAME))) {
- // String ruleName = exchange.getIn().getHeader(EventbridgeConstants.RULE_NAME, String.class);
- // builder.name(ruleName);
- // }
- // if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EventbridgeConstants.EVENT_PATTERN))) {
- // String eventPattern = exchange.getIn().getHeader(EventbridgeConstants.EVENT_PATTERN, String.class);
- // builder.eventPattern(eventPattern);
- // }
- // PutRuleResponse result;
- // try {
- // result = eventbridgeClient.putTargets(builder.build());
- // } catch (AwsServiceException ase) {
- // LOG.trace("Put Rule command returned the error code {}", ase.awsErrorDetails().errorCode());
- // throw ase;
- // }
- // Message message = getMessageForResponse(exchange);
- // message.setBody(result);
- // }
- // }
+ private void putTargets(EventBridgeClient eventbridgeClient, Exchange exchange) throws InvalidPayloadException {
+ if (getConfiguration().isPojoRequest()) {
+ Object payload = exchange.getIn().getMandatoryBody();
+ if (payload instanceof PutTargetsRequest) {
+ PutTargetsResponse result;
+ try {
+ result = eventbridgeClient.putTargets((PutTargetsRequest) payload);
+ } catch (AwsServiceException ase) {
+ LOG.trace("PutTargets command returned the error code {}", ase.awsErrorDetails().errorCode());
+ throw ase;
+ }
+ Message message = getMessageForResponse(exchange);
+ message.setBody(result);
+ }
+ } else {
+ PutTargetsRequest.Builder builder = PutTargetsRequest.builder();
+ if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EventbridgeConstants.RULE_NAME))) {
+ String ruleName = exchange.getIn().getHeader(EventbridgeConstants.RULE_NAME, String.class);
+ builder.rule(ruleName);
+ }
+ if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EventbridgeConstants.TARGETS))) {
+ Collection<Target> targets = exchange.getIn().getHeader(EventbridgeConstants.TARGETS, Collection.class);
+ builder.targets(targets);
+ } else {
+ throw new IllegalArgumentException("At least one targets must be specified");
+ }
+ PutTargetsResponse result;
+ try {
+ result = eventbridgeClient.putTargets(builder.build());
+ } catch (AwsServiceException ase) {
+ LOG.trace("Put Targets command returned the error code {}", ase.awsErrorDetails().errorCode());
+ throw ase;
+ }
+ Message message = getMessageForResponse(exchange);
+ message.setBody(result);
+ }
+ }
@Override
public EventbridgeEndpoint getEndpoint() {
diff --git a/components/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/integration/EventbridgePutRuleIntegrationTest.java b/components/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/integration/EventbridgePutRuleIntegrationTest.java
index 0106440..6d38748 100644
--- a/components/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/integration/EventbridgePutRuleIntegrationTest.java
+++ b/components/camel-aws2-eventbridge/src/test/java/org/apache/camel/component/aws2/eventbridge/integration/EventbridgePutRuleIntegrationTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.aws2.eventbridge.integration;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.camel.BindToRegistry;
import org.apache.camel.EndpointInject;
import org.apache.camel.Exchange;
@@ -31,6 +34,7 @@ import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.eventbridge.EventBridgeClient;
+import software.amazon.awssdk.services.eventbridge.model.Target;
@Disabled("Must be manually tested. Provide your own accessKey and secretKey!")
public class EventbridgePutRuleIntegrationTest extends CamelTestSupport {
@@ -39,7 +43,7 @@ public class EventbridgePutRuleIntegrationTest extends CamelTestSupport {
EventBridgeClient client
= EventBridgeClient.builder()
.credentialsProvider(StaticCredentialsProvider.create(
- AwsBasicCredentials.create("xxxx", "yyy")))
+ AwsBasicCredentials.create("xxxx", "yyyy")))
.region(Region.EU_WEST_1).build();
@EndpointInject
@@ -47,10 +51,14 @@ public class EventbridgePutRuleIntegrationTest extends CamelTestSupport {
@EndpointInject("mock:result")
private MockEndpoint result;
+
+ @EndpointInject("mock:result1")
+ private MockEndpoint result1;
@Test
public void sendIn() throws Exception {
result.expectedMessageCount(1);
+ result1.expectedMessageCount(1);
template.send("direct:evs", new Processor() {
@@ -59,6 +67,18 @@ public class EventbridgePutRuleIntegrationTest extends CamelTestSupport {
exchange.getIn().setHeader(EventbridgeConstants.RULE_NAME, "firstrule");
}
});
+
+ template.send("direct:evs-targets", new Processor() {
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setHeader(EventbridgeConstants.RULE_NAME, "firstrule");
+ Target target = Target.builder().id("sqs-queue").arn("arn:aws:sqs:eu-west-1:780410022472:camel-connector-test").build();
+ List<Target> targets = new ArrayList<Target>();
+ targets.add(target);
+ exchange.getIn().setHeader(EventbridgeConstants.TARGETS, targets);
+ }
+ });
assertMockEndpointsSatisfied();
}
@@ -69,9 +89,9 @@ public class EventbridgePutRuleIntegrationTest extends CamelTestSupport {
@Override
public void configure() throws Exception {
String awsEndpoint = "aws2-eventbridge://test?operation=putRule&eventPatternFile=file:src/test/resources/eventpattern.json";
-
+ String target = "aws2-eventbridge://test?operation=putTargets";
from("direct:evs").to(awsEndpoint).log("${body}").to("mock:result");
-
+ from("direct:evs-targets").to(target).log("${body}").to("mock:result1");
}
};
}