diff --git a/clc/modules/simplequeue-common/src/main/java/com/eucalyptus/simplequeue/SimpleQueueMessages.groovy b/clc/modules/simplequeue-common/src/main/java/com/eucalyptus/simplequeue/SimpleQueueMessages.groovy index 96a069ed178..d47e5c4c074 100644 --- a/clc/modules/simplequeue-common/src/main/java/com/eucalyptus/simplequeue/SimpleQueueMessages.groovy +++ b/clc/modules/simplequeue-common/src/main/java/com/eucalyptus/simplequeue/SimpleQueueMessages.groovy @@ -27,11 +27,11 @@ import edu.ucsb.eucalyptus.msgs.GroovyAddClassUUID import java.lang.reflect.Field -public class SimpleQueueMessageWithQueueUrl extends SimpleQueueMessage { - String queueUrl; - public SimpleQueueMessageWithQueueUrl() { } -} +public interface QueueUrlGetterSetter { + public void setQueueUrl(String queueUrl); + public String getQueueUrl(); +} public class CreateQueueType extends SimpleQueueMessage { String queueName; public CreateQueueType() { } @@ -51,7 +51,8 @@ public class SendMessageBatchResultEntry extends EucalyptusData { String mD5OfMessageAttributes; public SendMessageBatchResultEntry() { } } -public class RemovePermissionType extends SimpleQueueMessageWithQueueUrl { +public class RemovePermissionType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; String label; public RemovePermissionType() { } } @@ -63,7 +64,8 @@ public class ListDeadLetterSourceQueuesResult extends EucalyptusData { public ListDeadLetterSourceQueuesResult() { } ArrayList queueUrl = new ArrayList(); } -public class ChangeMessageVisibilityType extends SimpleQueueMessageWithQueueUrl { +public class ChangeMessageVisibilityType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; String receiptHandle; Integer visibilityTimeout; public ChangeMessageVisibilityType() { } @@ -82,7 +84,8 @@ public class SendMessageBatchResponseType extends SimpleQueueMessage { SendMessageBatchResult sendMessageBatchResult = new SendMessageBatchResult(); ResponseMetadata responseMetadata = new ResponseMetadata(); } -public class SetQueueAttributesType extends SimpleQueueMessageWithQueueUrl { +public class SetQueueAttributesType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; public SetQueueAttributesType() { } @HttpEmbedded(multiple=true) ArrayList attribute = new ArrayList(); @@ -108,7 +111,8 @@ public class ChangeMessageVisibilityBatchRequestEntry extends EucalyptusData { Integer visibilityTimeout; public ChangeMessageVisibilityBatchRequestEntry() { } } -public class SendMessageType extends SimpleQueueMessageWithQueueUrl { +public class SendMessageType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; String messageBody; Integer delaySeconds; public SendMessageType() { } @@ -122,7 +126,8 @@ public class DeleteMessageBatchResult extends EucalyptusData { ArrayList deleteMessageBatchResultEntry = new ArrayList(); ArrayList batchResultErrorEntry = new ArrayList(); } -public class AddPermissionType extends SimpleQueueMessageWithQueueUrl { +public class AddPermissionType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; String label; public AddPermissionType() { } @HttpParameterMapping(parameter="AWSAccountId") @@ -149,7 +154,8 @@ public class ChangeMessageVisibilityBatchResultEntry extends EucalyptusData { public ChangeMessageVisibilityBatchResultEntry() { } } @PolicyAction(vendor=SimpleQueuePolicySpec.VENDOR_SIMPLEQUEUE, action=SimpleQueuePolicySpec.SIMPLEQUEUE_CHANGEMESSAGEVISIBILITY) -public class ChangeMessageVisibilityBatchType extends SimpleQueueMessageWithQueueUrl { +public class ChangeMessageVisibilityBatchType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; public ChangeMessageVisibilityBatchType() { } @HttpEmbedded(multiple=true) ArrayList changeMessageVisibilityBatchRequestEntry = new ArrayList(); @@ -158,7 +164,8 @@ public class GetQueueAttributesResult extends EucalyptusData { public GetQueueAttributesResult() { } ArrayList attribute = new ArrayList(); } -public class ListDeadLetterSourceQueuesType extends SimpleQueueMessageWithQueueUrl { +public class ListDeadLetterSourceQueuesType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; public ListDeadLetterSourceQueuesType() { } } public class SendMessageBatchRequestEntry extends EucalyptusData { @@ -174,7 +181,8 @@ public class DeleteMessageBatchResponseType extends SimpleQueueMessage { DeleteMessageBatchResult deleteMessageBatchResult = new DeleteMessageBatchResult(); ResponseMetadata responseMetadata = new ResponseMetadata(); } -public class GetQueueAttributesType extends SimpleQueueMessageWithQueueUrl { +public class GetQueueAttributesType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; String unused; public GetQueueAttributesType() { } ArrayList attributeName = new ArrayList(); @@ -184,12 +192,14 @@ public class MessageAttribute extends EucalyptusData { MessageAttributeValue value; public MessageAttribute() { } } -public class DeleteQueueType extends SimpleQueueMessageWithQueueUrl { +public class DeleteQueueType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; public DeleteQueueType() { } @HttpEmbedded(multiple=true) ArrayList attribute = new ArrayList(); } -public class PurgeQueueType extends SimpleQueueMessageWithQueueUrl { +public class PurgeQueueType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; public PurgeQueueType() { } @HttpEmbedded(multiple=true) ArrayList attribute = new ArrayList(); @@ -282,7 +292,8 @@ public class SendMessageResponseType extends SimpleQueueMessage { SendMessageResult sendMessageResult = new SendMessageResult(); ResponseMetadata responseMetadata = new ResponseMetadata(); } -public class DeleteMessageType extends SimpleQueueMessageWithQueueUrl { +public class DeleteMessageType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; String receiptHandle; public DeleteMessageType() { } @HttpEmbedded(multiple=true) @@ -301,7 +312,8 @@ public class ErrorDetail extends EucalyptusData { public ErrorDetail() { } } @PolicyAction(vendor=SimpleQueuePolicySpec.VENDOR_SIMPLEQUEUE, action=SimpleQueuePolicySpec.SIMPLEQUEUE_SENDMESSAGE) -public class SendMessageBatchType extends SimpleQueueMessageWithQueueUrl { +public class SendMessageBatchType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; public SendMessageBatchType() { } @HttpEmbedded(multiple=true) ArrayList sendMessageBatchRequestEntry = new ArrayList(); @@ -311,12 +323,14 @@ public class ResponseMetadata extends EucalyptusData { public ResponseMetadata() { } } @PolicyAction(vendor=SimpleQueuePolicySpec.VENDOR_SIMPLEQUEUE, action=SimpleQueuePolicySpec.SIMPLEQUEUE_DELETEMESSAGE) -public class DeleteMessageBatchType extends SimpleQueueMessageWithQueueUrl { +public class DeleteMessageBatchType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; public DeleteMessageBatchType() { } @HttpEmbedded(multiple=true) ArrayList deleteMessageBatchRequestEntry = new ArrayList(); } -public class ReceiveMessageType extends SimpleQueueMessageWithQueueUrl { +public class ReceiveMessageType extends SimpleQueueMessage implements QueueUrlGetterSetter { + String queueUrl; Integer maxNumberOfMessages; Integer visibilityTimeout; Integer waitTimeSeconds; diff --git a/clc/modules/simplequeue-common/src/main/resources/simplequeue-binding.xml b/clc/modules/simplequeue-common/src/main/resources/simplequeue-binding.xml index 4a961c33366..e497dd0bf82 100644 --- a/clc/modules/simplequeue-common/src/main/resources/simplequeue-binding.xml +++ b/clc/modules/simplequeue-common/src/main/resources/simplequeue-binding.xml @@ -52,6 +52,7 @@ + @@ -64,6 +65,7 @@ + @@ -75,6 +77,7 @@ + @@ -85,6 +88,7 @@ + @@ -95,6 +99,7 @@ + @@ -107,6 +112,7 @@ + @@ -125,6 +131,7 @@ + @@ -141,6 +148,7 @@ + @@ -162,6 +170,7 @@ + @@ -188,6 +197,7 @@ + @@ -218,6 +228,7 @@ + @@ -243,6 +254,7 @@ + @@ -257,6 +269,7 @@ + @@ -264,6 +277,7 @@ + diff --git a/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/SimpleQueueService.java b/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/SimpleQueueService.java index c40d3642ea5..83056e12e22 100644 --- a/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/SimpleQueueService.java +++ b/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/SimpleQueueService.java @@ -203,7 +203,7 @@ public CheckMin60IntPropertyChangeListener() { static final Logger LOG = Logger.getLogger(SimpleQueueService.class); - private int checkAttributeIntMinMax(Attribute attribute, int min, int max) throws InvalidParameterValueException { + private static int checkAttributeIntMinMax(Attribute attribute, int min, int max) throws InvalidParameterValueException { int value; try { value = Integer.parseInt(attribute.getValue()); @@ -290,7 +290,7 @@ public CreateQueueResponseType createQueue(CreateQueueType request) throws Simpl return reply; } - private void setAndValidateAttributes(String accountId, Iterable requestAttributes, Map attributeMap) throws SimpleQueueException { + private static void setAndValidateAttributes(String accountId, Iterable requestAttributes, Map attributeMap) throws SimpleQueueException { for (Attribute attribute : requestAttributes) { switch (attribute.getName()) { @@ -419,7 +419,7 @@ private void setAndValidateAttributes(String accountId, Iterable requ } } - private void minimallyCheckPolicy(String policyJson) throws IOException { + private static void minimallyCheckPolicy(String policyJson) throws IOException { // check valid json JsonNode jsonNode = new ObjectMapper().readTree(policyJson); if (!jsonNode.isObject()) { @@ -441,7 +441,7 @@ private void minimallyCheckPolicy(String policyJson) throws IOException { } } - private String getQueueUrlFromQueueUrlParts(QueueUrlParts queueUrlParts) { + private static String getQueueUrlFromQueueUrlParts(QueueUrlParts queueUrlParts) { return ServiceUris.remotePublicify(Topology.lookup(SimpleQueue.class)).toString() + queueUrlParts.getAccountId() + "/" + queueUrlParts.getQueueName(); } @@ -511,8 +511,8 @@ private static class ServicePathAccountIdAndQueueNamePartsParser implements Queu public boolean matches(URL queueUrl) { if (queueUrl != null && queueUrl.getPath() != null) { List pathParts = Splitter.on('/').omitEmptyStrings().splitToList(queueUrl.getPath()); - return (pathParts != null && "services".equals(pathParts.get(0)) - && "simplequeue".equals(pathParts.get(1)) && pathParts.size() == 4); + return (pathParts != null && pathParts.size() == 4 && "services".equals(pathParts.get(0)) + && "simplequeue".equals(pathParts.get(1))); } else { return false; } @@ -529,7 +529,7 @@ public QueueUrlParts getQueueUrlParts(URL queueUrl) { } } - private QueueUrlParts getQueueUrlParts(String queueUrlStr) throws InvalidAddressException { + private static QueueUrlParts getQueueUrlParts(String queueUrlStr) throws InvalidAddressException { QueueUrlParts queueUrlParts = null; try { URL queueUrl = new URL(queueUrlStr); @@ -602,8 +602,7 @@ public AddPermissionResponseType addPermission(AddPermissionType request) throws try { final Context ctx = Contexts.lookup(); Queue queue = getAndCheckPermissionOnQueue(request.getQueueUrl()); - String queueArn = "arn:aws:sqs:" + RegionConfigurations.getRegionNameOrDefault() + ":" + queue.getAccountId() - + ":" + queue.getQueueName(); + String queueArn = getQueueArn(queue); ArrayList principalIds = Lists.newArrayList(); if (request.getAwsAccountId() == null || request.getAwsAccountId().isEmpty()) { @@ -709,7 +708,12 @@ public AddPermissionResponseType addPermission(AddPermissionType request) throws return reply; } - private void addStatementToPolicy(String label, Collection principalIds, Collection actionNames, + private static String getQueueArn(Queue queue) { + return "arn:aws:sqs:" + RegionConfigurations.getRegionNameOrDefault() + ":" + queue.getAccountId() + + ":" + queue.getQueueName(); + } + + private static void addStatementToPolicy(String label, Collection principalIds, Collection actionNames, String resourceId, ArrayNode statementArrayNode) { ObjectNode statementNode = statementArrayNode.addObject(); statementNode.put("Sid", label); @@ -751,7 +755,7 @@ public ChangeMessageVisibilityResponseType changeMessageVisibility(ChangeMessage return reply; } - private void handleChangeMessageVisibility(Integer visibilityTimeout, String receiptHandle, Queue queue) throws SimpleQueueException { + private static void handleChangeMessageVisibility(Integer visibilityTimeout, String receiptHandle, Queue queue) throws SimpleQueueException { if (visibilityTimeout == null) { throw new MissingParameterException("VisibilityTimeout is a required field"); } @@ -778,7 +782,7 @@ public DeleteMessageResponseType deleteMessage(DeleteMessageType request) throws return reply; } - private void handleDeleteMessage(Queue queue, String receiptHandle) throws SimpleQueueException { + private static void handleDeleteMessage(Queue queue, String receiptHandle) throws SimpleQueueException { PersistenceFactory.getMessagePersistence().deleteMessage(queue, receiptHandle); } @@ -795,7 +799,7 @@ public DeleteQueueResponseType deleteQueue(DeleteQueueType request) throws Eucal return reply; } - private Queue getAndCheckPermissionOnQueue(String queueUrl) throws QueueDoesNotExistException, AccessDeniedException, InvalidAddressException { + private static Queue getAndCheckPermissionOnQueue(String queueUrl) throws QueueDoesNotExistException, AccessDeniedException, InvalidAddressException { QueueUrlParts queueUrlParts = getQueueUrlParts(queueUrl); Queue queue = PersistenceFactory.getQueuePersistence().lookupQueue(queueUrlParts.getAccountId(), queueUrlParts.getQueueName()); if (queue == null) { @@ -829,7 +833,7 @@ public GetQueueAttributesResponseType getQueueAttributes(GetQueueAttributesType attributes.putAll(queue.getAttributes()); } attributes.putAll(PersistenceFactory.getMessagePersistence().getApproximateMessageCounts(queue)); - attributes.put(Constants.QUEUE_ARN, "arn:aws:sqs:" + RegionConfigurations.getRegionNameOrDefault() + ":" + queue.getAccountId() + ":" + queue.getQueueName()); + attributes.put(Constants.QUEUE_ARN, getQueueArn(queue)); Set validAttributes = ImmutableSet.of( Constants.ALL, Constants.APPROXIMATE_NUMBER_OF_MESSAGES, Constants.APPROXIMATE_NUMBER_OF_MESSAGES_NOT_VISIBLE, Constants.VISIBILITY_TIMEOUT, Constants.CREATED_TIMESTAMP, Constants.LAST_MODIFIED_TIMESTAMP, Constants.POLICY, @@ -998,7 +1002,7 @@ public ReceiveMessageResponseType receiveMessage(ReceiveMessageType request) thr return reply; } - private void filterReceiveMessageAttributes(Message message, ArrayList matchingMessageAttributeNames) + private static void filterReceiveMessageAttributes(Message message, ArrayList matchingMessageAttributeNames) throws EucalyptusCloudException { if (message.getMessageAttribute() != null) { boolean changed = true; @@ -1035,7 +1039,7 @@ private void filterReceiveMessageAttributes(Message message, ArrayList m } } - private void filterReceiveAttributes(Message message, ArrayList matchingAttributeNames) { + private static void filterReceiveAttributes(Message message, ArrayList matchingAttributeNames) { if (message.getAttribute() != null) { Iterator iter = message.getAttribute().iterator(); while (iter.hasNext()) { @@ -1048,7 +1052,7 @@ private void filterReceiveAttributes(Message message, ArrayList matching } } - private int validateMessageAttributeNameAndCalculateLength(String name, Collection previousNames) throws InvalidParameterValueException { + private static int validateMessageAttributeNameAndCalculateLength(String name, Collection previousNames) throws InvalidParameterValueException { if (Strings.isNullOrEmpty(name)) { throw new InvalidParameterValueException("Message attribute name can not be null or empty"); } @@ -1073,7 +1077,7 @@ private int validateMessageAttributeNameAndCalculateLength(String name, Collecti return name.getBytes(UTF8).length; } - private int validateMessageAttributeValueAndCalculateLength(MessageAttributeValue value, String name) throws com.eucalyptus.simplequeue.exceptions.UnsupportedOperationException, InvalidParameterValueException { + private static int validateMessageAttributeValueAndCalculateLength(MessageAttributeValue value, String name) throws com.eucalyptus.simplequeue.exceptions.UnsupportedOperationException, InvalidParameterValueException { int attributeValueLength = 0; if (value == null) { @@ -1214,7 +1218,7 @@ private MessageInfo(Message message, int messageLength, Map send } } - private MessageInfo validateAndGetMessageInfo(Queue queue, String senderId, String body, Integer delaySeconds, ArrayList messageAttributes) throws EucalyptusCloudException { + private static MessageInfo validateAndGetMessageInfo(Queue queue, String senderId, String body, Integer delaySeconds, ArrayList messageAttributes) throws EucalyptusCloudException { int messageLength = 0; Map sendAttributes = Maps.newHashMap(); Message message = new Message(); @@ -1492,7 +1496,7 @@ public ListDeadLetterSourceQueuesResponseType listDeadLetterSourceQueues(ListDea try { final Context ctx = Contexts.lookup(); Queue queue = getAndCheckPermissionOnQueue(request.getQueueUrl()); - String queueArn = "arn:aws:sqs:" + RegionConfigurations.getRegionNameOrDefault() + ":" + queue.getAccountId() + ":" + queue.getQueueName(); + String queueArn = getQueueArn(queue); Collection sourceQueues = PersistenceFactory.getQueuePersistence().listDeadLetterSourceQueues(queue.getAccountId(), queueArn); if (sourceQueues != null) { for (Queue sourceQueue: sourceQueues) { diff --git a/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/SimpleQueueValidator.java b/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/SimpleQueueValidator.java index 58f13a24185..f1d93fce21d 100644 --- a/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/SimpleQueueValidator.java +++ b/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/SimpleQueueValidator.java @@ -1,5 +1,5 @@ /************************************************************************* - * Copyright 2009-2016 Eucalyptus Systems, Inc. + * (c) Copyright 2016 Hewlett Packard Enterprise Development Company LP * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -13,9 +13,20 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. * - * Please contact Eucalyptus Systems, Inc., 6755 Hollister Ave., Goleta - * CA 93117, USA or visit http://www.eucalyptus.com/licenses/ if you need - * additional information or have any questions. + * This file may incorporate work covered under the following copyright and permission notice: + * + * Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. ************************************************************************/ package com.eucalyptus.simplequeue; diff --git a/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/ws/SimpleQueueQueueUrlQueryBinding.java b/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/ws/SimpleQueueQueueUrlQueryBinding.java index 4daee2b99df..1174b90b23c 100644 --- a/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/ws/SimpleQueueQueueUrlQueryBinding.java +++ b/clc/modules/simplequeue/src/main/java/com/eucalyptus/simplequeue/ws/SimpleQueueQueueUrlQueryBinding.java @@ -17,7 +17,7 @@ import com.eucalyptus.binding.BindingException; import com.eucalyptus.http.MappingHttpRequest; -import com.eucalyptus.simplequeue.SimpleQueueMessageWithQueueUrl; +import com.eucalyptus.simplequeue.QueueUrlGetterSetter; import org.apache.log4j.Logger; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.http.HttpHeaders; @@ -40,7 +40,7 @@ public SimpleQueueQueueUrlQueryBinding(ChannelPipeline channelPipeline) { public Object bind(MappingHttpRequest httpRequest) throws BindingException { Object result = super.bind(httpRequest); - if (result instanceof SimpleQueueMessageWithQueueUrl) { + if (result instanceof QueueUrlGetterSetter && ((QueueUrlGetterSetter) result).getQueueUrl() == null) { String scheme = null; String userInfo = null; String host = null; @@ -70,7 +70,7 @@ public Object bind(MappingHttpRequest httpRequest) throws BindingException { } path = httpRequest.getServicePath(); try { - ((SimpleQueueMessageWithQueueUrl) result).setQueueUrl(new URI(scheme, userInfo, host, port, path, query, fragment).toString()); + ((QueueUrlGetterSetter) result).setQueueUrl(new URI(scheme, userInfo, host, port, path, query, fragment).toString()); } catch (URISyntaxException e) { throw new BindingException("Unable to bind queueUrl, values would be: scheme="+scheme+",userInfo="+userInfo+",host="+host+",port="+port+",path="+path+",query="+query+",fragment="+fragment); } diff --git a/clc/modules/simplequeue/src/test/java/com/eucalyptus/simplequeue/ws/SimpleQueueQueryBindingTest.groovy b/clc/modules/simplequeue/src/test/java/com/eucalyptus/simplequeue/ws/SimpleQueueQueryBindingTest.groovy index 6d6035eebf9..34181cd0531 100644 --- a/clc/modules/simplequeue/src/test/java/com/eucalyptus/simplequeue/ws/SimpleQueueQueryBindingTest.groovy +++ b/clc/modules/simplequeue/src/test/java/com/eucalyptus/simplequeue/ws/SimpleQueueQueryBindingTest.groovy @@ -172,7 +172,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { Map parameterMap; // AddPermission bean = new AddPermissionType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, label: 'testLabel', awsAccountId: ['00000000', '00000001'], actionName: ['Action1', 'Action2'] @@ -180,6 +180,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { parameterMap = [ + 'QueueUrl' : QUEUE_URL, Label : 'testLabel', 'AWSAccountId.1': '00000000', 'AWSAccountId.2': '00000001', @@ -198,7 +199,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); AddPermissionRequest addPermissionRequest = new AddPermissionRequest( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, label: 'testLabel', aWSAccountIds: ['00000000', '00000001'], actions: ['Action1', 'Action2'] @@ -214,12 +215,13 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { Map parameterMap; // ChangeMessageVisibility bean = new ChangeMessageVisibilityType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, receiptHandle: 'boo', visibilityTimeout: 5 ); parameterMap = [ + 'QueueUrl' : QUEUE_URL, 'ReceiptHandle' : 'boo', 'VisibilityTimeout': '5' ]; @@ -235,7 +237,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); ChangeMessageVisibilityRequest changeMessageVisibilityRequest = new ChangeMessageVisibilityRequest( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, receiptHandle: 'boo', visibilityTimeout: 5 ); @@ -251,7 +253,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { // ChangeMessageVisibilityBatch bean = new ChangeMessageVisibilityBatchType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, changeMessageVisibilityBatchRequestEntry: [ new ChangeMessageVisibilityBatchRequestEntry( id: 'myId 1', @@ -272,6 +274,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { ); parameterMap = [ + 'QueueUrl' : QUEUE_URL, 'ChangeMessageVisibilityBatchRequestEntry.1.Id' : 'myId 1', 'ChangeMessageVisibilityBatchRequestEntry.1.ReceiptHandle' : 'my rh 1', 'ChangeMessageVisibilityBatchRequestEntry.1.VisibilityTimeout': '1', @@ -308,7 +311,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); ChangeMessageVisibilityBatchRequest changeMessageVisibilityBatchRequest = new ChangeMessageVisibilityBatchRequest( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, entries: [ new com.amazonaws.services.sqs.model.ChangeMessageVisibilityBatchRequestEntry( id: 'myId 1', @@ -378,7 +381,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { def response = loadClass(CreateQueueResponseType.class).newInstance( responseMetadata: loadClass(ResponseMetadata.class).newInstance(requestId: UUID.randomUUID().toString()), createQueueResult: loadClass(CreateQueueResult.class).newInstance( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, ) ) NettyHttpServer nettyHttpServer = new NettyHttpServer(NETTY_PORT, getXMLString(response)); @@ -404,12 +407,13 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { //DeleteMessage bean = new DeleteMessageType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, receiptHandle: 'receiptHandle' ); parameterMap = [ - 'ReceiptHandle': 'receiptHandle' + 'QueueUrl' : QUEUE_URL, + 'ReceiptHandle': 'receiptHandle' ]; bindAndAssertObject(mb, DeleteMessageType.class, "DeleteMessage", bean, parameterMap.size()); bindAndAssertParameters(mb, DeleteMessageType.class, "DeleteMessage", bean, parameterMap); @@ -423,7 +427,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, receiptHandle: 'receiptHandle' ); sqs.deleteMessage(deleteMessageRequest); @@ -439,7 +443,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { //DeleteMessageBatch bean = new DeleteMessageBatchType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, deleteMessageBatchRequestEntry: [ new DeleteMessageBatchRequestEntry(id: 'del id 1', receiptHandle: 'receiptHandle1'), new DeleteMessageBatchRequestEntry(id: 'del id 2', receiptHandle: 'receiptHandle2'), @@ -448,6 +452,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { ); parameterMap = [ + 'QueueUrl' : QUEUE_URL, 'DeleteMessageBatchRequestEntry.1.Id' : 'del id 1', 'DeleteMessageBatchRequestEntry.1.ReceiptHandle': 'receiptHandle1', 'DeleteMessageBatchRequestEntry.2.Id' : 'del id 2', @@ -481,7 +486,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); DeleteMessageBatchRequest deleteMessageBatchRequest = new DeleteMessageBatchRequest( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, entries: [ new com.amazonaws.services.sqs.model.DeleteMessageBatchRequestEntry( id: 'myId 1', @@ -528,9 +533,13 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { // DeleteQueue bean = new DeleteQueueType( - queueUrl: QUEUE_URL // does not bind + queueUrl: QUEUE_URL ); - parameterMap = Maps.newHashMap(); + parameterMap = + [ + 'QueueUrl' : QUEUE_URL + ]; + bindAndAssertObject(mb, DeleteQueueType.class, "DeleteQueue", bean, parameterMap.size()); bindAndAssertParameters(mb, DeleteQueueType.class, "DeleteQueue", bean, parameterMap); @@ -543,7 +552,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); DeleteQueueRequest deleteQueueRequest = new DeleteQueueRequest( - queueUrl: QUEUE_URL // does bind + queueUrl: QUEUE_URL ); sqs.deleteQueue(deleteQueueRequest); nettyHttpServer.shutdown(); @@ -559,10 +568,11 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { // GetQueueAttributes bean = new GetQueueAttributesType( attributeName: ['A1', 'A2', 'A3'], - queueUrl: QUEUE_URL // does not bind + queueUrl: QUEUE_URL ); parameterMap = [ + 'QueueUrl' : QUEUE_URL, 'AttributeName.1': 'A1', 'AttributeName.2': 'A2', 'AttributeName.3': 'A3' @@ -586,7 +596,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, attributeNames: ['A1', 'A2', 'A3'] ); com.amazonaws.services.sqs.model.GetQueueAttributesResult getQueueAttributesResult = @@ -622,7 +632,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { def response = loadClass(GetQueueUrlResponseType.class).newInstance( responseMetadata: loadClass(ResponseMetadata.class).newInstance(requestId: UUID.randomUUID().toString()), getQueueUrlResult: loadClass(GetQueueUrlResult.class).newInstance( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, ) ) NettyHttpServer nettyHttpServer = new NettyHttpServer(NETTY_PORT, getXMLString(response)); @@ -648,9 +658,12 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { // ListDeadLetterSourceQueues bean = new ListDeadLetterSourceQueuesType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, ); - parameterMap = Maps.newHashMap(); + parameterMap = + [ + 'QueueUrl' : QUEUE_URL + ]; bindAndAssertObject(mb, ListDeadLetterSourceQueuesType.class, "ListDeadLetterSourceQueues", bean, parameterMap.size()); bindAndAssertParameters(mb, ListDeadLetterSourceQueuesType.class, "ListDeadLetterSourceQueues", bean, parameterMap); @@ -666,7 +679,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); ListDeadLetterSourceQueuesRequest listDeadLetterSourceQueuesRequest = new ListDeadLetterSourceQueuesRequest( - queueUrl: QUEUE_URL // does bind + queueUrl: QUEUE_URL ); com.amazonaws.services.sqs.model.ListDeadLetterSourceQueuesResult listDeadLetterSourceQueuesResult = sqs.listDeadLetterSourceQueues(listDeadLetterSourceQueuesRequest); nettyHttpServer.shutdown(); @@ -722,9 +735,13 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { // PurgeQueue bean = new PurgeQueueType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, ); - parameterMap = Maps.newHashMap(); + parameterMap = + [ + 'QueueUrl' : QUEUE_URL + ]; + Maps.newHashMap(); bindAndAssertObject(mb, PurgeQueueType.class, "PurgeQueue", bean, parameterMap.size()); bindAndAssertParameters(mb, PurgeQueueType.class, "PurgeQueue", bean, parameterMap); @@ -737,7 +754,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); //TODO: AWS SDK update PurgeQueueRequest purgeQueueRequest = new PurgeQueueRequest( -//TODO: AWS SDK update queueUrl: QUEUE_URL // does bind +//TODO: AWS SDK update queueUrl: QUEUE_URL //TODO: AWS SDK update ); //TODO: AWS SDK update sqs.purgeQueue(purgeQueueRequest); nettyHttpServer.shutdown(); @@ -754,11 +771,12 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { attributeName: ['A1' ,'A2', 'A3', 'A4', 'A5'], maxNumberOfMessages : 5, messageAttributeName: ['MA1' ,'MA2', 'MA3', 'MA4', 'MA5'], - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, visibilityTimeout : 4, waitTimeSeconds : 3 ); parameterMap = [ + 'QueueUrl' : QUEUE_URL, 'AttributeName.1' : 'A1', 'AttributeName.2' : 'A2', 'AttributeName.3' : 'A3', @@ -880,7 +898,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { attributeNames: ['A1' ,'A2', 'A3', 'A4', 'A5'], maxNumberOfMessages : 5, //TODO: AWS SDK update messageAttributeNames: ['MA1' ,'MA2', 'MA3', 'MA4', 'MA5'], - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, visibilityTimeout : 4, waitTimeSeconds : 3 ); @@ -950,12 +968,13 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { Map parameterMap; // RemovePermission bean = new RemovePermissionType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, label: 'testLabel' ); parameterMap = [ + 'QueueUrl' : QUEUE_URL, Label : 'testLabel' ]; bindAndAssertObject(mb, RemovePermissionType.class, "RemovePermission", bean, parameterMap.size()); @@ -970,7 +989,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); RemovePermissionRequest removePermissionRequest = new RemovePermissionRequest( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, label: 'testLabel' ) sqs.removePermission(removePermissionRequest); nettyHttpServer.shutdown(); @@ -1115,7 +1134,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { bean = new SendMessageType( delaySeconds: 5, messageBody: 'This is the body of the message', - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, messageAttribute: [ new MessageAttribute(name: 'MA1', value: SendHelper.binaryMessageAttributeValue(0, "Type")), new MessageAttribute(name: 'MA2', value: SendHelper.stringMessageAttributeValue(0, "Type")), @@ -1125,6 +1144,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { ] ); parameterMap = [ + 'QueueUrl' : QUEUE_URL, 'DelaySeconds': '5', 'MessageBody' : 'This is the body of the message' ]; @@ -1151,7 +1171,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { SendMessageRequest sendMessageRequest = new SendMessageRequest( delaySeconds: 5, messageBody: 'This is the body of the message', - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, //TODO: AWS SDK update messageAttributes: [ //TODO: AWS SDK update 'MA1': SendHelper.binaryMessageAttributeValue(0, "Request"), //TODO: AWS SDK update 'MA2': SendHelper.stringMessageAttributeValue(0, "Request"), @@ -1176,7 +1196,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { // SendMessageBatch bean = new SendMessageBatchType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, sendMessageBatchRequestEntry: [] ); for (int i = 1; i <= 5; i++) { @@ -1195,7 +1215,9 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { ) ); } - parameterMap = [:]; + parameterMap = [ + 'QueueUrl' : QUEUE_URL + ]; for (int i = 1; i <= 5; i++) { parameterMap.put("SendMessageBatchRequestEntry." + i + ".Id", 'id' + i); parameterMap.put("SendMessageBatchRequestEntry." + i + ".DelaySeconds", '' + i); @@ -1255,7 +1277,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); SendMessageBatchRequest sendMessageBatchRequest = new SendMessageBatchRequest( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, entries: [] ); for (int i = 1; i <= 5; i++) { @@ -1316,7 +1338,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { Map parameterMap; // SetQueueAttributes bean = new SetQueueAttributesType( - queueUrl: QUEUE_URL, // does not bind + queueUrl: QUEUE_URL, attribute: [ new Attribute( name: 'A', value: 'B'), new Attribute( name: 'C', value: 'D') @@ -1324,6 +1346,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { ); parameterMap = [ + 'QueueUrl' : QUEUE_URL, 'Attribute.1.Name' : 'A', 'Attribute.1.Value' : 'B', 'Attribute.2.Name' : 'C', @@ -1341,7 +1364,7 @@ class SimpleQueueQueryBindingTest extends QueryBindingTestSupport { AmazonSQSClient sqs = new AmazonSQSClient(new BasicAWSCredentials("", "")); sqs.setEndpoint(NETTY_ENDPOINT); SetQueueAttributesRequest setQueueAttributesRequest = new SetQueueAttributesRequest( - queueUrl: QUEUE_URL, // does bind + queueUrl: QUEUE_URL, attributes: ['A':'B', 'C':'D'] ) sqs.setQueueAttributes(setQueueAttributesRequest);