diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java
index f7bca1e7a3..0e9a66f7de 100644
--- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java
+++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2011 the original author or authors.
+ * Copyright 2002-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,13 +25,15 @@ import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.integration.config.xml.IntegrationNamespaceUtils;
+import org.springframework.integration.jms.JmsMessageDrivenEndpoint;
import org.springframework.util.StringUtils;
/**
* Parser for the <message-driven-channel-adapter> element and the
* <inbound-gateway> element of the 'jms' namespace.
- *
+ *
* @author Mark Fisher
+ * @author Michael Bannister
*/
public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinitionParser {
@@ -60,7 +62,7 @@ public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinition
"receive-timeout", "recovery-interval",
"idle-consumer-limit", "idle-task-execution-limit",
"cache-level", "subscription-durable", "durable-subscription-name",
- "client-id"
+ "client-id", "task-executor"
};
@@ -74,7 +76,7 @@ public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinition
@Override
protected String getBeanClassName(Element element) {
- return "org.springframework.integration.jms.JmsMessageDrivenEndpoint";
+ return JmsMessageDrivenEndpoint.class.getName();
}
@Override
@@ -141,6 +143,7 @@ public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinition
}
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "destination-resolver");
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "transaction-manager");
+ IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "task-executor");
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "selector", "messageSelector");
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "concurrent-consumers");
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "max-concurrent-consumers");
@@ -203,7 +206,7 @@ public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinition
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "header-mapper");
BeanDefinition beanDefinition = builder.getBeanDefinition();
String beanName = BeanDefinitionReaderUtils.generateBeanName(beanDefinition, parserContext.getRegistry());
- BeanComponentDefinition component = new BeanComponentDefinition(beanDefinition, beanName);
+ BeanComponentDefinition component = new BeanComponentDefinition(beanDefinition, beanName);
parserContext.registerBeanComponent(component);
return beanName;
}
diff --git a/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-3.0.xsd b/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-3.0.xsd
index 21b5f39459..10c1ff8a21 100644
--- a/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-3.0.xsd
+++ b/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-3.0.xsd
@@ -441,6 +441,19 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageDrivenChannelAdapterParserTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageDrivenChannelAdapterParserTests.java
index f7a172af13..6c4d094a33 100644
--- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageDrivenChannelAdapterParserTests.java
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageDrivenChannelAdapterParserTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2011 the original author or authors.
+ * Copyright 2002-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@ package org.springframework.integration.jms.config;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
import java.util.Properties;
@@ -36,6 +37,7 @@ import org.springframework.jms.support.destination.JmsDestinationAccessor;
/**
* @author Mark Fisher
+ * @author Michael Bannister
*/
public class JmsMessageDrivenChannelAdapterParserTests {
@@ -81,6 +83,17 @@ public class JmsMessageDrivenChannelAdapterParserTests {
endpoint.stop();
}
+ @Test
+ public void adapterWithTaskExecutor() {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
+ "jmsInboundWithTaskExecutor.xml", this.getClass());
+ JmsMessageDrivenEndpoint endpoint = context.getBean("messageDrivenAdapter", JmsMessageDrivenEndpoint.class);
+ DefaultMessageListenerContainer container = TestUtils.getPropertyValue(endpoint, "listenerContainer",
+ DefaultMessageListenerContainer.class);
+ assertSame(context.getBean("exec"), TestUtils.getPropertyValue(container, "taskExecutor"));
+ endpoint.stop();
+ }
+
@Test
public void testGatewayWithReceiveTimeout() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithTaskExecutor.xml b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithTaskExecutor.xml
new file mode 100644
index 0000000000..165f3d1c35
--- /dev/null
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithTaskExecutor.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/reference/docbook/whats-new.xml b/src/reference/docbook/whats-new.xml
index 478e0ef08f..fd05f895ae 100644
--- a/src/reference/docbook/whats-new.xml
+++ b/src/reference/docbook/whats-new.xml
@@ -191,6 +191,16 @@
For more information see .
+
+ JMS Message Driven Channel Adapter
+
+ Previously, when configuring a <message-driven-channel-adapter/>, if you wished to
+ use a specific TaskExecutor, it was necessary to declare a container
+ bean and provide it to the adapter using the container attribute. The
+ task-executor is now provided, allowing it to be set directly on the adapter. This is
+ in addition to several other container attributes that were already available.
+
+
SqlReturnType support for Stored Procedure components