diff --git a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/Counter.java b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/Counter.java index b4ec48f247..41f5dbeec3 100644 --- a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/Counter.java +++ b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/Counter.java @@ -18,20 +18,13 @@ package org.springframework.integration.samples.oddeven; import java.util.concurrent.atomic.AtomicInteger; -import org.springframework.integration.annotation.MessageEndpoint; -import org.springframework.integration.annotation.MessageSource; -import org.springframework.integration.annotation.Polled; - /** * @author Mark Fisher */ -@MessageEndpoint(output="numbers") -@Polled(initialDelay=1000, period=3000) public class Counter { private final AtomicInteger count = new AtomicInteger(); - @MessageSource public int next() { return count.incrementAndGet(); } diff --git a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/EvenLogger.java b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/EvenLogger.java index 0fca1d0d44..49a22fb6bb 100644 --- a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/EvenLogger.java +++ b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/EvenLogger.java @@ -16,17 +16,15 @@ package org.springframework.integration.samples.oddeven; -import org.springframework.integration.annotation.MessageEndpoint; -import org.springframework.integration.annotation.MessageTarget; +import org.springframework.integration.annotation.Handler; /** * @author Mark Fisher */ -@MessageEndpoint(input="even") public class EvenLogger { - @MessageTarget - public void even(int i) { + @Handler + public void log(int i) { System.out.println("even: " + i); } diff --git a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/OddLogger.java b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/OddLogger.java index ea592f18f4..3ffa3c7e57 100644 --- a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/OddLogger.java +++ b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/OddLogger.java @@ -16,17 +16,15 @@ package org.springframework.integration.samples.oddeven; -import org.springframework.integration.annotation.MessageEndpoint; -import org.springframework.integration.annotation.MessageTarget; +import org.springframework.integration.annotation.Handler; /** * @author Mark Fisher */ -@MessageEndpoint(input="odd") public class OddLogger { - @MessageTarget - public void odd(int i) { + @Handler + public void log(int i) { System.out.println("odd: " + i); } diff --git a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/NumberRouter.java b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/ParityResolver.java similarity index 76% rename from org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/NumberRouter.java rename to org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/ParityResolver.java index 793c2e1914..61d890f039 100644 --- a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/NumberRouter.java +++ b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/ParityResolver.java @@ -16,17 +16,12 @@ package org.springframework.integration.samples.oddeven; -import org.springframework.integration.annotation.MessageEndpoint; -import org.springframework.integration.annotation.Router; - /** * @author Mark Fisher */ -@MessageEndpoint(input="numbers") -public class NumberRouter { +public class ParityResolver { - @Router - public String resolveChannel(int i) { + public String getParity(int i) { if (i % 2 == 0) { return "even"; } diff --git a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/oddEvenDemo.xml b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/oddEvenDemo.xml index 57bfd7472f..937eedce60 100644 --- a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/oddEvenDemo.xml +++ b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/oddEvenDemo.xml @@ -2,22 +2,34 @@ - - + - + + + + + + + + + + + + + + + + + diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/spring-integration-core-1.0.xsd b/org.springframework.integration/src/main/java/org/springframework/integration/config/spring-integration-core-1.0.xsd index 65644668ab..1258dcca92 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/spring-integration-core-1.0.xsd +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/spring-integration-core-1.0.xsd @@ -200,17 +200,32 @@ - + - + - Base type for handler endpoint elements. + Base type for handler endpoint elements that accept Messages from an input-channel + and also produce Messages to be sent to an output-channel. + + + + + + + + + + + + + + Base type for handler endpoint elements that accept Messages from an input-channel. @@ -222,9 +237,7 @@ - - @@ -318,20 +331,15 @@ - - - - + + + Defines a Router. - - - - - - + + - + Defines a Splitter. diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/endpoint/AbstractEndpoint.java b/org.springframework.integration/src/main/java/org/springframework/integration/endpoint/AbstractEndpoint.java index bc24696bbc..9aa47efe46 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/endpoint/AbstractEndpoint.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/endpoint/AbstractEndpoint.java @@ -24,6 +24,7 @@ import org.aopalliance.aop.Advice; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.aop.framework.AopContext; import org.springframework.beans.factory.BeanNameAware; import org.springframework.context.Lifecycle; import org.springframework.integration.ConfigurationException; @@ -231,7 +232,16 @@ public abstract class AbstractEndpoint implements MessageEndpoint, BeanNameAware throw new MessageHandlerNotRunningException(message); } if (message.getPayload() instanceof EndpointVisitor) { - ((EndpointVisitor) message.getPayload()).visitEndpoint(this); + MessageEndpoint endpoint = null; + try { + endpoint = (MessageEndpoint) AopContext.currentProxy(); + } + catch (IllegalStateException e) { + if (logger.isDebugEnabled()) { + logger.debug("The currenty proxy is not exposed."); + } + } + ((EndpointVisitor) message.getPayload()).visitEndpoint((endpoint != null) ? endpoint : this); return true; } if (!this.supports(message)) { diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/router/RouterMessageHandlerAdapter.java b/org.springframework.integration/src/main/java/org/springframework/integration/router/RouterMessageHandlerAdapter.java index 928c7fe69e..d478ceedc6 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/router/RouterMessageHandlerAdapter.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/router/RouterMessageHandlerAdapter.java @@ -54,6 +54,9 @@ public class RouterMessageHandlerAdapter extends AbstractMessageHandlerAdapter i this.setMethodName(methodName); } + public RouterMessageHandlerAdapter() { + } + public void setChannelRegistry(ChannelRegistry channelRegistry) { this.channelRegistry = channelRegistry; diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/router/config/RouterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/router/config/RouterParser.java index d23d1b3dc0..df913db638 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/router/config/RouterParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/router/config/RouterParser.java @@ -16,36 +16,20 @@ package org.springframework.integration.router.config; -import org.w3c.dom.Element; - -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; -import org.springframework.integration.ConfigurationException; +import org.springframework.integration.config.AbstractHandlerEndpointParser; +import org.springframework.integration.handler.MessageHandler; import org.springframework.integration.router.RouterMessageHandlerAdapter; -import org.springframework.util.StringUtils; /** * Parser for the <router/> element. * * @author Mark Fisher */ -public class RouterParser extends AbstractSingleBeanDefinitionParser { +public class RouterParser extends AbstractHandlerEndpointParser { @Override - protected Class getBeanClass(Element element) { + protected Class getHandlerAdapterClass() { return RouterMessageHandlerAdapter.class; } - @Override - protected void doParse(Element element, BeanDefinitionBuilder builder) { - String ref = element.getAttribute("ref"); - String methodName = element.getAttribute("method"); - if (!StringUtils.hasText(ref) || !StringUtils.hasText(methodName)) { - throw new ConfigurationException( - "The 'ref' and 'method' attributes are both required."); - } - builder.addConstructorArgReference(ref); - builder.addConstructorArgValue(methodName); - } - } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/router/config/routerParserTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/router/config/routerParserTests.xml index 3735eab4f2..787c4741d6 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/router/config/routerParserTests.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/router/config/routerParserTests.xml @@ -15,9 +15,7 @@ - - - +