From 727a554ccf86b27add0c0b3183c6df26a6c4f730 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Tue, 4 Mar 2014 18:28:57 -0500 Subject: [PATCH] INT-3294 Support Implicit Input Channel with Ann. JIRA: https://jira.springsource.org/browse/INT-3294 Previously, implicit input channel creation was not supported for annotated endpoints. Register a `DirectChannel` if the input channel does not exist in the context. --- ...AbstractMethodAnnotationPostProcessor.java | 16 ++++++++++++- .../AnnotatedEndpointActivationTests.java | 23 +++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AbstractMethodAnnotationPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AbstractMethodAnnotationPostProcessor.java index cd559a0b05..048a26b084 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AbstractMethodAnnotationPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/annotation/AbstractMethodAnnotationPostProcessor.java @@ -29,6 +29,7 @@ import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.annotation.Order; +import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.config.IntegrationConfigUtils; import org.springframework.integration.context.Orderable; import org.springframework.integration.endpoint.AbstractEndpoint; @@ -38,6 +39,7 @@ import org.springframework.integration.support.channel.BeanFactoryChannelResolve import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageHandler; import org.springframework.messaging.SubscribableChannel; +import org.springframework.messaging.core.DestinationResolutionException; import org.springframework.messaging.core.DestinationResolver; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -47,6 +49,7 @@ import org.springframework.util.StringUtils; * Base class for Method-level annotation post-processors. * * @author Mark Fisher + * @author Artem Bilan * @author Gary Russell */ public abstract class AbstractMethodAnnotationPostProcessor implements MethodAnnotationPostProcessor { @@ -133,7 +136,18 @@ public abstract class AbstractMethodAnnotationPostProcessor("foo")); + Message message = this.output.receive(100); + assertNotNull(message); + assertEquals("foo: 1", message.getPayload()); + assertEquals(1, count); + } + @Test(expected = MessageDeliveryException.class) public void stopContext() { applicationContext.stop();