From 9d1403463b43e2ca74da7e84f7eaaf9403dbdf2a Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Thu, 8 Jan 2009 21:30:01 +0000 Subject: [PATCH] JMSMessageID is now copied to the Spring Integration Message's headers with a key whose value is defined in the constant: JmsHeaders.MESSAGE_ID (INT-543). --- .../integration/jms/DefaultJmsHeaderMapper.java | 4 ++++ .../integration/jms/JmsHeaders.java | 2 ++ .../jms/DefaultJmsHeaderMapperTests.java | 12 ++++++++++++ .../integration/jms/StubTextMessage.java | 15 +++++++++------ 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java index b53ec1b3c3..52f3aaf243 100644 --- a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java +++ b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java @@ -91,6 +91,10 @@ public class DefaultJmsHeaderMapper implements JmsHeaderMapper { public Map toHeaders(javax.jms.Message jmsMessage) { Map headers = new HashMap(); try { + String messageId = jmsMessage.getJMSMessageID(); + if (messageId != null) { + headers.put(JmsHeaders.MESSAGE_ID, messageId); + } String correlationId = jmsMessage.getJMSCorrelationID(); if (correlationId != null) { headers.put(JmsHeaders.CORRELATION_ID, correlationId); diff --git a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/JmsHeaders.java b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/JmsHeaders.java index 35cc633878..f40a9317ef 100644 --- a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/JmsHeaders.java +++ b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/JmsHeaders.java @@ -31,6 +31,8 @@ public abstract class JmsHeaders { */ public static final String PREFIX = MessageHeaders.PREFIX + "jms_"; + public static final String MESSAGE_ID = PREFIX + "messageId"; + public static final String CORRELATION_ID = PREFIX + "correlationId"; public static final String REPLY_TO = PREFIX + "replyTo"; diff --git a/org.springframework.integration.jms/src/test/java/org/springframework/integration/jms/DefaultJmsHeaderMapperTests.java b/org.springframework.integration.jms/src/test/java/org/springframework/integration/jms/DefaultJmsHeaderMapperTests.java index b7e4507e93..7edde82480 100644 --- a/org.springframework.integration.jms/src/test/java/org/springframework/integration/jms/DefaultJmsHeaderMapperTests.java +++ b/org.springframework.integration.jms/src/test/java/org/springframework/integration/jms/DefaultJmsHeaderMapperTests.java @@ -143,6 +143,18 @@ public class DefaultJmsHeaderMapperTests { assertSame(replyTo, attrib); } + @Test + public void testJmsMessageIdMappedToHeader() throws JMSException { + String messageId = "ID:ABC-123"; + javax.jms.Message jmsMessage = new StubTextMessage(); + jmsMessage.setJMSMessageID(messageId); + DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); + Map headers = mapper.toHeaders(jmsMessage); + Object attrib = headers.get(JmsHeaders.MESSAGE_ID); + assertNotNull(attrib); + assertSame(messageId, attrib); + } + @Test public void testJmsCorrelationIdMappedToHeader() throws JMSException { String correlationId = "ABC-123"; diff --git a/org.springframework.integration.jms/src/test/java/org/springframework/integration/jms/StubTextMessage.java b/org.springframework.integration.jms/src/test/java/org/springframework/integration/jms/StubTextMessage.java index 90dd8a55bf..3a26831c3d 100644 --- a/org.springframework.integration.jms/src/test/java/org/springframework/integration/jms/StubTextMessage.java +++ b/org.springframework.integration.jms/src/test/java/org/springframework/integration/jms/StubTextMessage.java @@ -29,7 +29,9 @@ public class StubTextMessage implements TextMessage { private Destination replyTo; - private String correlationID; + private String messageId; + + private String correlationId; private String type; @@ -74,7 +76,7 @@ public class StubTextMessage implements TextMessage { } public String getJMSCorrelationID() throws JMSException { - return this.correlationID; + return this.correlationId; } public byte[] getJMSCorrelationIDAsBytes() throws JMSException { @@ -94,7 +96,7 @@ public class StubTextMessage implements TextMessage { } public String getJMSMessageID() throws JMSException { - return null; + return this.messageId; } public int getJMSPriority() throws JMSException { @@ -125,7 +127,7 @@ public class StubTextMessage implements TextMessage { return this.properties.get(name); } - public Enumeration getPropertyNames() throws JMSException { + public Enumeration getPropertyNames() throws JMSException { return this.properties.keys(); } @@ -161,8 +163,8 @@ public class StubTextMessage implements TextMessage { this.properties.put(name, value); } - public void setJMSCorrelationID(String correlationID) throws JMSException { - this.correlationID = correlationID; + public void setJMSCorrelationID(String correlationId) throws JMSException { + this.correlationId = correlationId; } public void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException { @@ -178,6 +180,7 @@ public class StubTextMessage implements TextMessage { } public void setJMSMessageID(String id) throws JMSException { + this.messageId = id; } public void setJMSPriority(int priority) throws JMSException {