From a640d84961c87bc6bf49f2db3bd1c2ca84b56de5 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 29 Oct 2013 21:57:27 -0400 Subject: [PATCH] Fix issue in AbstractMethodMessageHandler --- .../method/AbstractMethodMessageHandler.java | 3 ++- .../SimpAnnotationMethodIntegrationTests.java | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/method/AbstractMethodMessageHandler.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/method/AbstractMethodMessageHandler.java index a69b921a0c..70220df649 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/method/AbstractMethodMessageHandler.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/method/AbstractMethodMessageHandler.java @@ -438,7 +438,8 @@ public abstract class AbstractMethodMessageHandler protected void handleMatch(T mapping, HandlerMethod handlerMethod, String lookupDestination, Message message) { - InvocableHandlerMethod invocable = new InvocableHandlerMethod(handlerMethod.createWithResolvedBean()); + handlerMethod = handlerMethod.createWithResolvedBean(); + InvocableHandlerMethod invocable = new InvocableHandlerMethod(handlerMethod); invocable.setMessageMethodArgumentResolvers(this.argumentResolvers); try { diff --git a/spring-messaging/src/test/java/org/springframework/messaging/simp/handler/SimpAnnotationMethodIntegrationTests.java b/spring-messaging/src/test/java/org/springframework/messaging/simp/handler/SimpAnnotationMethodIntegrationTests.java index 85b8a1f08c..846a813c15 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/simp/handler/SimpAnnotationMethodIntegrationTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/simp/handler/SimpAnnotationMethodIntegrationTests.java @@ -35,6 +35,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.SubscribableChannel; +import org.springframework.messaging.handler.annotation.MessageExceptionHandler; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.simp.config.DelegatingWebSocketMessageBrokerConfiguration; import org.springframework.messaging.simp.config.MessageBrokerConfigurer; @@ -70,7 +71,7 @@ public class SimpAnnotationMethodIntegrationTests extends AbstractWebSocketInteg {new JettyWebSocketTestServer(), new JettyWebSocketClient()}, {new TomcatWebSocketTestServer(), new StandardWebSocketClient()} }); - }; + } @Override @@ -137,6 +138,7 @@ public class SimpAnnotationMethodIntegrationTests extends AbstractWebSocketInteg } + @SuppressWarnings("unused") @IntegrationTestController static class SimpleController { @@ -146,8 +148,20 @@ public class SimpAnnotationMethodIntegrationTests extends AbstractWebSocketInteg public void handle() { this.latch.countDown(); } + + @MessageMapping(value="/exception") + public void handleWithError() { + throw new IllegalArgumentException("Bad input"); + } + + @MessageExceptionHandler + public void handleException(IllegalArgumentException ex) { + + } + } + @SuppressWarnings("unused") @IntegrationTestController static class IncrementController { @@ -164,7 +178,7 @@ public class SimpAnnotationMethodIntegrationTests extends AbstractWebSocketInteg private final int expected; - private final List actual = new CopyOnWriteArrayList(); + private final List actual = new CopyOnWriteArrayList<>(); private final CountDownLatch latch;