diff --git a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsInboundGatewayParser.java b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java
similarity index 81%
rename from org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsInboundGatewayParser.java
rename to org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java
index d09c668b40..67a902e4d3 100644
--- a/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsInboundGatewayParser.java
+++ b/org.springframework.integration.jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java
@@ -32,11 +32,12 @@ import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
- * Parser for the <inbound-gateway> element of the 'jms' integration namespace.
+ * Parser for the <message-driven-channel-adapter> element and the
+ * <inbound-gateway> element of the 'jms' namespace.
*
* @author Mark Fisher
*/
-public class JmsInboundGatewayParser extends AbstractSingleBeanDefinitionParser {
+public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinitionParser {
private static String[] containerAttributes = new String[] {
JmsAdapterParserUtils.CONNECTION_FACTORY_PROPERTY,
@@ -48,6 +49,14 @@ public class JmsInboundGatewayParser extends AbstractSingleBeanDefinitionParser
};
+ private final boolean expectReply;
+
+
+ public JmsMessageDrivenEndpointParser(boolean expectReply) {
+ this.expectReply = expectReply;
+ }
+
+
@Override
protected Class> getBeanClass(Element element) {
return JmsMessageDrivenEndpoint.class;
@@ -116,14 +125,21 @@ public class JmsInboundGatewayParser extends AbstractSingleBeanDefinitionParser
private String parseMessageListener(Element element, ParserContext parserContext) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ChannelPublishingJmsMessageListener.class);
- builder.addPropertyValue("expectReply", true);
- IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "request-channel");
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "request-timeout");
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "reply-timeout");
+ builder.addPropertyValue("expectReply", this.expectReply);
+ if (this.expectReply) {
+ IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "request-channel");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "request-timeout");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "reply-timeout");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "extract-request-payload");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "extract-reply-payload");
+ }
+ else {
+ IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "channel", "requestChannel");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "send-timeout", "requestTimeout");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "extract-payload", "extractRequestPayload");
+ }
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "message-converter");
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "header-mapper");
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "extract-request-payload");
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "extract-reply-payload");
return BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry());
}
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 3742aa0aa7..50bd601d12 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
@@ -28,7 +28,8 @@ import org.springframework.integration.jms.JmsHeaders;
public class JmsNamespaceHandler extends NamespaceHandlerSupport {
public void init() {
- this.registerBeanDefinitionParser("inbound-gateway", new JmsInboundGatewayParser());
+ this.registerBeanDefinitionParser("inbound-gateway", new JmsMessageDrivenEndpointParser(true));
+ this.registerBeanDefinitionParser("message-driven-channel-adapter", new JmsMessageDrivenEndpointParser(false));
this.registerBeanDefinitionParser("inbound-channel-adapter", new JmsInboundChannelAdapterParser());
this.registerBeanDefinitionParser("outbound-gateway", new JmsOutboundGatewayParser());
this.registerBeanDefinitionParser("outbound-channel-adapter", new JmsOutboundChannelAdapterParser());
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 74fb26d8f5..667b28e6c2 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
@@ -18,10 +18,35 @@
]]>
+
+
+
+ Defines a JMS Message-Driven inbound Channel Adapter.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- Defines a JMS-based inbound Channel Adapter.
+ Defines an inbound Channel Adapter for polling a JMS Destination.