You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/08/11 14:22:33 UTC

[camel] branch camel-3.4.x updated: CAMEL-15391: override the endpoint if a custom AWS Host is provided (#4084)

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

davsclaus pushed a commit to branch camel-3.4.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.4.x by this push:
     new a943fa0  CAMEL-15391: override the endpoint if a custom AWS Host is provided (#4084)
a943fa0 is described below

commit a943fa05752acb9770ecad9ff603621757dcebe9
Author: Otavio Rodolfo Piske <or...@users.noreply.github.com>
AuthorDate: Tue Aug 11 16:21:36 2020 +0200

    CAMEL-15391: override the endpoint if a custom AWS Host is provided (#4084)
---
 .../camel/component/aws2/sqs/Sqs2Endpoint.java     | 26 ++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Endpoint.java b/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Endpoint.java
index 773dea6..1c343c1 100644
--- a/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Endpoint.java
+++ b/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Endpoint.java
@@ -115,6 +115,10 @@ public class Sqs2Endpoint extends ScheduledPollEndpoint implements HeaderFilterS
         return sqsConsumer;
     }
 
+    private boolean isDefaultAwsHost() {
+        return configuration.getAmazonAWSHost().equals("amazonaws.com");
+    }
+
     /*
      * If using a different AWS host, do not assume specific parts of the AWS
      * host and, instead, just return whatever is provided as the host.
@@ -123,13 +127,24 @@ public class Sqs2Endpoint extends ScheduledPollEndpoint implements HeaderFilterS
         String host = configuration.getAmazonAWSHost();
         host = FileUtil.stripTrailingSeparator(host);
 
-        if (host.equals("amazonaws.com")) {
+        if (isDefaultAwsHost()) {
             return "sqs." + Region.of(configuration.getRegion()).id() + "." + host;
         }
 
         return host;
     }
 
+    /*
+     * Gets the base endpoint for AWS (ie.: http(s)://host:port.
+     *
+     * Do not confuse with other Camel endpoint methods: this one is named after AWS'
+     * own endpoint terminology and can also be used for the endpoint override in the
+     * client builder.
+     */
+    private String getAwsEndpointUri() {
+        return configuration.getProtocol() + "://" + getFullyQualifiedAWSHost();
+    }
+
     @Override
     protected void doInit() throws Exception {
         super.doInit();
@@ -148,9 +163,7 @@ public class Sqs2Endpoint extends ScheduledPollEndpoint implements HeaderFilterS
             // This allows accessing queues where you don't have permission to
             // list queues or query queues
             if (configuration.getRegion() != null && configuration.getQueueOwnerAWSAccountId() != null) {
-                String protocol = configuration.getProtocol();
-
-                queueUrl = protocol + "://" + getFullyQualifiedAWSHost() + "/" + configuration.getQueueOwnerAWSAccountId() + "/" + configuration.getQueueName();
+                queueUrl = getAwsEndpointUri() + "/" + configuration.getQueueOwnerAWSAccountId() + "/" + configuration.getQueueName();
             } else if (configuration.getQueueOwnerAWSAccountId() != null) {
                 GetQueueUrlRequest.Builder getQueueUrlRequest = GetQueueUrlRequest.builder();
                 getQueueUrlRequest.queueName(configuration.getQueueName());
@@ -358,6 +371,11 @@ public class Sqs2Endpoint extends ScheduledPollEndpoint implements HeaderFilterS
             }
         }
 
+        if (!isDefaultAwsHost()) {
+            String endpointOverrideUri = getAwsEndpointUri();
+            clientBuilder.endpointOverride(URI.create(endpointOverrideUri));
+        }
+
         if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
             clientBuilder = clientBuilder.region(Region.of(configuration.getRegion()));
         }