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 extends MessageHandler> 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 @@
-
-
-
+