Added test for nested properties in an EL expression within a @Header annotation on a method parameter.

This commit is contained in:
Mark Fisher
2009-10-30 22:17:28 +00:00
parent 5ebafd8df9
commit 625db5a0d0

View File

@@ -288,6 +288,16 @@ public class ArgumentArrayMessageMapperFromMessageTests {
mapper.fromMessage(message);
}
@Test
public void headersWithExpressions() throws Exception {
Method method = TestService.class.getMethod("headersWithExpressions", String.class, String.class);
ArgumentArrayMessageMapper mapper = new ArgumentArrayMessageMapper(method);
Employee employee = new Employee("John", "Doe");
Message<?> message = MessageBuilder.withPayload("payload").setHeader("emp", employee).build();
Object[] args = mapper.fromMessage(message);
assertEquals("John", args[0]);
assertEquals("Doe", args[1]);
}
@SuppressWarnings("unused")
private static class MultipleMappingAnnotationTestBean {
@@ -299,7 +309,7 @@ public class ArgumentArrayMessageMapperFromMessageTests {
@SuppressWarnings("unused")
private static class TestService {
public void payloadOnly(Map employee){}
public void payloadOnly(Map<?,?> employee){}
public void payloadOnlyPayloadArg(String fname){}
public void payloadOnlyPayloadArgs(String fname, String lname){}
public void payloadOnlyPayloadArgsHeaderArg(String fname, String day){}
@@ -324,6 +334,10 @@ public class ArgumentArrayMessageMapperFromMessageTests {
return num;
}
public String headersWithExpressions(@Header("emp.fname") String firstName, @Header("emp.lname") String lastName) {
return lastName + ", " + firstName;
}
public String optionalAndRequiredHeader(@Header(required=false) String prop, @Header(value="num", required=true) Integer num) {
return prop + num;
}
@@ -369,10 +383,10 @@ public class ArgumentArrayMessageMapperFromMessageTests {
public void fromMessageToMessageMappingAnnotationMultiArguments(@MessageMapping("headers.day") String argA,
@MessageMapping("headers.month") String argB,
@MessageMapping("#this") Message message,
@MessageMapping("#this") Message<?> message,
@MessageMapping("payload") Employee payloadArg,
@MessageMapping("payload.fname") String value,
@MessageMapping("headers") Map headers){} //
@MessageMapping("headers") Map<?,?> headers){} //
public void fromMessageIrrelevantAnnotation(@BogusAnnotation() String value){} //
}