INT-945 multiple @Payload annotations are now supported as long as no more than one of them provides no EL expression for qualified properties of the payload instance

This commit is contained in:
Mark Fisher
2009-12-24 13:16:06 +00:00
parent c313efda0a
commit b4bbf27432
2 changed files with 21 additions and 1 deletions

View File

@@ -32,6 +32,7 @@ import org.junit.Test;
import org.springframework.integration.annotation.Header;
import org.springframework.integration.annotation.Headers;
import org.springframework.integration.annotation.Payload;
import org.springframework.integration.core.Message;
import org.springframework.integration.handler.ServiceActivatingHandler;
@@ -670,6 +671,19 @@ public class PayloadAndHeaderMappingTests {
assertNull(bean.lastHeaders.get("bar"));
}
@Test
public void twoPayloadExpressions() throws Exception {
MessageHandler handler = this.getHandler("twoPayloadExpressions", String.class, String.class);
Map<String, Object> payload = new HashMap<String, Object>();
payload.put("foo", new Integer(123));
payload.put("bar", new Integer(456));
Message<?> message = MessageBuilder.withPayload(payload).build();
handler.handleMessage(message);
assertNull(bean.lastHeaders);
assertNotNull(bean.lastPayload);
assertEquals("123456", bean.lastPayload);
}
private ServiceActivatingHandler getHandler(String methodName, Class<?>... types) throws Exception {
return new ServiceActivatingHandler(bean, TestBean.class.getMethod(methodName, types));
@@ -835,6 +849,10 @@ public class PayloadAndHeaderMappingTests {
public void singleObjectHeaderOnly(@Header("foo") Object o) {
this.lastHeaders = Collections.singletonMap("foo", o);
}
public void twoPayloadExpressions(@Payload("foo") String foo, @Payload("bar") String bar) {
this.lastPayload = foo + bar;
}
}
}