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