diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractMessageHandlerAdapter.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractMessageHandlerAdapter.java index c8901e47e8..aeb24e25b6 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractMessageHandlerAdapter.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractMessageHandlerAdapter.java @@ -150,7 +150,7 @@ public abstract class AbstractMessageHandlerAdapter implements MessageHandler, I } Object args[] = null; Object mappingResult = (this.methodExpectsMessage) ? message : this.messageMapper.mapMessage(message); - if (mappingResult.getClass().isArray()) { + if (mappingResult != null && mappingResult.getClass().isArray()) { args = (Object[]) mappingResult; } else { diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/config/AbstractMessageHandlerCreator.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/config/AbstractMessageHandlerCreator.java index f2d250d398..067028482d 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/config/AbstractMessageHandlerCreator.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/config/AbstractMessageHandlerCreator.java @@ -21,7 +21,6 @@ import java.util.Map; import org.springframework.beans.factory.InitializingBean; import org.springframework.integration.ConfigurationException; -import org.springframework.integration.handler.AbstractMessageHandlerAdapter; import org.springframework.integration.handler.MessageHandler; /** @@ -34,11 +33,6 @@ public abstract class AbstractMessageHandlerCreator implements MessageHandlerCre public final MessageHandler createHandler(Object object, Method method, Map attributes) { MessageHandler handler = this.doCreateHandler(object, method, attributes); - if (handler instanceof AbstractMessageHandlerAdapter) { - AbstractMessageHandlerAdapter adapter = ((AbstractMessageHandlerAdapter) handler); - adapter.setObject(object); - adapter.setMethodName(method.getName()); - } if (handler instanceof InitializingBean) { try { ((InitializingBean) handler).afterPropertiesSet(); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/config/DefaultMessageHandlerCreator.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/config/DefaultMessageHandlerCreator.java index 318f24082b..c55c29c7de 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/config/DefaultMessageHandlerCreator.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/config/DefaultMessageHandlerCreator.java @@ -41,6 +41,8 @@ public class DefaultMessageHandlerCreator extends AbstractMessageHandlerCreator throw new ConfigurationException("exactly one method parameter is required"); } DefaultMessageHandlerAdapter adapter = new DefaultMessageHandlerAdapter(); + adapter.setObject(object); + adapter.setMethodName(method.getName()); adapter.setMethodExpectsMessage(Message.class.isAssignableFrom(types[0])); return adapter; }