INT-773 Refactored MethodInvokingTransformer to have a single constructor expecting a MessageProcessor. All configuration of a MessageMappingMethodInvoker now happens externally (in the FactoryBean or annotation post-processor).

This commit is contained in:
Mark Fisher
2009-08-26 23:23:31 +00:00
parent 481be2f822
commit dc026521d0
4 changed files with 49 additions and 36 deletions

View File

@@ -17,6 +17,7 @@
package org.springframework.integration.config;
import org.springframework.integration.handler.ExpressionEvaluatingMessageProcessor;
import org.springframework.integration.handler.MessageMappingMethodInvoker;
import org.springframework.integration.handler.MessageProcessor;
import org.springframework.integration.message.MessageHandler;
import org.springframework.integration.transformer.MessageTransformingHandler;
@@ -40,10 +41,13 @@ public class TransformerFactoryBean extends AbstractMessageHandlerFactoryBean {
transformer = (Transformer) targetObject;
}
else if (StringUtils.hasText(targetMethodName)) {
transformer = new MethodInvokingTransformer(targetObject, targetMethodName);
MessageProcessor messageProcessor = new MessageMappingMethodInvoker(targetObject, targetMethodName);
transformer = new MethodInvokingTransformer(messageProcessor);
}
else {
transformer = new MethodInvokingTransformer(targetObject);
MessageProcessor messageProcessor = new MessageMappingMethodInvoker(
targetObject, org.springframework.integration.annotation.Transformer.class);
transformer = new MethodInvokingTransformer(messageProcessor);
}
return new MessageTransformingHandler(transformer);
}

View File

@@ -20,6 +20,8 @@ import java.lang.reflect.Method;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.integration.annotation.Transformer;
import org.springframework.integration.handler.MessageMappingMethodInvoker;
import org.springframework.integration.handler.MessageProcessor;
import org.springframework.integration.message.MessageHandler;
import org.springframework.integration.transformer.MethodInvokingTransformer;
import org.springframework.integration.transformer.MessageTransformingHandler;
@@ -39,7 +41,8 @@ public class TransformerAnnotationPostProcessor extends AbstractMethodAnnotation
@Override
protected MessageHandler createHandler(Object bean, Method method, Transformer annotation) {
MethodInvokingTransformer transformer = new MethodInvokingTransformer(bean, method);
MessageProcessor messageProcessor = new MessageMappingMethodInvoker(bean, method);
MethodInvokingTransformer transformer = new MethodInvokingTransformer(messageProcessor);
MessageTransformingHandler handler = new MessageTransformingHandler(transformer);
String outputChannelName = annotation.outputChannel();
if (StringUtils.hasText(outputChannelName)) {

View File

@@ -16,12 +16,10 @@
package org.springframework.integration.transformer;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.Properties;
import org.springframework.integration.core.Message;
import org.springframework.integration.handler.MessageMappingMethodInvoker;
import org.springframework.integration.handler.MessageProcessor;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessageHandlingException;
@@ -40,19 +38,6 @@ public class MethodInvokingTransformer implements Transformer {
this.messageProcessor = messageProcessor;
}
public MethodInvokingTransformer(Object object, Method method) {
this.messageProcessor = new MessageMappingMethodInvoker(object, method);
}
public MethodInvokingTransformer(Object object, String methodName) {
this.messageProcessor = new MessageMappingMethodInvoker(object, methodName);
}
public MethodInvokingTransformer(Object object) {
this.messageProcessor = new MessageMappingMethodInvoker(object,
org.springframework.integration.annotation.Transformer.class);
}
public Message<?> transform(Message<?> message) {
Object result = this.messageProcessor.processMessage(message);