diff --git a/src/main/java/org/springframework/integration/flow/config/FlowMessageHandlerFactoryBean.java b/src/main/java/org/springframework/integration/flow/config/FlowMessageHandlerFactoryBean.java index 09097b4..50e47e1 100644 --- a/src/main/java/org/springframework/integration/flow/config/FlowMessageHandlerFactoryBean.java +++ b/src/main/java/org/springframework/integration/flow/config/FlowMessageHandlerFactoryBean.java @@ -97,8 +97,7 @@ public class FlowMessageHandlerFactoryBean extends AbstractSimpleMessageHandlerF this.flowConfiguration = this.flow.getFlowConfiguration().getConfigurationForInputPort( this.inputPortName); } - Assert.notEmpty(this.flowConfiguration.getOutputPortNames(), "flow [" + this.flow.getBeanName() - + "] has no configured output ports"); + bridgeMessagingPorts(); diff --git a/src/test/java/org/springframework/integration/flow/FlowUtilsTest.java b/src/test/java/org/springframework/integration/flow/FlowUtilsTest.java index c289052..9c51f28 100644 --- a/src/test/java/org/springframework/integration/flow/FlowUtilsTest.java +++ b/src/test/java/org/springframework/integration/flow/FlowUtilsTest.java @@ -12,11 +12,14 @@ import org.springframework.integration.core.PollableChannel; import org.springframework.integration.core.SubscribableChannel; import org.springframework.integration.flow.config.FlowUtils; import org.springframework.integration.message.GenericMessage; - +/** + * + * @author David Turanski + * + */ public class FlowUtilsTest { @Test public void buildBridge(){ - SubscribableChannel inputChannel = new DirectChannel(); SubscribableChannel outputChannel = new PublishSubscribeChannel(); diff --git a/src/test/java/org/springframework/integration/flow/config/xml/FlowWithOptionalResponseTest.java b/src/test/java/org/springframework/integration/flow/config/xml/FlowWithOptionalResponseTest.java new file mode 100644 index 0000000..4c84964 --- /dev/null +++ b/src/test/java/org/springframework/integration/flow/config/xml/FlowWithOptionalResponseTest.java @@ -0,0 +1,61 @@ +package org.springframework.integration.flow.config.xml; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.integration.Message; +import org.springframework.integration.MessageChannel; +import org.springframework.integration.MessagingException; +import org.springframework.integration.core.MessageHandler; +import org.springframework.integration.core.SubscribableChannel; +import org.springframework.integration.message.GenericMessage; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath:/FlowWithOptionalResponseTest-context.xml") +public class FlowWithOptionalResponseTest { + @Autowired + @Qualifier("inputC") + MessageChannel input; + + @Autowired + @Qualifier("inputCO") + MessageChannel inputForOptionalResponse; + + @Autowired + @Qualifier("outputC") + SubscribableChannel output; + + @Test + public void testOneWay() { + + input.send(new GenericMessage("hello")); + } + + @Test + public void testOptionResponse() { + TestMessageHandler counter = new TestMessageHandler(); + + output.subscribe(counter); + + for (int i=0; i< 100; i++){ + inputForOptionalResponse.send(new GenericMessage("hello")); + } + + assertTrue(String.valueOf(counter.count), counter.count >1 && counter.count < 100); + } + + static class TestMessageHandler implements MessageHandler { + int count = 0; + @Override + public void handleMessage(Message message) throws MessagingException { + count++; + } + } + + +} diff --git a/src/test/resources/FlowWithOptionalResponseTest-context.xml b/src/test/resources/FlowWithOptionalResponseTest-context.xml new file mode 100644 index 0000000..129882c --- /dev/null +++ b/src/test/resources/FlowWithOptionalResponseTest-context.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/src/test/resources/META-INF/spring/integration/flows/no-response/flow-context.xml b/src/test/resources/META-INF/spring/integration/flows/no-response/flow-context.xml new file mode 100644 index 0000000..dd792b2 --- /dev/null +++ b/src/test/resources/META-INF/spring/integration/flows/no-response/flow-context.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/src/test/resources/META-INF/spring/integration/flows/optional-response/flow-context.xml b/src/test/resources/META-INF/spring/integration/flows/optional-response/flow-context.xml new file mode 100644 index 0000000..763eaf1 --- /dev/null +++ b/src/test/resources/META-INF/spring/integration/flows/optional-response/flow-context.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + +