Refactored from @HeaderAttribute and @HeaderProperty to a single @Header annotation now that MessageHeaders contains a single map (INT-306).
This commit is contained in:
@@ -41,8 +41,8 @@ import org.springframework.integration.message.StringMessage;
|
||||
public class AnnotationMethodMessageMapperTests {
|
||||
|
||||
@Test
|
||||
public void testOptionalAttribute() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("optionalAttribute", Integer.class);
|
||||
public void testOptionalHeader() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("optionalHeader", Integer.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
Object[] args = (Object[]) mapper.mapMessage(new StringMessage("foo"));
|
||||
assertEquals(1, args.length);
|
||||
@@ -50,15 +50,15 @@ public class AnnotationMethodMessageMapperTests {
|
||||
}
|
||||
|
||||
@Test(expected=MessageHandlingException.class)
|
||||
public void testRequiredAttributeNotProvided() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("requiredAttribute", Integer.class);
|
||||
public void testRequiredHeaderNotProvided() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("requiredHeader", Integer.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
mapper.mapMessage(new StringMessage("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequiredAttributeProvided() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("requiredAttribute", Integer.class);
|
||||
public void testRequiredHeaderProvided() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("requiredHeader", Integer.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
Message<String> message = MessageBuilder.fromPayload("foo")
|
||||
.setHeader("num", new Integer(123)).build();
|
||||
@@ -67,31 +67,39 @@ public class AnnotationMethodMessageMapperTests {
|
||||
assertEquals(new Integer(123), args[0]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOptionalProperty() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("optionalProperty", String.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
Object[] args = (Object[]) mapper.mapMessage(new StringMessage("foo"));
|
||||
assertEquals(1, args.length);
|
||||
assertNull(args[0]);
|
||||
}
|
||||
|
||||
@Test(expected=MessageHandlingException.class)
|
||||
public void testRequiredPropertyNotProvided() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("requiredProperty", String.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
mapper.mapMessage(new StringMessage("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequiredPropertyProvided() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("requiredProperty", String.class);
|
||||
public void testOptionalAndRequiredHeaderWithOnlyOptionalHeaderProvided() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("optionalAndRequiredHeader", String.class, Integer.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
Message<String> message = MessageBuilder.fromPayload("foo")
|
||||
.setHeader("prop", "bar").build();
|
||||
.setHeader("prop", "bar").build();
|
||||
mapper.mapMessage(message);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOptionalAndRequiredHeaderWithOnlyRequiredHeaderProvided() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("optionalAndRequiredHeader", String.class, Integer.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
Message<String> message = MessageBuilder.fromPayload("foo")
|
||||
.setHeader("num", new Integer(123)).build();
|
||||
Object[] args = (Object[]) mapper.mapMessage(message);
|
||||
assertEquals(1, args.length);
|
||||
assertEquals(2, args.length);
|
||||
assertNull(args[0]);
|
||||
assertEquals(123, args[1]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOptionalAndRequiredHeaderWithBothHeadersProvided() throws Exception {
|
||||
Method method = TestHandler.class.getMethod("optionalAndRequiredHeader", String.class, Integer.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
Message<String> message = MessageBuilder.fromPayload("foo")
|
||||
.setHeader("num", new Integer(123))
|
||||
.setHeader("prop", "bar")
|
||||
.build();
|
||||
Object[] args = (Object[]) mapper.mapMessage(message);
|
||||
assertEquals(2, args.length);
|
||||
assertEquals("bar", args[0]);
|
||||
assertEquals(123, args[1]);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -210,7 +218,7 @@ public class AnnotationMethodMessageMapperTests {
|
||||
@Test
|
||||
public void testMessageAndHeaderWithAdapter() throws Exception {
|
||||
TestHandler handler = new TestHandler();
|
||||
Method method = handler.getClass().getMethod("messageAndAttribute", Message.class, Integer.class);
|
||||
Method method = handler.getClass().getMethod("messageAndHeader", Message.class, Integer.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
DefaultMessageHandlerAdapter adapter = new DefaultMessageHandlerAdapter();
|
||||
adapter.setObject(handler);
|
||||
@@ -223,9 +231,9 @@ public class AnnotationMethodMessageMapperTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeaderAndPropertyWithAdapter() throws Exception {
|
||||
public void testMultipleHeadersWithAdapter() throws Exception {
|
||||
TestHandler handler = new TestHandler();
|
||||
Method method = handler.getClass().getMethod("propertyAndAttribute", String.class, Integer.class);
|
||||
Method method = handler.getClass().getMethod("twoHeaders", String.class, Integer.class);
|
||||
AnnotationMethodMessageMapper mapper = new AnnotationMethodMessageMapper(method);
|
||||
DefaultMessageHandlerAdapter adapter = new DefaultMessageHandlerAdapter();
|
||||
adapter.setObject(handler);
|
||||
@@ -247,33 +255,28 @@ public class AnnotationMethodMessageMapperTests {
|
||||
}
|
||||
|
||||
@Handler
|
||||
public String messageAndAttribute(Message<?> message, @HeaderAttribute("number") Integer num) {
|
||||
public String messageAndHeader(Message<?> message, @Header("number") Integer num) {
|
||||
return (String) message.getPayload() + "-" + num.toString();
|
||||
}
|
||||
|
||||
@Handler
|
||||
public String propertyAndAttribute(@HeaderProperty String prop, @HeaderAttribute("number") Integer num) {
|
||||
public String twoHeaders(@Header String prop, @Header("number") Integer num) {
|
||||
return prop + "-" + num.toString();
|
||||
}
|
||||
|
||||
@Handler
|
||||
public Integer optionalAttribute(@HeaderAttribute(required=false) Integer num) {
|
||||
public Integer optionalHeader(@Header(required=false) Integer num) {
|
||||
return num;
|
||||
}
|
||||
|
||||
@Handler
|
||||
public Integer requiredAttribute(@HeaderAttribute(value="num", required=true) Integer num) {
|
||||
public Integer requiredHeader(@Header(value="num", required=true) Integer num) {
|
||||
return num;
|
||||
}
|
||||
|
||||
@Handler
|
||||
public String optionalProperty(@HeaderProperty(required=false) String prop) {
|
||||
return prop;
|
||||
}
|
||||
|
||||
@Handler
|
||||
public String requiredProperty(@HeaderProperty(value="prop", required=true) String prop) {
|
||||
return prop;
|
||||
public String optionalAndRequiredHeader(@Header(required=false) String prop, @Header(value="num", required=true) Integer num) {
|
||||
return prop + num;
|
||||
}
|
||||
|
||||
@Handler
|
||||
|
||||
@@ -26,17 +26,16 @@ import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.integration.ConfigurationException;
|
||||
import org.springframework.integration.channel.ChannelRegistry;
|
||||
import org.springframework.integration.channel.ChannelRegistryAware;
|
||||
import org.springframework.integration.channel.DefaultChannelRegistry;
|
||||
import org.springframework.integration.channel.MessageChannel;
|
||||
import org.springframework.integration.channel.QueueChannel;
|
||||
import org.springframework.integration.handler.annotation.HeaderAttribute;
|
||||
import org.springframework.integration.handler.annotation.HeaderProperty;
|
||||
import org.springframework.integration.handler.annotation.Header;
|
||||
import org.springframework.integration.message.GenericMessage;
|
||||
import org.springframework.integration.message.Message;
|
||||
import org.springframework.integration.message.MessageBuilder;
|
||||
import org.springframework.integration.message.MessageHandlingException;
|
||||
import org.springframework.integration.message.StringMessage;
|
||||
|
||||
/**
|
||||
@@ -75,7 +74,7 @@ public class RouterMessageHandlerAdapterTests {
|
||||
@Test
|
||||
public void testChannelNameResolutionByHeader() throws Exception {
|
||||
SingleChannelNameRoutingTestBean testBean = new SingleChannelNameRoutingTestBean();
|
||||
Method routingMethod = testBean.getClass().getMethod("routeByProperty", String.class);
|
||||
Method routingMethod = testBean.getClass().getMethod("routeByHeader", String.class);
|
||||
RouterMessageHandlerAdapter adapter = new RouterMessageHandlerAdapter(testBean, routingMethod);
|
||||
Message<String> message = MessageBuilder.fromPayload("bar")
|
||||
.setHeader("returnAddress", "baz").build();
|
||||
@@ -94,10 +93,10 @@ public class RouterMessageHandlerAdapterTests {
|
||||
assertEquals("bar", message2.getPayload());
|
||||
}
|
||||
|
||||
@Test(expected=ConfigurationException.class)
|
||||
public void testFailsWhenPropertyAndAttributeAreBothProvided() throws Exception {
|
||||
InvalidRoutingTestBean testBean = new InvalidRoutingTestBean();
|
||||
Method routingMethod = testBean.getClass().getMethod("tooManyAnnotations", String.class);
|
||||
@Test(expected=MessageHandlingException.class)
|
||||
public void testFailsWhenRequireddHeaderIsNotProvided() throws Exception {
|
||||
SingleChannelNameRoutingTestBean testBean = new SingleChannelNameRoutingTestBean();
|
||||
Method routingMethod = testBean.getClass().getMethod("routeByHeader", String.class);
|
||||
RouterMessageHandlerAdapter adapter = new RouterMessageHandlerAdapter(testBean, routingMethod);
|
||||
adapter.afterPropertiesSet();
|
||||
adapter.handle(new GenericMessage<String>("testing"));
|
||||
@@ -542,11 +541,7 @@ public class RouterMessageHandlerAdapterTests {
|
||||
return name + "-channel";
|
||||
}
|
||||
|
||||
public String routeByProperty(@HeaderProperty("returnAddress") String name) {
|
||||
return name + "-channel";
|
||||
}
|
||||
|
||||
public String routeByAttribute(@HeaderAttribute("returnAddress") String name) {
|
||||
public String routeByHeader(@Header("returnAddress") String name) {
|
||||
return name + "-channel";
|
||||
}
|
||||
|
||||
@@ -673,12 +668,4 @@ public class RouterMessageHandlerAdapterTests {
|
||||
}
|
||||
}
|
||||
|
||||
public static class InvalidRoutingTestBean {
|
||||
|
||||
public String tooManyAnnotations(@HeaderProperty("foo") @HeaderAttribute("bar") String name) {
|
||||
return name + "-channel";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,8 +25,7 @@ import java.util.Properties;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.integration.annotation.Transformer;
|
||||
import org.springframework.integration.handler.annotation.HeaderAttribute;
|
||||
import org.springframework.integration.handler.annotation.HeaderProperty;
|
||||
import org.springframework.integration.handler.annotation.Header;
|
||||
import org.springframework.integration.message.GenericMessage;
|
||||
import org.springframework.integration.message.Message;
|
||||
import org.springframework.integration.message.MessageBuilder;
|
||||
@@ -72,11 +71,11 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeaderAttributeAnnotation() throws Exception {
|
||||
public void testHeaderAnnotation() throws Exception {
|
||||
TestBean testBean = new TestBean();
|
||||
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
|
||||
adapter.setObject(testBean);
|
||||
adapter.setMethod(testBean.getClass().getMethod("attributeTest", String.class, Integer.class));
|
||||
adapter.setMethod(testBean.getClass().getMethod("headerTest", String.class, Integer.class));
|
||||
Message<String> message = MessageBuilder.fromPayload("foo")
|
||||
.setHeader("number", 123).build();
|
||||
Message<?> result = adapter.handle(message);
|
||||
@@ -88,22 +87,21 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
TestBean testBean = new TestBean();
|
||||
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
|
||||
adapter.setObject(testBean);
|
||||
adapter.setMethod(testBean.getClass().getMethod("attributeTest", String.class, Integer.class));
|
||||
adapter.setMethod(testBean.getClass().getMethod("headerTest", String.class, Integer.class));
|
||||
Message<String> message = MessageBuilder.fromPayload("foo")
|
||||
.setHeader("wrong", 123).build();
|
||||
adapter.handle(message);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeaderAnnotation() throws Exception {
|
||||
public void testOptionalHeaderAnnotation() throws Exception {
|
||||
TestBean testBean = new TestBean();
|
||||
AnnotationMethodTransformerAdapter adapter = new AnnotationMethodTransformerAdapter();
|
||||
adapter.setObject(testBean);
|
||||
adapter.setMethod(testBean.getClass().getMethod("propertyTest", String.class, String.class));
|
||||
Message<String> message = MessageBuilder.fromPayload("foo")
|
||||
.setHeader("suffix", "bar").build();
|
||||
adapter.setMethod(testBean.getClass().getMethod("optionalHeaderTest", String.class, Integer.class));
|
||||
Message<String> message = MessageBuilder.fromPayload("foo").build();
|
||||
Message<?> result = adapter.handle(message);
|
||||
assertEquals("foobar", result.getPayload());
|
||||
assertEquals("foonull", result.getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -153,13 +151,13 @@ public class AnnotationMethodTransformerAdapterTests {
|
||||
}
|
||||
|
||||
@Transformer
|
||||
public String attributeTest(String s, @HeaderAttribute("number") Integer num) {
|
||||
public String headerTest(String s, @Header("number") Integer num) {
|
||||
return s + num;
|
||||
}
|
||||
|
||||
@Transformer
|
||||
public String propertyTest(String s, @HeaderProperty("suffix") String suffix) {
|
||||
return s + suffix;
|
||||
public String optionalHeaderTest(String s, @Header(value="number", required=false) Integer num) {
|
||||
return s + num;
|
||||
}
|
||||
|
||||
@Transformer
|
||||
|
||||
Reference in New Issue
Block a user