From b313144f80fbb27546c6528d4398a202c0e2f63e Mon Sep 17 00:00:00 2001 From: Jaroslaw Strzelecki Date: Sun, 23 Apr 2017 23:25:30 +0200 Subject: [PATCH] SQSMessage: do not parse ReceiveCount attribute if it is not set --- .../sqs/javamessaging/message/SQSMessage.java | 5 +++-- .../message/SQSTextMessageTest.java | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/amazon/sqs/javamessaging/message/SQSMessage.java b/src/main/java/com/amazon/sqs/javamessaging/message/SQSMessage.java index b7503f7..328f0e2 100644 --- a/src/main/java/com/amazon/sqs/javamessaging/message/SQSMessage.java +++ b/src/main/java/com/amazon/sqs/javamessaging/message/SQSMessage.java @@ -113,9 +113,10 @@ public class SQSMessage implements Message { sqsMessageID = sqsMessage.getMessageId(); this.messageID = String.format(MESSAGE_ID_FORMAT,sqsMessageID); Map systemAttributes = sqsMessage.getAttributes(); - int receiveCount = Integer.parseInt(systemAttributes.get(APPROXIMATE_RECEIVE_COUNT)); + String receiveCountAttrib = systemAttributes.get(APPROXIMATE_RECEIVE_COUNT); + int receiveCount = receiveCountAttrib == null ? 0 : Integer.parseInt(receiveCountAttrib); - /** + /* * JMSXDeliveryCount is set based on SQS ApproximateReceiveCount * attribute. */ diff --git a/src/test/java/com/amazon/sqs/javamessaging/message/SQSTextMessageTest.java b/src/test/java/com/amazon/sqs/javamessaging/message/SQSTextMessageTest.java index bb0ab46..07ff332 100644 --- a/src/test/java/com/amazon/sqs/javamessaging/message/SQSTextMessageTest.java +++ b/src/test/java/com/amazon/sqs/javamessaging/message/SQSTextMessageTest.java @@ -16,9 +16,11 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import static org.mockito.Mockito.mock; import javax.jms.JMSException; +import com.amazon.sqs.javamessaging.acknowledge.Acknowledger; import org.junit.Test; import com.amazon.sqs.javamessaging.message.SQSTextMessage; @@ -49,6 +51,22 @@ public void testCreateMessageWithText() throws JMSException { assertEquals(expectedPayload, actualPayload); } + /** + * Test create message from SQS Message + */ + @Test + public void testCreateMessageFromSQSMessage() throws JMSException { + String messageBody = "theBody"; + com.amazonaws.services.sqs.model.Message message = + new com.amazonaws.services.sqs.model.Message().withBody(messageBody); + Acknowledger acknowledger = mock(Acknowledger.class); + + SQSTextMessage sqsTextMessage = new SQSTextMessage(acknowledger, "theQueueUrl", message); + + assertEquals(messageBody, sqsTextMessage.getText()); + } + + /** * Test create message and setting text */