diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/bus/ApplicationContextMessageBus.java b/org.springframework.integration/src/main/java/org/springframework/integration/bus/ApplicationContextMessageBus.java index 0d4aa3d576..a4c30d68aa 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/bus/ApplicationContextMessageBus.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/bus/ApplicationContextMessageBus.java @@ -32,9 +32,6 @@ import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.Lifecycle; import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.integration.channel.BeanFactoryChannelResolver; -import org.springframework.integration.channel.ChannelResolver; -import org.springframework.integration.core.MessageChannel; import org.springframework.integration.endpoint.MessageEndpoint; import org.springframework.integration.scheduling.TaskScheduler; import org.springframework.integration.scheduling.TaskSchedulerAware; @@ -50,7 +47,7 @@ import org.springframework.util.Assert; * @author Mark Fisher * @author Marius Bogoevici */ -public class ApplicationContextMessageBus implements Lifecycle, ChannelResolver, ApplicationContextAware, ApplicationListener, DisposableBean { +public class ApplicationContextMessageBus implements ApplicationContextAware, ApplicationListener, Lifecycle, DisposableBean { public static final String ERROR_CHANNEL_BEAN_NAME = "errorChannel"; @@ -63,8 +60,6 @@ public class ApplicationContextMessageBus implements Lifecycle, ChannelResolver, private volatile ApplicationContext applicationContext; - private volatile ChannelResolver channelResolver; - private volatile boolean autoStartup = true; private volatile boolean running; @@ -77,7 +72,6 @@ public class ApplicationContextMessageBus implements Lifecycle, ChannelResolver, Assert.state(!(applicationContext.getBeanNamesForType(this.getClass()).length > 1), "Only one instance of '" + this.getClass().getSimpleName() + "' is allowed per ApplicationContext."); this.applicationContext = applicationContext; - this.channelResolver = new BeanFactoryChannelResolver(applicationContext); } /** @@ -96,10 +90,6 @@ public class ApplicationContextMessageBus implements Lifecycle, ChannelResolver, this.autoStartup = autoStartup; } - public MessageChannel resolveChannelName(String channelName) { - return this.channelResolver.resolveChannelName(channelName); - } - private Collection getEndpoints() { GenericBeanFactoryAccessor accessor = new GenericBeanFactoryAccessor(this.applicationContext); this.endpoints.addAll(accessor.getBeansOfType(MessageEndpoint.class).values()); diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/bus/ApplicationContextMessageBusTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/bus/ApplicationContextMessageBusTests.java index e0cf01658a..0c8508e7fb 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/bus/ApplicationContextMessageBusTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/bus/ApplicationContextMessageBusTests.java @@ -19,7 +19,6 @@ package org.springframework.integration.bus; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import java.util.concurrent.CountDownLatch; @@ -32,7 +31,6 @@ import org.springframework.context.Lifecycle; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.GenericApplicationContext; import org.springframework.integration.channel.BeanFactoryChannelResolver; -import org.springframework.integration.channel.ChannelResolutionException; import org.springframework.integration.channel.ChannelResolver; import org.springframework.integration.channel.MessagePublishingErrorHandler; import org.springframework.integration.channel.PollableChannel; @@ -42,7 +40,6 @@ import org.springframework.integration.config.xml.MessageBusParser; import org.springframework.integration.consumer.AbstractReplyProducingMessageConsumer; import org.springframework.integration.consumer.ReplyMessageHolder; import org.springframework.integration.core.Message; -import org.springframework.integration.core.MessageChannel; import org.springframework.integration.endpoint.PollingConsumerEndpoint; import org.springframework.integration.endpoint.SourcePollingChannelAdapter; import org.springframework.integration.endpoint.SubscribingConsumerEndpoint; @@ -277,27 +274,6 @@ public class ApplicationContextMessageBusTests { assertEquals("handler should have received error message", 0, latch.getCount()); } - @Test - public void lookupRegisteredChannel() { - GenericApplicationContext context = new GenericApplicationContext(); - QueueChannel testChannel = new QueueChannel(); - testChannel.setBeanName("testChannel"); - context.getBeanFactory().registerSingleton("testChannel", testChannel); - ApplicationContextMessageBus messageBus = new ApplicationContextMessageBus(); - messageBus.setApplicationContext(context); - MessageChannel lookedUpChannel = messageBus.resolveChannelName("testChannel"); - assertNotNull(testChannel); - assertSame(testChannel, lookedUpChannel); - } - - @Test(expected = ChannelResolutionException.class) - public void lookupNonRegisteredChannel() { - GenericApplicationContext context = new GenericApplicationContext(); - ApplicationContextMessageBus messageBus = new ApplicationContextMessageBus(); - messageBus.setApplicationContext(context); - messageBus.resolveChannelName("noSuchChannel"); - } - private static class FailingSource implements MessageSource { diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/bus/MessageBusEventTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/bus/MessageBusEventTests.java index a6e0a4fe6f..037196c959 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/bus/MessageBusEventTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/bus/MessageBusEventTests.java @@ -38,12 +38,12 @@ public class MessageBusEventTests { @Test public void messageBusStartedEvent() { GenericApplicationContext context = new GenericApplicationContext(); - context.registerBeanDefinition("listener", new RootBeanDefinition(TestMessageBusListener.class)); + context.registerBeanDefinition("listener", new RootBeanDefinition(TestMessageBusEventListener.class)); ApplicationContextMessageBus messageBus = new ApplicationContextMessageBus(); messageBus.setTaskScheduler(TestUtils.createTaskScheduler(10)); messageBus.setApplicationContext(context); context.getBeanFactory().registerSingleton(MessageBusParser.MESSAGE_BUS_BEAN_NAME, messageBus); - TestMessageBusListener listener = (TestMessageBusListener) context.getBean("listener"); + TestMessageBusEventListener listener = (TestMessageBusEventListener) context.getBean("listener"); assertNull(listener.startedBus); assertNull(listener.stoppedBus); context.refresh(); // bus will start @@ -55,12 +55,12 @@ public class MessageBusEventTests { @Test public void messageBusStoppedEvent() { GenericApplicationContext context = new GenericApplicationContext(); - context.registerBeanDefinition("listener", new RootBeanDefinition(TestMessageBusListener.class)); + context.registerBeanDefinition("listener", new RootBeanDefinition(TestMessageBusEventListener.class)); ApplicationContextMessageBus messageBus = new ApplicationContextMessageBus(); messageBus.setTaskScheduler(TestUtils.createTaskScheduler(10)); messageBus.setApplicationContext(context); context.getBeanFactory().registerSingleton(MessageBusParser.MESSAGE_BUS_BEAN_NAME, messageBus); - TestMessageBusListener listener = (TestMessageBusListener) context.getBean("listener"); + TestMessageBusEventListener listener = (TestMessageBusEventListener) context.getBean("listener"); assertNull(listener.startedBus); assertNull(listener.stoppedBus); context.refresh(); @@ -72,7 +72,7 @@ public class MessageBusEventTests { } - public static class TestMessageBusListener implements ApplicationListener { + public static class TestMessageBusEventListener implements ApplicationListener { private volatile ApplicationContextMessageBus startedBus; diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/channel/BeanFactoryChannelResolverTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/channel/BeanFactoryChannelResolverTests.java new file mode 100644 index 0000000000..cebd57b1a9 --- /dev/null +++ b/org.springframework.integration/src/test/java/org/springframework/integration/channel/BeanFactoryChannelResolverTests.java @@ -0,0 +1,51 @@ +/* + * 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.channel; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertSame; + +import org.junit.Test; + +import org.springframework.context.support.GenericApplicationContext; +import org.springframework.integration.core.MessageChannel; + +/** + * @author Mark Fisher + */ +public class BeanFactoryChannelResolverTests { + + @Test + public void lookupRegisteredChannel() { + GenericApplicationContext context = new GenericApplicationContext(); + QueueChannel testChannel = new QueueChannel(); + testChannel.setBeanName("testChannel"); + context.getBeanFactory().registerSingleton("testChannel", testChannel); + BeanFactoryChannelResolver resolver = new BeanFactoryChannelResolver(context); + MessageChannel lookedUpChannel = resolver.resolveChannelName("testChannel"); + assertNotNull(testChannel); + assertSame(testChannel, lookedUpChannel); + } + + @Test(expected = ChannelResolutionException.class) + public void lookupNonRegisteredChannel() { + GenericApplicationContext context = new GenericApplicationContext(); + BeanFactoryChannelResolver resolver = new BeanFactoryChannelResolver(context); + resolver.resolveChannelName("noSuchChannel"); + } + +} diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/MessageBusParserTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/config/MessageBusParserTests.java index 986fb42127..7c106caacb 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/config/MessageBusParserTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/MessageBusParserTests.java @@ -32,10 +32,9 @@ import org.springframework.context.event.SimpleApplicationEventMulticaster; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.task.SyncTaskExecutor; -import org.springframework.integration.bus.ApplicationContextMessageBus; -import org.springframework.integration.bus.MessageBusEventTests.TestMessageBusListener; +import org.springframework.integration.bus.MessageBusEventTests.TestMessageBusEventListener; +import org.springframework.integration.channel.BeanFactoryChannelResolver; import org.springframework.integration.config.xml.MessageBusParser; -import org.springframework.integration.core.MessageChannel; import org.springframework.integration.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @@ -49,18 +48,16 @@ public class MessageBusParserTests { public void testErrorChannelReference() { ApplicationContext context = new ClassPathXmlApplicationContext( "messageBusWithErrorChannel.xml", this.getClass()); - ApplicationContextMessageBus bus = (ApplicationContextMessageBus) context.getBean(MessageBusParser.MESSAGE_BUS_BEAN_NAME); - MessageChannel channel = bus.resolveChannelName(ApplicationContextMessageBus.ERROR_CHANNEL_BEAN_NAME); - assertEquals(context.getBean("errorChannel"), channel); + BeanFactoryChannelResolver resolver = new BeanFactoryChannelResolver(context); + assertEquals(context.getBean("errorChannel"), resolver.resolveChannelName("errorChannel")); } @Test public void testDefaultErrorChannel() { ApplicationContext context = new ClassPathXmlApplicationContext( "messageBusWithDefaults.xml", this.getClass()); - ApplicationContextMessageBus bus = (ApplicationContextMessageBus) context.getBean(MessageBusParser.MESSAGE_BUS_BEAN_NAME); - assertNotNull("parser should have created a default error channel", - bus.resolveChannelName(ApplicationContextMessageBus.ERROR_CHANNEL_BEAN_NAME)); + BeanFactoryChannelResolver resolver = new BeanFactoryChannelResolver(context); + assertEquals(context.getBean("errorChannel"), resolver.resolveChannelName("errorChannel")); } @Test @@ -139,7 +136,7 @@ public class MessageBusParserTests { ApplicationContext context = new ClassPathXmlApplicationContext( "messageBusWithListener.xml", this.getClass()); Lifecycle messageBus = (Lifecycle) context.getBean(MessageBusParser.MESSAGE_BUS_BEAN_NAME); - TestMessageBusListener listener = (TestMessageBusListener) context.getBean("listener"); + TestMessageBusEventListener listener = (TestMessageBusEventListener) context.getBean("listener"); assertNull(listener.getStartedBus()); assertNull(listener.getStoppedBus()); messageBus.start(); @@ -153,7 +150,7 @@ public class MessageBusParserTests { ApplicationContext context = new ClassPathXmlApplicationContext( "messageBusWithListener.xml", this.getClass()); Lifecycle messageBus = (Lifecycle) context.getBean(MessageBusParser.MESSAGE_BUS_BEAN_NAME); - TestMessageBusListener listener = (TestMessageBusListener) context.getBean("listener"); + TestMessageBusEventListener listener = (TestMessageBusEventListener) context.getBean("listener"); assertNull(listener.getStoppedBus()); messageBus.start(); messageBus.stop(); diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/messageBusWithListener.xml b/org.springframework.integration/src/test/java/org/springframework/integration/config/messageBusWithListener.xml index 6bb9033e52..336bfcc3df 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/config/messageBusWithListener.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/messageBusWithListener.xml @@ -9,6 +9,6 @@ - +