Refactored MessageMappingParameterResolver to MethodParameterMessageMapper, an implementation of the MessageMapper interface.
This commit is contained in:
@@ -26,6 +26,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.integration.ConfigurationException;
|
||||
import org.springframework.integration.gateway.MessageMapper;
|
||||
import org.springframework.integration.util.DefaultMethodInvoker;
|
||||
import org.springframework.integration.util.MethodInvoker;
|
||||
import org.springframework.integration.util.NameResolvingMethodInvoker;
|
||||
@@ -55,7 +56,7 @@ public class MessageMappingMethodInvoker implements MethodInvoker, InitializingB
|
||||
|
||||
private volatile String methodName;
|
||||
|
||||
private volatile MessageMappingParameterResolver parameterResolver;
|
||||
private volatile MessageMapper<Object[]> messageMapper;
|
||||
|
||||
private volatile MethodInvoker invoker;
|
||||
|
||||
@@ -109,7 +110,7 @@ public class MessageMappingMethodInvoker implements MethodInvoker, InitializingB
|
||||
this.methodExpectsMessage = true;
|
||||
}
|
||||
this.invoker = new DefaultMethodInvoker(this.object, this.method);
|
||||
this.parameterResolver = new MessageMappingParameterResolver(this.method);
|
||||
this.messageMapper = new MethodParameterMessageMapper(this.method);
|
||||
}
|
||||
else {
|
||||
// TODO: resolve the candidate method and/or create a dynamic resolver
|
||||
@@ -190,8 +191,8 @@ public class MessageMappingMethodInvoker implements MethodInvoker, InitializingB
|
||||
}
|
||||
|
||||
private Object[] resolveParameters(Message<?> message) {
|
||||
if (this.parameterResolver != null) {
|
||||
return this.parameterResolver.resolveParameters(message);
|
||||
if (this.messageMapper != null) {
|
||||
return this.messageMapper.fromMessage(message);
|
||||
}
|
||||
return new Object[] { message.getPayload() };
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.core.ParameterNameDiscoverer;
|
||||
import org.springframework.integration.annotation.Header;
|
||||
import org.springframework.integration.gateway.MessageMapper;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
@@ -45,7 +46,7 @@ import org.springframework.util.StringUtils;
|
||||
*
|
||||
* @author Mark Fisher
|
||||
*/
|
||||
public class MessageMappingParameterResolver {
|
||||
public class MethodParameterMessageMapper implements MessageMapper<Object[]> {
|
||||
|
||||
private final Method method;
|
||||
|
||||
@@ -54,14 +55,19 @@ public class MessageMappingParameterResolver {
|
||||
private final ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
|
||||
|
||||
|
||||
public MessageMappingParameterResolver(Method method) {
|
||||
public MethodParameterMessageMapper(Method method) {
|
||||
Assert.notNull(method, "method must not be null");
|
||||
this.method = method;
|
||||
this.initializeParameterMetadata();
|
||||
}
|
||||
|
||||
|
||||
public Object[] resolveParameters(Message<?> message) {
|
||||
public Message<?> toMessage(Object[] methodParameters) {
|
||||
// TODO: add checks for @Header, Map, etc.
|
||||
return MessageBuilder.withPayload(methodParameters).build();
|
||||
}
|
||||
|
||||
public Object[] fromMessage(Message<?> message) {
|
||||
if (message == null) {
|
||||
return null;
|
||||
}
|
||||
Reference in New Issue
Block a user