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 e69f14779edabd5f446dc556c086b3a8105939b1
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Mon Sep 28 09:03:14 2020 +0200

    CAMEL-15561 - Camel-AWS2-Eventbridge: More producer operations - 
listRuleNamesByTarget
---
 .../aws2/eventbridge/EventbridgeConstants.java     |  1 +
 .../aws2/eventbridge/EventbridgeOperations.java    |  3 +-
 .../aws2/eventbridge/EventbridgeProducer.java      | 38 ++++++++++++++++++++++
 3 files changed, 41 insertions(+), 1 deletion(-)

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 bf7bcfd..deb3df4 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
@@ -26,4 +26,5 @@ public interface EventbridgeConstants {
     String EVENT_PATTERN = "CamelAwsEventbridgeEventPattern";
     String TARGETS = "CamelAwsEventbridgeTargets";
     String TARGETS_IDS = "CamelAwsEventbridgeTargetsIds";
+    String TARGET_ARN = "CamelAwsEventbridgeTargetArn";
 }
diff --git 
a/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeOperations.java
 
b/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeOperations.java
index ae2b6da..0b42b9f 100644
--- 
a/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeOperations.java
+++ 
b/components/camel-aws2-eventbridge/src/main/java/org/apache/camel/component/aws2/eventbridge/EventbridgeOperations.java
@@ -26,5 +26,6 @@ public enum EventbridgeOperations {
     disableRule,
     describeRule,
     listRules,
-    listTargetsByRule
+    listTargetsByRule,
+    listRuleNamesByTarget
 }
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 055647c..208c017 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
@@ -42,6 +42,8 @@ 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;
@@ -98,6 +100,9 @@ public class EventbridgeProducer extends DefaultProducer {
             case listTargetsByRule:
                 listTargetsByRule(getEndpoint().getEventbridgeClient(), 
exchange);
                 break;
+            case listRuleNamesByTarget:
+                listRuleNamesByTarget(getEndpoint().getEventbridgeClient(), 
exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -441,6 +446,39 @@ public class EventbridgeProducer extends DefaultProducer {
             message.setBody(result);
         }
     }
+    
+    private void listRuleNamesByTarget(EventBridgeClient eventbridgeClient, 
Exchange exchange) throws InvalidPayloadException {
+        if (getConfiguration().isPojoRequest()) {
+            Object payload = exchange.getIn().getMandatoryBody();
+            if (payload instanceof ListRuleNamesByTargetRequest) {
+                ListRuleNamesByTargetResponse result;
+                try {
+                    result = 
eventbridgeClient.listRuleNamesByTarget((ListRuleNamesByTargetRequest) payload);
+                } catch (AwsServiceException ase) {
+                    LOG.trace("List Rule Name by Targets command returned the 
error code {}", ase.awsErrorDetails().errorCode());
+                    throw ase;
+                }
+                Message message = getMessageForResponse(exchange);
+                message.setBody(result);
+            }
+        } else {
+               ListRuleNamesByTargetRequest.Builder builder = 
ListRuleNamesByTargetRequest.builder();
+            if 
(ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EventbridgeConstants.TARGET_ARN)))
 {
+                String targetArn = 
exchange.getIn().getHeader(EventbridgeConstants.TARGET_ARN, String.class);
+                builder.targetArn(targetArn);
+            }
+            builder.eventBusName(getConfiguration().getEventbusName());
+            ListRuleNamesByTargetResponse result;
+            try {
+                result = 
eventbridgeClient.listRuleNamesByTarget(builder.build());
+            } catch (AwsServiceException ase) {
+                LOG.trace("List Rule by Target command returned the error code 
{}", ase.awsErrorDetails().errorCode());
+                throw ase;
+            }
+            Message message = getMessageForResponse(exchange);
+            message.setBody(result);
+        }
+    }
 
     @Override
     public EventbridgeEndpoint getEndpoint() {

Reply via email to