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/23 16:25:04 UTC

[camel] 01/05: CAMEL-15561 - Camel-AWS2-Eventbridge: More producer operations - listRules

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 2005d12b475706ce59d57387ea81cc66ce84d1aa
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Sep 23 18:17:35 2020 +0200

    CAMEL-15561 - Camel-AWS2-Eventbridge: More producer operations - listRules
---
 .../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 0d84b7f..bf7bcfd 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
@@ -22,6 +22,7 @@ package org.apache.camel.component.aws2.eventbridge;
 public interface EventbridgeConstants {
     String OPERATION = "CamelAwsEventbridgeOperation";
     String RULE_NAME = "CamelAwsEventbridgeRuleName";
+    String RULE_NAME_PREFIX = "CamelAwsEventbridgeRuleNamePrefix";
     String EVENT_PATTERN = "CamelAwsEventbridgeEventPattern";
     String TARGETS = "CamelAwsEventbridgeTargets";
     String TARGETS_IDS = "CamelAwsEventbridgeTargetsIds";
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 1d2abfd..38b86bc 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
@@ -23,5 +23,6 @@ public enum EventbridgeOperations {
     removeTargets,
     deleteRule,
     enableRule,
-    disableRule
+    disableRule,
+    listRules
 }
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 48e3178..7242477 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
@@ -40,6 +40,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.ListRulesRequest;
+import software.amazon.awssdk.services.eventbridge.model.ListRulesResponse;
 import software.amazon.awssdk.services.eventbridge.model.PutRuleRequest;
 import software.amazon.awssdk.services.eventbridge.model.PutRuleResponse;
 import software.amazon.awssdk.services.eventbridge.model.PutTargetsRequest;
@@ -83,6 +85,9 @@ public class EventbridgeProducer extends DefaultProducer {
             case disableRule:
                 disableRule(getEndpoint().getEventbridgeClient(), exchange);
                 break;
+            case listRules:
+                listRules(getEndpoint().getEventbridgeClient(), exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -327,6 +332,39 @@ public class EventbridgeProducer extends DefaultProducer {
             message.setBody(result);
         }
     }
+    
+    private void listRules(EventBridgeClient eventbridgeClient, Exchange exchange) throws InvalidPayloadException {
+        if (getConfiguration().isPojoRequest()) {
+            Object payload = exchange.getIn().getMandatoryBody();
+            if (payload instanceof ListRulesRequest) {
+                ListRulesResponse result;
+                try {
+                    result = eventbridgeClient.listRules((ListRulesRequest) payload);
+                } catch (AwsServiceException ase) {
+                    LOG.trace("List Rules command returned the error code {}", ase.awsErrorDetails().errorCode());
+                    throw ase;
+                }
+                Message message = getMessageForResponse(exchange);
+                message.setBody(result);
+            }
+        } else {
+        	ListRulesRequest.Builder builder = ListRulesRequest.builder();
+            if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(EventbridgeConstants.RULE_NAME_PREFIX))) {
+                String ruleNamePrefix = exchange.getIn().getHeader(EventbridgeConstants.RULE_NAME_PREFIX, String.class);
+                builder.namePrefix(ruleNamePrefix);
+            }
+            builder.eventBusName(getConfiguration().getEventbusName());
+            ListRulesResponse result;
+            try {
+                result = eventbridgeClient.listRules(builder.build());
+            } catch (AwsServiceException ase) {
+                LOG.trace("Disable Rule command returned the error code {}", ase.awsErrorDetails().errorCode());
+                throw ase;
+            }
+            Message message = getMessageForResponse(exchange);
+            message.setBody(result);
+        }
+    }
 
     @Override
     public EventbridgeEndpoint getEndpoint() {