Refactored MethodInvokingTarget to MethodInvokingConsumer including changes to OutboundChannelAdapter.

This commit is contained in:
Mark Fisher
2008-09-19 19:55:47 +00:00
parent eb9663dad3
commit 2d66b2b67d
13 changed files with 70 additions and 75 deletions

View File

@@ -13,15 +13,15 @@
<queue capacity="10"/>
</channel>
<channel-adapter id="outboundWithImplicitChannel" target="target"/>
<channel-adapter id="outboundWithImplicitChannel" target="consumer"/>
<channel-adapter id="methodInvokingTarget" target="testBean" method="store"/>
<channel-adapter id="methodInvokingConsumer" target="testBean" method="store"/>
<channel-adapter id="methodInvokingSource" source="testBean" method="getMessage" channel="queueChannel">
<poller period="10000" max-messages-per-poll="1"/>
</channel-adapter>
<beans:bean id="target" class="org.springframework.integration.config.TestTarget"/>
<beans:bean id="consumer" class="org.springframework.integration.config.TestConsumer"/>
<beans:bean id="testBean" class="org.springframework.integration.config.TestBean"/>

View File

@@ -51,18 +51,18 @@ public class ChannelAdapterParserTests extends AbstractJUnit4SpringContextTests
Object adapter = this.applicationContext.getBean(beanName + ".adapter");
assertNotNull(adapter);
assertTrue(adapter instanceof OutboundChannelAdapter);
TestTarget target = (TestTarget) this.applicationContext.getBean("target");
assertNull(target.getLastMessage());
TestConsumer consumer = (TestConsumer) this.applicationContext.getBean("consumer");
assertNull(consumer.getLastMessage());
Message<?> message = new StringMessage("test");
assertTrue(((MessageChannel) channel).send(message));
assertNotNull(target.getLastMessage());
assertEquals(message, target.getLastMessage());
assertNotNull(consumer.getLastMessage());
assertEquals(message, consumer.getLastMessage());
bus.stop();
}
@Test
public void methodInvokingTarget() {
String beanName = "methodInvokingTarget";
public void methodInvokingConsumer() {
String beanName = "methodInvokingConsumer";
Object channel = this.applicationContext.getBean(beanName);
assertTrue(channel instanceof DirectChannel);
MessageBus bus = (MessageBus) this.applicationContext.getBean(MessageBusParser.MESSAGE_BUS_BEAN_NAME);
@@ -73,10 +73,10 @@ public class ChannelAdapterParserTests extends AbstractJUnit4SpringContextTests
assertTrue(adapter instanceof OutboundChannelAdapter);
TestBean testBean = (TestBean) this.applicationContext.getBean("testBean");
assertNull(testBean.getMessage());
Message<?> message = new StringMessage("target test");
Message<?> message = new StringMessage("consumer test");
assertTrue(((MessageChannel) channel).send(message));
assertNotNull(testBean.getMessage());
assertEquals("target test", testBean.getMessage());
assertEquals("consumer test", testBean.getMessage());
bus.stop();
}

View File

@@ -17,12 +17,12 @@
package org.springframework.integration.config;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageTarget;
import org.springframework.integration.message.MessageConsumer;
/**
* @author Mark Fisher
*/
public class TestTarget implements MessageTarget {
public class TestConsumer implements MessageConsumer {
private volatile Message<?> lastMessage;
@@ -31,9 +31,8 @@ public class TestTarget implements MessageTarget {
return this.lastMessage;
}
public boolean send(Message<?> message) {
public void onMessage(Message<?> message) {
this.lastMessage = message;
return true;
}
}

View File

@@ -19,7 +19,6 @@ package org.springframework.integration.handler;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.SynchronousQueue;
@@ -40,29 +39,28 @@ import org.springframework.integration.message.StringMessage;
/**
* @author Mark Fisher
*/
public class MethodInvokingTargetTests {
public class MethodInvokingConsumerTests {
@Test
public void testValidMethod() {
MethodInvokingTarget target = new MethodInvokingTarget(new TestSink(), "validMethod");
target.afterPropertiesSet();
boolean result = target.send(new GenericMessage<String>("test"));
assertTrue(result);
MethodInvokingConsumer consumer = new MethodInvokingConsumer(new TestSink(), "validMethod");
consumer.afterPropertiesSet();
consumer.onMessage(new GenericMessage<String>("test"));
}
@Test(expected = ConfigurationException.class)
public void testInvalidMethodWithNoArgs() {
MethodInvokingTarget target = new MethodInvokingTarget(new TestSink(), "invalidMethodWithNoArgs");
target.afterPropertiesSet();
MethodInvokingConsumer consumer = new MethodInvokingConsumer(new TestSink(), "invalidMethodWithNoArgs");
consumer.afterPropertiesSet();
}
@Test(expected = MessagingException.class)
public void testMethodWithReturnValue() {
Message<?> message = new StringMessage("test");
try {
MethodInvokingTarget target = new MethodInvokingTarget(new TestSink(), "methodWithReturnValue");
target.afterPropertiesSet();
target.send(message);
MethodInvokingConsumer consumer = new MethodInvokingConsumer(new TestSink(), "methodWithReturnValue");
consumer.afterPropertiesSet();
consumer.onMessage(message);
}
catch (MessagingException e) {
assertEquals(e.getFailedMessage(), message);
@@ -72,8 +70,8 @@ public class MethodInvokingTargetTests {
@Test(expected = ConfigurationException.class)
public void testNoMatchingMethodName() {
MethodInvokingTarget target = new MethodInvokingTarget(new TestSink(), "noSuchMethod");
target.afterPropertiesSet();
MethodInvokingConsumer consumer = new MethodInvokingConsumer(new TestSink(), "noSuchMethod");
consumer.afterPropertiesSet();
}
@Test
@@ -81,15 +79,15 @@ public class MethodInvokingTargetTests {
GenericApplicationContext context = new GenericApplicationContext();
SynchronousQueue<String> queue = new SynchronousQueue<String>();
TestBean testBean = new TestBean(queue);
MethodInvokingTarget target = new MethodInvokingTarget(testBean, "foo");
target.afterPropertiesSet();
MethodInvokingConsumer consumer = new MethodInvokingConsumer(testBean, "foo");
consumer.afterPropertiesSet();
QueueChannel channel = new QueueChannel();
channel.setBeanName("channel");
context.getBeanFactory().registerSingleton("channel", channel);
Message<String> message = new GenericMessage<String>("testing");
channel.send(message);
assertNull(queue.poll());
ServiceActivatorEndpoint endpoint = new ServiceActivatorEndpoint(target);
ServiceActivatorEndpoint endpoint = new ServiceActivatorEndpoint(consumer);
endpoint.setBeanName("testEndpoint");
endpoint.setInputChannel(channel);
context.getBeanFactory().registerSingleton("testEndpoint", endpoint);