This commit is contained in:
Mark Fisher
2008-11-21 16:05:53 +00:00
parent 7b670760be
commit bbd58b830f
2 changed files with 28 additions and 4 deletions

View File

@@ -44,6 +44,9 @@ public class MethodInvokingTransformer implements Transformer {
public Message<?> transform(Message<?> message) {
Object result = this.invoker.invokeMethod(message);
if (result instanceof Message) {
return (Message<?>) result;
}
if (result instanceof Properties && !(message.getPayload() instanceof Properties)) {
Properties propertiesToSet = (Properties) result;
MessageBuilder<?> builder = MessageBuilder.fromMessage(message);
@@ -53,7 +56,7 @@ public class MethodInvokingTransformer implements Transformer {
}
return builder.build();
}
else if (result instanceof Map && !(message.getPayload() instanceof Map)) {
if (result instanceof Map && !(message.getPayload() instanceof Map)) {
Map<?, ?> attributesToSet = (Map <?, ?>) result;
MessageBuilder<?> builder = MessageBuilder.fromMessage(message);
for (Object key : attributesToSet.keySet()) {
@@ -65,9 +68,7 @@ public class MethodInvokingTransformer implements Transformer {
}
return builder.build();
}
else {
return MessageBuilder.withPayload(result).copyHeaders(message.getHeaders()).build();
}
return MessageBuilder.withPayload(result).copyHeaders(message.getHeaders()).build();
}
}

View File

@@ -173,6 +173,25 @@ public class MethodInvokingTransformerTests {
assertEquals("baz", result.getHeaders().get("prop3"));
}
@Test
public void messageReturnValueConfiguredWithMethodReference() throws Exception {
TestBean testBean = new TestBean();
Method testMethod = testBean.getClass().getMethod("messageReturnValueTest", Message.class);
MethodInvokingTransformer transformer = new MethodInvokingTransformer(testBean, testMethod);
Message<String> message = MessageBuilder.withPayload("test").build();
Message<?> result = transformer.transform(message);
assertEquals("test", result.getPayload());
}
@Test
public void messageReturnValueConfiguredWithMethodName() throws Exception {
TestBean testBean = new TestBean();
MethodInvokingTransformer transformer = new MethodInvokingTransformer(testBean, "messageReturnValueTest");
Message<String> message = MessageBuilder.withPayload("test").build();
Message<?> result = transformer.transform(message);
assertEquals("test", result.getPayload());
}
@Test
@SuppressWarnings("unchecked")
public void propertiesPayloadConfiguredWithMethodReference() throws Exception {
@@ -246,6 +265,10 @@ public class MethodInvokingTransformerTests {
properties.setProperty("prop2", "bar");
return properties;
}
public Message<?> messageReturnValueTest(Message<?> message) {
return message;
}
}
}