From 5e8a3562e154a2f86dad3583726adb9c53a53520 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Mon, 13 Oct 2008 22:47:23 +0000 Subject: [PATCH] Added support for 'header-enricher' in the 'jms' namespace. Enables adding the 'reply-to' and/or 'correlation-id' values (INT-414). --- .../jms/HeaderMappingMessageConverter.java | 11 +++++++++ .../integration/jms/JmsHeaders.java | 8 +++---- .../jms/config/JmsNamespaceHandler.java | 4 ++++ .../jms/config/spring-integration-jms-1.0.xsd | 23 +++++++++++++++++++ 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/HeaderMappingMessageConverter.java b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/HeaderMappingMessageConverter.java index 1927020df3..b70793ecbf 100644 --- a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/HeaderMappingMessageConverter.java +++ b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/HeaderMappingMessageConverter.java @@ -21,6 +21,9 @@ import java.util.Map; import javax.jms.JMSException; import javax.jms.Session; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import org.springframework.integration.adapter.MessageHeaderMapper; import org.springframework.integration.message.Message; import org.springframework.integration.message.MessageBuilder; @@ -37,6 +40,8 @@ import org.springframework.jms.support.converter.SimpleMessageConverter; */ public class HeaderMappingMessageConverter implements MessageConverter { + private final Log logger = LogFactory.getLog(this.getClass()); + private final MessageConverter converter; private final MessageHeaderMapper headerMapper; @@ -56,6 +61,9 @@ public class HeaderMappingMessageConverter implements MessageConverter { Object payload = this.converter.fromMessage(jmsMessage); Map headerMap = this.headerMapper.mapToMessageHeaders(jmsMessage); Message message = MessageBuilder.withPayload(payload).copyHeaders(headerMap).build(); + if (logger.isDebugEnabled()) { + logger.debug("converted JMS Message [" + jmsMessage + "] to integration Message [" + message + "]"); + } return message; } @@ -67,6 +75,9 @@ public class HeaderMappingMessageConverter implements MessageConverter { Message message = (Message) object; javax.jms.Message jmsMessage = this.converter.toMessage(message.getPayload(), session); this.headerMapper.mapFromMessageHeaders(message.getHeaders(), jmsMessage); + if (logger.isDebugEnabled()) { + logger.debug("converted integration Message [" + message + "] to JMS Message [" + jmsMessage + "]"); + } return jmsMessage; } 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 98f9f57ba4..87287cd7d5 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 @@ -35,12 +35,12 @@ public abstract class JmsHeaders { public static final String USER_PREFIX = "spring.integration.user.jms."; - public static final String CORRELATION_ID = TRANSPORT_PREFIX + "JMSCorrelationID"; + public static final String CORRELATION_ID = TRANSPORT_PREFIX + "correlation-id"; - public static final String REPLY_TO = TRANSPORT_PREFIX + "JMSReplyTo"; + public static final String REPLY_TO = TRANSPORT_PREFIX + "reply-to"; - public static final String REDELIVERED = TRANSPORT_PREFIX + "JMSRedelivered"; + public static final String REDELIVERED = TRANSPORT_PREFIX + "redelivered"; - public static final String TYPE = TRANSPORT_PREFIX + "JMSType"; + public static final String TYPE = TRANSPORT_PREFIX + "type"; } diff --git a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsNamespaceHandler.java b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsNamespaceHandler.java index a36614f8ea..4be2bcce01 100644 --- a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsNamespaceHandler.java +++ b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsNamespaceHandler.java @@ -17,6 +17,8 @@ package org.springframework.integration.jms.config; import org.springframework.beans.factory.xml.NamespaceHandlerSupport; +import org.springframework.integration.config.xml.SimpleHeaderEnricherParser; +import org.springframework.integration.jms.JmsHeaders; /** * Namespace handler for Spring Integration's jms namespace. @@ -29,6 +31,8 @@ public class JmsNamespaceHandler extends NamespaceHandlerSupport { this.registerBeanDefinitionParser("jms-gateway", new JmsGatewayParser()); this.registerBeanDefinitionParser("inbound-channel-adapter", new JmsInboundChannelAdapterParser()); this.registerBeanDefinitionParser("outbound-channel-adapter", new JmsOutboundChannelAdapterParser()); + this.registerBeanDefinitionParser("header-enricher", new SimpleHeaderEnricherParser( + JmsHeaders.TRANSPORT_PREFIX, new String[] { "reply-to" })); } } diff --git a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/spring-integration-jms-1.0.xsd b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/spring-integration-jms-1.0.xsd index fecd990b0b..ddd2f0ca94 100644 --- a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/spring-integration-jms-1.0.xsd +++ b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/spring-integration-jms-1.0.xsd @@ -109,6 +109,23 @@ + + + + + Defines a Transformer for adding statically configured JMS Headers. + + + + + + + + + + + + @@ -122,4 +139,10 @@ + + + + + + \ No newline at end of file