diff --git a/spring-integration-core/src/test/java/org/springframework/integration/handler/DefaultMessageHandlerAdapterTests.java b/spring-integration-core/src/test/java/org/springframework/integration/handler/DefaultMessageHandlerAdapterTests.java index a7c489107a..de63d1cd39 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/handler/DefaultMessageHandlerAdapterTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/handler/DefaultMessageHandlerAdapterTests.java @@ -81,6 +81,17 @@ public class DefaultMessageHandlerAdapterTests { assertEquals("testing-5", result.getPayload()); } + @Test + public void testMessageSubclassAsMethodParameterAndMessageSubclassAsReturnValue() { + DefaultMessageHandlerAdapter adapter = new DefaultMessageHandlerAdapter(); + adapter.setShouldUseMapperOnInvocation(false); + adapter.setObject(new TestHandler()); + adapter.setMethodName("acceptMessageSubclassAndReturnMessageSubclass"); + adapter.afterPropertiesSet(); + Message result = adapter.handle(new StringMessage("testing")); + assertEquals("testing-6", result.getPayload()); + } + private static class TestHandler { @@ -103,6 +114,10 @@ public class DefaultMessageHandlerAdapterTests { public Message acceptMessageSubclassAndReturnMessage(StringMessage m) { return new StringMessage(m.getPayload() + "-5"); } + + public StringMessage acceptMessageSubclassAndReturnMessageSubclass(StringMessage m) { + return new StringMessage(m.getPayload() + "-6"); + } } } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/handler/config/DefaultMessageHandlerCreatorTests.java b/spring-integration-core/src/test/java/org/springframework/integration/handler/config/DefaultMessageHandlerCreatorTests.java index c0a650e1b7..d643dd19f5 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/handler/config/DefaultMessageHandlerCreatorTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/handler/config/DefaultMessageHandlerCreatorTests.java @@ -74,6 +74,15 @@ public class DefaultMessageHandlerCreatorTests { assertEquals("testing-5", result.getPayload()); } + @Test + public void testMessageSubclassAsMethodParameterAndMessageSubclassAsReturnValue() throws Exception { + DefaultMessageHandlerCreator creator = new DefaultMessageHandlerCreator(); + MessageHandler handler = creator.createHandler(new TestHandler(), + TestHandler.class.getMethod("acceptMessageSubclassAndReturnMessageSubclass", StringMessage.class), null); + Message result = handler.handle(new StringMessage("testing")); + assertEquals("testing-6", result.getPayload()); + } + private static class TestHandler { @@ -96,5 +105,10 @@ public class DefaultMessageHandlerCreatorTests { public Message acceptMessageSubclassAndReturnMessage(StringMessage m) { return new StringMessage(m.getPayload() + "-5"); } + + public StringMessage acceptMessageSubclassAndReturnMessageSubclass(StringMessage m) { + return new StringMessage(m.getPayload() + "-6"); + } } + }