INT-1229 JMSExceptions thrown when trying to read unsupported JMS properties no longer cause the rest of the properties (e.g. user-defined String, Long, Object, etc. properties) to be skipped when mapping to MessageHeaders.
This commit is contained in:
@@ -127,22 +127,47 @@ public class DefaultJmsHeaderMapper implements JmsHeaderMapper {
|
||||
public Map<String, Object> toHeaders(javax.jms.Message jmsMessage) {
|
||||
Map<String, Object> headers = new HashMap<String, Object>();
|
||||
try {
|
||||
String messageId = jmsMessage.getJMSMessageID();
|
||||
if (messageId != null) {
|
||||
headers.put(JmsHeaders.MESSAGE_ID, messageId);
|
||||
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);
|
||||
catch (Exception e) {
|
||||
logger.info("failed to read JMSMessageID property, skipping", e);
|
||||
}
|
||||
Destination replyTo = jmsMessage.getJMSReplyTo();
|
||||
if (replyTo != null) {
|
||||
headers.put(JmsHeaders.REPLY_TO, replyTo);
|
||||
try {
|
||||
String correlationId = jmsMessage.getJMSCorrelationID();
|
||||
if (correlationId != null) {
|
||||
headers.put(JmsHeaders.CORRELATION_ID, correlationId);
|
||||
}
|
||||
}
|
||||
headers.put(JmsHeaders.REDELIVERED, jmsMessage.getJMSRedelivered());
|
||||
String type = jmsMessage.getJMSType();
|
||||
if (type != null) {
|
||||
headers.put(JmsHeaders.TYPE, type);
|
||||
catch (Exception e) {
|
||||
logger.info("failed to read JMSCorrelationID property, skipping", e);
|
||||
}
|
||||
try {
|
||||
Destination replyTo = jmsMessage.getJMSReplyTo();
|
||||
if (replyTo != null) {
|
||||
headers.put(JmsHeaders.REPLY_TO, replyTo);
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.info("failed to read JMSReplyTo property, skipping", e);
|
||||
}
|
||||
try {
|
||||
headers.put(JmsHeaders.REDELIVERED, jmsMessage.getJMSRedelivered());
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.info("failed to read JMSRedelivered property, skipping", e);
|
||||
}
|
||||
try {
|
||||
String type = jmsMessage.getJMSType();
|
||||
if (type != null) {
|
||||
headers.put(JmsHeaders.TYPE, type);
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.info("failed to read JMSType property, skipping", e);
|
||||
}
|
||||
Enumeration<?> jmsPropertyNames = jmsMessage.getPropertyNames();
|
||||
if (jmsPropertyNames != null) {
|
||||
|
||||
@@ -264,7 +264,7 @@ public class DefaultJmsHeaderMapperTests {
|
||||
javax.jms.Message jmsMessage = new StubTextMessage() {
|
||||
@Override
|
||||
public void setJMSReplyTo(Destination replyTo) throws JMSException {
|
||||
throw new IllegalArgumentException("illegal property");
|
||||
throw new JMSException("illegal property");
|
||||
}
|
||||
};
|
||||
mapper.fromHeaders(message.getHeaders(), jmsMessage);
|
||||
@@ -283,7 +283,7 @@ public class DefaultJmsHeaderMapperTests {
|
||||
javax.jms.Message jmsMessage = new StubTextMessage() {
|
||||
@Override
|
||||
public void setJMSType(String type) throws JMSException {
|
||||
throw new IllegalArgumentException("illegal property");
|
||||
throw new JMSException("illegal property");
|
||||
}
|
||||
};
|
||||
mapper.fromHeaders(message.getHeaders(), jmsMessage);
|
||||
@@ -302,7 +302,7 @@ public class DefaultJmsHeaderMapperTests {
|
||||
javax.jms.Message jmsMessage = new StubTextMessage() {
|
||||
@Override
|
||||
public void setJMSCorrelationID(String correlationId) throws JMSException {
|
||||
throw new IllegalArgumentException("illegal property");
|
||||
throw new JMSException("illegal property");
|
||||
}
|
||||
};
|
||||
mapper.fromHeaders(message.getHeaders(), jmsMessage);
|
||||
@@ -321,7 +321,7 @@ public class DefaultJmsHeaderMapperTests {
|
||||
javax.jms.Message jmsMessage = new StubTextMessage() {
|
||||
@Override
|
||||
public void setJMSCorrelationID(String correlationId) throws JMSException {
|
||||
throw new IllegalArgumentException("illegal property");
|
||||
throw new JMSException("illegal property");
|
||||
}
|
||||
};
|
||||
mapper.fromHeaders(message.getHeaders(), jmsMessage);
|
||||
@@ -330,4 +330,84 @@ public class DefaultJmsHeaderMapperTests {
|
||||
assertEquals("bar", jmsMessage.getStringProperty("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void attemptToReadDisallowedMessageIdPropertyIsNotFatal() throws JMSException {
|
||||
DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper();
|
||||
javax.jms.Message jmsMessage = new StubTextMessage() {
|
||||
@Override
|
||||
public String getJMSMessageID() throws JMSException {
|
||||
throw new JMSException("illegal property");
|
||||
}
|
||||
};
|
||||
jmsMessage.setStringProperty("foo", "bar");
|
||||
Map<String, Object> headers = mapper.toHeaders(jmsMessage);
|
||||
assertNull(headers.get(JmsHeaders.MESSAGE_ID));
|
||||
assertNotNull(headers.get("foo"));
|
||||
assertEquals("bar", headers.get("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void attemptToReadDisallowedCorrelationIdPropertyIsNotFatal() throws JMSException {
|
||||
DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper();
|
||||
javax.jms.Message jmsMessage = new StubTextMessage() {
|
||||
@Override
|
||||
public String getJMSCorrelationID() throws JMSException {
|
||||
throw new JMSException("illegal property");
|
||||
}
|
||||
};
|
||||
jmsMessage.setStringProperty("foo", "bar");
|
||||
Map<String, Object> headers = mapper.toHeaders(jmsMessage);
|
||||
assertNull(headers.get(JmsHeaders.CORRELATION_ID));
|
||||
assertNotNull(headers.get("foo"));
|
||||
assertEquals("bar", headers.get("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void attemptToReadDisallowedTypePropertyIsNotFatal() throws JMSException {
|
||||
DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper();
|
||||
javax.jms.Message jmsMessage = new StubTextMessage() {
|
||||
@Override
|
||||
public String getJMSType() throws JMSException {
|
||||
throw new JMSException("illegal property");
|
||||
}
|
||||
};
|
||||
jmsMessage.setStringProperty("foo", "bar");
|
||||
Map<String, Object> headers = mapper.toHeaders(jmsMessage);
|
||||
assertNull(headers.get(JmsHeaders.TYPE));
|
||||
assertNotNull(headers.get("foo"));
|
||||
assertEquals("bar", headers.get("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void attemptToReadDisallowedReplyToPropertyIsNotFatal() throws JMSException {
|
||||
DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper();
|
||||
javax.jms.Message jmsMessage = new StubTextMessage() {
|
||||
@Override
|
||||
public Destination getJMSReplyTo() throws JMSException {
|
||||
throw new JMSException("illegal property");
|
||||
}
|
||||
};
|
||||
jmsMessage.setStringProperty("foo", "bar");
|
||||
Map<String, Object> headers = mapper.toHeaders(jmsMessage);
|
||||
assertNull(headers.get(JmsHeaders.REPLY_TO));
|
||||
assertNotNull(headers.get("foo"));
|
||||
assertEquals("bar", headers.get("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void attemptToReadDisallowedRedeliveredPropertyIsNotFatal() throws JMSException {
|
||||
DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper();
|
||||
javax.jms.Message jmsMessage = new StubTextMessage() {
|
||||
@Override
|
||||
public boolean getJMSRedelivered() throws JMSException {
|
||||
throw new JMSException("illegal property");
|
||||
}
|
||||
};
|
||||
jmsMessage.setStringProperty("foo", "bar");
|
||||
Map<String, Object> headers = mapper.toHeaders(jmsMessage);
|
||||
assertNull(headers.get(JmsHeaders.REDELIVERED));
|
||||
assertNotNull(headers.get("foo"));
|
||||
assertEquals("bar", headers.get("foo"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user