GH-2908: Publisher: synthesize anns for @AliasFor

Fixes https://github.com/spring-projects/spring-integration/issues/2908

* make sure the attribute  is taken into account in @Header annotation

* remove useless spaces according to checkstyle rules

* make sure the expression attribute is taken into account as well in @Payload annotation
This commit is contained in:
Chengchen JI
2019-04-30 00:25:00 +02:00
committed by Artem Bilan
parent 36c33bb5ab
commit b069780381
2 changed files with 28 additions and 4 deletions

View File

@@ -37,6 +37,7 @@ import org.springframework.test.util.ReflectionTestUtils;
* @author Mark Fisher
* @author Artem Bilan
* @author Cameron Mayfield
* @author Chengchen Ji
*
* @since 2.0
*/
@@ -116,6 +117,18 @@ public class MethodAnnotationPublisherMetadataSourceTests {
assertThat(payloadExpression).isEqualTo("#args[0]");
}
@Test(expected = IllegalStateException.class)
public void voidReturnAndParameterPayloadAnnotationWithExpression() {
Method method = getMethod("methodWithVoidReturnAndParameterPayloadAnnotationWithExpression", String.class);
source.getExpressionForPayload(method).getExpressionString();
}
@Test(expected = IllegalStateException.class)
public void voidReturnAndParameterPayloadAnnotationWithValue() {
Method method = getMethod("methodWithVoidReturnAndParameterPayloadAnnotationWithValue", String.class);
source.getExpressionForPayload(method).getExpressionString();
}
@Test(expected = IllegalArgumentException.class)
public void voidReturnAndNoPayloadAnnotation() {
Method method = getMethod("methodWithVoidReturnAndNoPayloadAnnotation", String.class);
@@ -182,13 +195,21 @@ public class MethodAnnotationPublisherMetadataSourceTests {
@Publisher
@Payload("testExpression2")
public void methodWithHeaderAnnotations(String arg1, @Header("foo") String h1, @Header("bar") String h2) {
public void methodWithHeaderAnnotations(String arg1, @Header("foo") String h1, @Header(name = "bar") String h2) {
}
@Publisher
public void methodWithVoidReturnAndParameterPayloadAnnotation(@Payload String payload) {
}
@Publisher
public void methodWithVoidReturnAndParameterPayloadAnnotationWithExpression(@Payload(expression = "foo") String payload) {
}
@Publisher
public void methodWithVoidReturnAndParameterPayloadAnnotationWithValue(@Payload("foo") String payload) {
}
@Publisher
public void methodWithVoidReturnAndNoPayloadAnnotation(String payload) {
}