You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2013/08/09 03:28:11 UTC

git commit: CAMEL-6621 Add ability to connect to SQS queue of different owner with thanks to Jeff

Updated Branches:
  refs/heads/master 041e98bfa -> fa97c17a1


CAMEL-6621 Add ability to connect to SQS queue of different owner with thanks to Jeff


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fa97c17a
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fa97c17a
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fa97c17a

Branch: refs/heads/master
Commit: fa97c17a1624b6eeccea7da30d500ec316492c43
Parents: 041e98b
Author: Willem Jiang <ni...@apache.org>
Authored: Fri Aug 9 09:26:40 2013 +0800
Committer: Willem Jiang <ni...@apache.org>
Committed: Fri Aug 9 09:27:16 2013 +0800

----------------------------------------------------------------------
 .../component/aws/sqs/SqsConfiguration.java     | 10 ++++++++
 .../camel/component/aws/sqs/SqsEndpoint.java    | 26 ++++++++++++++------
 .../aws/sqs/SqsComponentConfigurationTest.java  |  4 ++-
 .../component/aws/sqs/SqsEndpointTest.java      | 17 +++++++++++++
 4 files changed, 48 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fa97c17a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
index c0295e3..2de6b0f 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsConfiguration.java
@@ -32,6 +32,7 @@ public class SqsConfiguration {
     private String accessKey;
     private String secretKey;
     private String amazonSQSEndpoint;
+    private String queueOwnerAWSAccountId;
     
     // consumer properties
     private Boolean deleteAfterRead = Boolean.TRUE;
@@ -177,6 +178,14 @@ public class SqsConfiguration {
     public void setWaitTimeSeconds(Integer waitTimeSeconds) {
         this.waitTimeSeconds = waitTimeSeconds;
     }
+    
+    public String getQueueOwnerAWSAccountId() {
+		return queueOwnerAWSAccountId;
+	}
+    
+    public void setQueueOwnerAWSAccountId(String queueOwnerAWSAccountId) {
+		this.queueOwnerAWSAccountId = queueOwnerAWSAccountId;
+	}
 
     @Override
     public String toString() {
@@ -195,6 +204,7 @@ public class SqsConfiguration {
             + ", delaySeconds=" + delaySeconds
             + ", policy=" + policy
             + ", extendMessageVisibility=" + extendMessageVisibility
+            + ", queueOwnerAWSAccountId=" + queueOwnerAWSAccountId
             + "]";
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/fa97c17a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
index 40ee0b5..8236c65 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/sqs/SqsEndpoint.java
@@ -24,6 +24,8 @@ import com.amazonaws.services.sqs.AmazonSQS;
 import com.amazonaws.services.sqs.AmazonSQSClient;
 import com.amazonaws.services.sqs.model.CreateQueueRequest;
 import com.amazonaws.services.sqs.model.CreateQueueResult;
+import com.amazonaws.services.sqs.model.GetQueueUrlRequest;
+import com.amazonaws.services.sqs.model.GetQueueUrlResult;
 import com.amazonaws.services.sqs.model.ListQueuesResult;
 import com.amazonaws.services.sqs.model.QueueAttributeName;
 import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
@@ -78,14 +80,22 @@ public class SqsEndpoint extends ScheduledPollEndpoint {
         client = getConfiguration().getAmazonSQSClient() != null
                 ? getConfiguration().getAmazonSQSClient() : getClient();
 
-        // check whether the queue already exists
-        ListQueuesResult listQueuesResult = client.listQueues();
-        for (String url : listQueuesResult.getQueueUrls()) {
-            if (url.endsWith("/" + configuration.getQueueName())) {
-                queueUrl = url;
-                LOG.trace("Queue available at '{}'.", queueUrl);
-                break;
-            }
+        if (configuration.getQueueOwnerAWSAccountId() != null) {
+    		GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest();
+    		getQueueUrlRequest.setQueueName(configuration.getQueueName());
+    		getQueueUrlRequest.setQueueOwnerAWSAccountId(configuration.getQueueOwnerAWSAccountId());
+    		GetQueueUrlResult getQueueUrlResult = client.getQueueUrl(getQueueUrlRequest );
+    		queueUrl = getQueueUrlResult.getQueueUrl();
+        } else {
+	        // check whether the queue already exists
+	        ListQueuesResult listQueuesResult = client.listQueues();
+	        for (String url : listQueuesResult.getQueueUrls()) {
+	            if (url.endsWith("/" + configuration.getQueueName())) {
+	                queueUrl = url;
+	                LOG.trace("Queue available at '{}'.", queueUrl);
+	                break;
+	            }
+	        }
         }
         
         if (queueUrl == null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/fa97c17a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java
index 090cd32..5a591e9 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsComponentConfigurationTest.java
@@ -79,7 +79,8 @@ public class SqsComponentConfigurationTest extends CamelTestSupport {
                 + "&DefaultVisibilityTimeout=1000&visibilityTimeout=2000&maximumMessageSize=65536&messageRetentionPeriod=1209600&policy="
                 + "%7B%22Version%22%3A%222008-10-17%22%2C%22Id%22%3A%22%2F195004372649%2FMyQueue%2FSQSDefaultPolicy%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%22Queue1ReceiveMessage%22%2C%22"
                 + "Effect%22%3A%22Allow%22%2C%22Principal%22%3A%7B%22AWS%22%3A%22*%22%7D%2C%22Action%22%3A%22SQS%3AReceiveMessage%22%2C%22Resource%22%3A%22%2F195004372649%2FMyQueue%22%7D%5D%7D"
-                + "&delaySeconds=123&receiveMessageWaitTimeSeconds=10&waitTimeSeconds=20");
+                + "&delaySeconds=123&receiveMessageWaitTimeSeconds=10&waitTimeSeconds=20"
+                + "&queueOwnerAWSAccountId=111222333");
         
         assertEquals("MyQueue", endpoint.getConfiguration().getQueueName());
         assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
@@ -97,6 +98,7 @@ public class SqsComponentConfigurationTest extends CamelTestSupport {
         assertEquals(new Integer(123), endpoint.getConfiguration().getDelaySeconds());
         assertEquals(Integer.valueOf(10), endpoint.getConfiguration().getReceiveMessageWaitTimeSeconds());
         assertEquals(Integer.valueOf(20), endpoint.getConfiguration().getWaitTimeSeconds());
+        assertEquals("111222333", endpoint.getConfiguration().getQueueOwnerAWSAccountId());
     }
     
     @Test

http://git-wip-us.apache.org/repos/asf/camel/blob/fa97c17a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java
index d383b46..45baf6a 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/sqs/SqsEndpointTest.java
@@ -17,6 +17,8 @@
 package org.apache.camel.component.aws.sqs;
 
 import com.amazonaws.services.sqs.AmazonSQSClient;
+import com.amazonaws.services.sqs.model.GetQueueUrlRequest;
+import com.amazonaws.services.sqs.model.GetQueueUrlResult;
 import com.amazonaws.services.sqs.model.ListQueuesResult;
 
 import org.apache.camel.impl.DefaultCamelContext;
@@ -53,4 +55,19 @@ public class SqsEndpointTest {
         
         EasyMock.verify(amazonSQSClient);
     }
+    
+    @Test
+    public void doStartWithDifferentQueueOwner() throws Exception {
+        
+    	EasyMock.expect(amazonSQSClient.getQueueUrl(new GetQueueUrlRequest("test-queue").withQueueOwnerAWSAccountId("111222333")))
+        	.andReturn(new GetQueueUrlResult().withQueueUrl("https://sqs.us-east-1.amazonaws.com/111222333/test-queue"));
+    
+	    EasyMock.replay(amazonSQSClient);
+	    
+	    endpoint.getConfiguration().setQueueOwnerAWSAccountId("111222333");
+	    endpoint.doStart();
+	    
+	    EasyMock.verify(amazonSQSClient);
+    	
+    }
 }
\ No newline at end of file