INT-484
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user