diff --git a/spring-integration-adapters/src/main/java/META-INF/spring-integration.parsers b/spring-integration-adapters/src/main/java/META-INF/spring-integration.parsers index 737428df65..ac1e1f6beb 100644 --- a/spring-integration-adapters/src/main/java/META-INF/spring-integration.parsers +++ b/spring-integration-adapters/src/main/java/META-INF/spring-integration.parsers @@ -6,7 +6,7 @@ ftp-source=org.springframework.integration.adapter.ftp.config.FtpSourceParser httpinvoker-source=org.springframework.integration.adapter.httpinvoker.config.HttpInvokerSourceAdapterParser httpinvoker-target=org.springframework.integration.adapter.httpinvoker.config.HttpInvokerTargetAdapterParser jms-source=org.springframework.integration.adapter.jms.config.JmsSourceAdapterParser -jms-target=org.springframework.integration.adapter.jms.config.JmsTargetAdapterParser +jms-target=org.springframework.integration.adapter.jms.config.JmsTargetParser mail-target=org.springframework.integration.adapter.mail.config.MailTargetParser rmi-source=org.springframework.integration.adapter.rmi.config.RmiSourceAdapterParser rmi-target=org.springframework.integration.adapter.rmi.config.RmiTargetAdapterParser \ No newline at end of file diff --git a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd index e7a040d2c7..6cab322f6d 100644 --- a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd +++ b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd @@ -95,7 +95,7 @@ - Defines a jms-based target channel adapter. + Defines a target that sends JMS Messages. @@ -103,7 +103,6 @@ - diff --git a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsTargetAdapter.java b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsTarget.java similarity index 76% rename from spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsTargetAdapter.java rename to spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsTarget.java index db2c98bd6f..91c8844000 100644 --- a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsTargetAdapter.java +++ b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/JmsTarget.java @@ -24,25 +24,25 @@ import org.springframework.integration.message.Target; import org.springframework.jms.core.JmsTemplate; /** - * A target adapter for sending JMS Messages. + * A target for sending JMS Messages. * * @author Mark Fisher */ -public class JmsTargetAdapter extends AbstractJmsTemplateBasedAdapter implements Target { +public class JmsTarget extends AbstractJmsTemplateBasedAdapter implements Target { - public JmsTargetAdapter(JmsTemplate jmsTemplate) { + public JmsTarget(JmsTemplate jmsTemplate) { super(jmsTemplate); } - public JmsTargetAdapter(ConnectionFactory connectionFactory, Destination destination) { + public JmsTarget(ConnectionFactory connectionFactory, Destination destination) { super(connectionFactory, destination); } - public JmsTargetAdapter(ConnectionFactory connectionFactory, String destinationName) { + public JmsTarget(ConnectionFactory connectionFactory, String destinationName) { super(connectionFactory, destinationName); } - public JmsTargetAdapter() { + public JmsTarget() { super(); } diff --git a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsAdapterParserUtils.java b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsAdapterParserUtils.java index 6df81f1368..09ab7026e1 100644 --- a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsAdapterParserUtils.java +++ b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsAdapterParserUtils.java @@ -44,10 +44,6 @@ public abstract class JmsAdapterParserUtils { public static final String DESTINATION_NAME_PROPERTY = "destinationName"; - public static final String CHANNEL_ATTRIBUTE = "channel"; - - public static final String CHANNEL_PROPERTY = "channel"; - public static String determineConnectionFactoryBeanName(Element element) { String connectionFactoryBeanName = "connectionFactory"; diff --git a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsTargetAdapterParser.java b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsTargetParser.java similarity index 58% rename from spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsTargetAdapterParser.java rename to spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsTargetParser.java index 4a22ed9f4c..28989f1f2c 100644 --- a/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsTargetAdapterParser.java +++ b/spring-integration-adapters/src/main/java/org/springframework/integration/adapter/jms/config/JmsTargetParser.java @@ -19,15 +19,10 @@ package org.springframework.integration.adapter.jms.config; import org.w3c.dom.Element; import org.springframework.beans.factory.BeanCreationException; -import org.springframework.beans.factory.config.RuntimeBeanReference; -import org.springframework.beans.factory.parsing.BeanComponentDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.integration.adapter.jms.JmsTargetAdapter; -import org.springframework.integration.endpoint.TargetEndpoint; -import org.springframework.integration.scheduling.Subscription; +import org.springframework.integration.adapter.jms.JmsTarget; import org.springframework.util.StringUtils; /** @@ -35,13 +30,10 @@ import org.springframework.util.StringUtils; * * @author Mark Fisher */ -public class JmsTargetAdapterParser extends AbstractSingleBeanDefinitionParser { - - private static final String SUBSCRIPTION_PROPERTY = "subscription"; - +public class JmsTargetParser extends AbstractSingleBeanDefinitionParser { protected Class getBeanClass(Element element) { - return TargetEndpoint.class; + return JmsTarget.class; } protected boolean shouldGenerateId() { @@ -56,7 +48,6 @@ public class JmsTargetAdapterParser extends AbstractSingleBeanDefinitionParser { String jmsTemplate = element.getAttribute(JmsAdapterParserUtils.JMS_TEMPLATE_ATTRIBUTE); String destination = element.getAttribute(JmsAdapterParserUtils.DESTINATION_ATTRIBUTE); String destinationName = element.getAttribute(JmsAdapterParserUtils.DESTINATION_NAME_ATTRIBUTE); - RootBeanDefinition adapterDef = new RootBeanDefinition(JmsTargetAdapter.class); if (StringUtils.hasText(jmsTemplate)) { if (element.hasAttribute(JmsAdapterParserUtils.CONNECTION_FACTORY_ATTRIBUTE) || element.hasAttribute(JmsAdapterParserUtils.DESTINATION_ATTRIBUTE) || @@ -64,31 +55,22 @@ public class JmsTargetAdapterParser extends AbstractSingleBeanDefinitionParser { throw new BeanCreationException("when providing a 'jms-template' reference, none of " + "'connection-factory', 'destination', or 'destination-name' should be provided."); } - adapterDef.getPropertyValues().addPropertyValue( - JmsAdapterParserUtils.JMS_TEMPLATE_PROPERTY, new RuntimeBeanReference(jmsTemplate)); + builder.addPropertyReference(JmsAdapterParserUtils.JMS_TEMPLATE_PROPERTY, jmsTemplate); } else if (StringUtils.hasText(destination) ^ StringUtils.hasText(destinationName)) { - adapterDef.getPropertyValues().addPropertyValue(JmsAdapterParserUtils.CONNECTION_FACTORY_PROPERTY, - new RuntimeBeanReference(JmsAdapterParserUtils.determineConnectionFactoryBeanName(element))); + builder.addPropertyReference(JmsAdapterParserUtils.CONNECTION_FACTORY_PROPERTY, + JmsAdapterParserUtils.determineConnectionFactoryBeanName(element)); if (StringUtils.hasText(destination)) { - adapterDef.getPropertyValues().addPropertyValue( - JmsAdapterParserUtils.DESTINATION_PROPERTY, new RuntimeBeanReference(destination)); + builder.addPropertyReference(JmsAdapterParserUtils.DESTINATION_PROPERTY, destination); } else { - adapterDef.getPropertyValues().addPropertyValue( - JmsAdapterParserUtils.DESTINATION_NAME_PROPERTY, destinationName); + builder.addPropertyValue(JmsAdapterParserUtils.DESTINATION_NAME_PROPERTY, destinationName); } } else { throw new BeanCreationException("Either a 'jms-template' reference or " + "one of 'destination' or 'destination-name' attributes must be provided."); } - String channel = element.getAttribute(JmsAdapterParserUtils.CHANNEL_ATTRIBUTE); - Subscription subscription = new Subscription(channel); - String adapterBeanName = parserContext.getReaderContext().generateBeanName(adapterDef); - parserContext.registerBeanComponent(new BeanComponentDefinition(adapterDef, adapterBeanName)); - builder.addConstructorArgReference(adapterBeanName); - builder.addPropertyValue(SUBSCRIPTION_PROPERTY, subscription); } } diff --git a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/JmsTargetAdapterParserTests.java b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/JmsTargetAdapterParserTests.java deleted file mode 100644 index acab2e5e4c..0000000000 --- a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/JmsTargetAdapterParserTests.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2002-2008 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.integration.adapter.jms.config; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - -import org.springframework.beans.factory.BeanCreationException; -import org.springframework.beans.factory.BeanDefinitionStoreException; -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.integration.adapter.jms.JmsTargetAdapter; -import org.springframework.integration.endpoint.TargetEndpoint; - -/** - * @author Mark Fisher - */ -public class JmsTargetAdapterParserTests { - - @Test - public void testTargetAdapterWithConnectionFactoryAndDestination() { - ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( - "targetAdapterWithConnectionFactoryAndDestination.xml", this.getClass()); - TargetEndpoint endpoint = (TargetEndpoint) context.getBean("adapter"); - assertEquals(JmsTargetAdapter.class, endpoint.getTarget().getClass()); - assertEquals("adapter", endpoint.getName()); - assertEquals("testChannel", endpoint.getSubscription().getChannelName()); - } - - @Test - public void testTargetAdapterWithConnectionFactoryAndDestinationName() { - ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( - "targetAdapterWithConnectionFactoryAndDestinationName.xml", this.getClass()); - TargetEndpoint endpoint = (TargetEndpoint) context.getBean("adapter"); - assertEquals(JmsTargetAdapter.class, endpoint.getTarget().getClass()); - assertEquals("adapter", endpoint.getName()); - assertEquals("testChannel", endpoint.getSubscription().getChannelName()); - } - - @Test - public void testTargetAdapterWithDefaultConnectionFactory() { - ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( - "targetAdapterWithDefaultConnectionFactory.xml", this.getClass()); - TargetEndpoint endpoint = (TargetEndpoint) context.getBean("adapter"); - assertEquals(JmsTargetAdapter.class, endpoint.getTarget().getClass()); - assertEquals("adapter", endpoint.getName()); - assertEquals("testChannel", endpoint.getSubscription().getChannelName()); - } - - @Test(expected=BeanDefinitionStoreException.class) - public void testTargetAdapterWithEmptyConnectionFactory() { - try { - new ClassPathXmlApplicationContext("targetAdapterWithEmptyConnectionFactory.xml", this.getClass()); - } - catch (RuntimeException e) { - assertEquals(BeanCreationException.class, e.getCause().getClass()); - throw e; - } - } - -} diff --git a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/JmsTargetParserTests.java b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/JmsTargetParserTests.java new file mode 100644 index 0000000000..0ed5de6263 --- /dev/null +++ b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/JmsTargetParserTests.java @@ -0,0 +1,73 @@ +/* + * Copyright 2002-2008 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.integration.adapter.jms.config; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.junit.Test; + +import org.springframework.beans.DirectFieldAccessor; +import org.springframework.beans.factory.BeanCreationException; +import org.springframework.beans.factory.BeanDefinitionStoreException; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.adapter.jms.JmsTarget; + +/** + * @author Mark Fisher + */ +public class JmsTargetParserTests { + + @Test + public void testTargetWithConnectionFactoryAndDestination() { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + "targetWithConnectionFactoryAndDestination.xml", this.getClass()); + JmsTarget target = (JmsTarget) context.getBean("target"); + DirectFieldAccessor accessor = new DirectFieldAccessor(target); + assertNotNull(accessor.getPropertyValue("jmsTemplate")); + } + + @Test + public void testTargetWithConnectionFactoryAndDestinationName() { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + "targetWithConnectionFactoryAndDestinationName.xml", this.getClass()); + JmsTarget target = (JmsTarget) context.getBean("target"); + DirectFieldAccessor accessor = new DirectFieldAccessor(target); + assertNotNull(accessor.getPropertyValue("jmsTemplate")); + } + + @Test + public void testTargetWithDefaultConnectionFactory() { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + "targetWithDefaultConnectionFactory.xml", this.getClass()); + JmsTarget target = (JmsTarget) context.getBean("target"); + DirectFieldAccessor accessor = new DirectFieldAccessor(target); + assertNotNull(accessor.getPropertyValue("jmsTemplate")); + } + + @Test(expected=BeanDefinitionStoreException.class) + public void testTargetWithEmptyConnectionFactory() { + try { + new ClassPathXmlApplicationContext("targetWithEmptyConnectionFactory.xml", this.getClass()); + } + catch (RuntimeException e) { + assertEquals(BeanCreationException.class, e.getCause().getClass()); + throw e; + } + } + +} diff --git a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithConnectionFactoryAndDestination.xml b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithConnectionFactoryAndDestination.xml similarity index 84% rename from spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithConnectionFactoryAndDestination.xml rename to spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithConnectionFactoryAndDestination.xml index 8ac84bd1c0..892d81da6d 100644 --- a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithConnectionFactoryAndDestination.xml +++ b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithConnectionFactoryAndDestination.xml @@ -7,14 +7,9 @@ http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-1.0.xsd"> - - - - - + destination="testDestination"/> diff --git a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithConnectionFactoryAndDestinationName.xml b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithConnectionFactoryAndDestinationName.xml similarity index 83% rename from spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithConnectionFactoryAndDestinationName.xml rename to spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithConnectionFactoryAndDestinationName.xml index 5af2d57821..4c4bf52f81 100644 --- a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithConnectionFactoryAndDestinationName.xml +++ b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithConnectionFactoryAndDestinationName.xml @@ -7,14 +7,9 @@ http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-1.0.xsd"> - - - - - + destination-name="queue.test"/> diff --git a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithDefaultConnectionFactory.xml b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithDefaultConnectionFactory.xml similarity index 83% rename from spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithDefaultConnectionFactory.xml rename to spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithDefaultConnectionFactory.xml index d08a6b0f79..60f241e5d8 100644 --- a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithDefaultConnectionFactory.xml +++ b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithDefaultConnectionFactory.xml @@ -7,13 +7,7 @@ http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-1.0.xsd"> - - - - - + diff --git a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithEmptyConnectionFactory.xml b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithEmptyConnectionFactory.xml similarity index 78% rename from spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithEmptyConnectionFactory.xml rename to spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithEmptyConnectionFactory.xml index e9f541d3d2..3a3309b383 100644 --- a/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetAdapterWithEmptyConnectionFactory.xml +++ b/spring-integration-adapters/src/test/java/org/springframework/integration/adapter/jms/config/targetWithEmptyConnectionFactory.xml @@ -7,14 +7,9 @@ http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-1.0.xsd"> - - - - - + destination="testDestination"/>