From 397f976c080c2e17ca6cc2735346c384e4cd2fa1 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Thu, 15 May 2008 20:43:00 +0000 Subject: [PATCH] Moved the setting of target object and method into DefaultMessageHandlerCreator instead of AbstractMessageHandlerCreator. If AbstractMessageHandlerAdapter's mapping result is null, the corresponding method argument will be null (no longer invoking getPayload() since there is a chance for null mapping results). --- .../integration/handler/AbstractMessageHandlerAdapter.java | 2 +- .../handler/config/AbstractMessageHandlerCreator.java | 6 ------ .../handler/config/DefaultMessageHandlerCreator.java | 2 ++ 3 files changed, 3 insertions(+), 7 deletions(-) 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; }