@Override public final void stop(Runnable callback) { synchronized (this.lifecycleMonitor) { stop(); callback.run(); } }
@MySendToUser(dest = {"/dest3", "/dest4"}) String handleAndSendToOverride() { return PAYLOAD; } }
@MySendTo(dest = {"/dest3", "/dest4"}) String handleAndSendToOverride() { return PAYLOAD; } }
@Before public void setup() { MockitoAnnotations.initMocks(this); SimpMessagingTemplate brokerTemplate = new SimpMessagingTemplate(this.channel); brokerTemplate.setMessageConverter(this.converter); this.messageHandler = new TestSimpAnnotationMethodMessageHandler(brokerTemplate, this.channel, this.channel); this.messageHandler.setApplicationContext(new StaticApplicationContext()); this.messageHandler.setValidator(new StringTestValidator(TEST_INVALID_VALUE)); this.messageHandler.afterPropertiesSet(); this.testController = new TestController(); }
@Test public void validationError() { Message<?> message = createMessage("/pre/validation/payload"); this.messageHandler.registerHandler(this.testController); this.messageHandler.handleMessage(message); assertEquals("handleValidationException", this.testController.method); }
@JsonView(MyJacksonView1.class) @SuppressWarnings("unused") JacksonViewBean handleAndSendToJsonView() { JacksonViewBean payload = new JacksonViewBean(); payload.setWithView1("with"); payload.setWithView2("with"); payload.setWithoutView("without"); return payload; }
@Test public void placeholder() throws Exception { Message<?> message = createMessage("/pre/myValue"); this.messageHandler.setEmbeddedValueResolver(value -> ("/${myProperty}".equals(value) ? "/myValue" : value)); this.messageHandler.registerHandler(this.testController); this.messageHandler.handleMessage(message); assertEquals("placeholder", this.testController.method); }
@Override public void afterPropertiesSet() { initControllerAdviceCache(); super.afterPropertiesSet(); }
/** * Protected method for plugging in a custom subclass of * {@link org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler * SimpAnnotationMethodMessageHandler}. * @since 4.2 */ protected SimpAnnotationMethodMessageHandler createAnnotationMethodMessageHandler() { return new SimpAnnotationMethodMessageHandler(clientInboundChannel(), clientOutboundChannel(), brokerMessagingTemplate()); }
private Message<?> createMessage(String destination, Map<String, Object> headers) { return createMessage(SimpMessageType.MESSAGE, destination, headers); }
public void registerHandler(Object handler) { super.detectHandlerMethods(handler); } }
@Test public void optionalHeaderArgumentResolutionWhenNotPresent() { Message<?> message = createMessage("/pre/optionalHeaders"); this.messageHandler.registerHandler(this.testController); this.messageHandler.handleMessage(message); assertEquals("optionalHeaders", this.testController.method); assertNull(this.testController.arguments.get("foo1")); assertNull(this.testController.arguments.get("foo2")); }
@MySendToUser(dest = "/dest-default") @SuppressWarnings("unused") private static class SendToUserWithSendToOverrideTestBean { @SendTo String handleAndSendToDefaultDestination() { return PAYLOAD; } @MySendTo(dest = {"/dest3", "/dest4"}) String handleAndSendToOverride() { return PAYLOAD; } }
@MySendTo(dest = {"/dest3", "/dest4"}) String handleAndSendToOverride() { return PAYLOAD; } }
private Message<?> createMessage(String destination) { return createMessage(destination, null); }
@Test public void subscribeEventDestinationVariableResolution() { Message<?> message = createMessage(SimpMessageType.SUBSCRIBE, "/pre/sub/bar/value", null); this.messageHandler.registerHandler(this.testController); this.messageHandler.handleMessage(message); assertEquals("subscribeEventDestinationVariable", this.testController.method); assertEquals("bar", this.testController.arguments.get("foo")); assertEquals("value", this.testController.arguments.get("name")); }
@MySendToUser(dest = "/dest-default") @SuppressWarnings("unused") private static class SendToUserTestBean { String handleNoAnnotation() { return PAYLOAD; } @SendToUser String handleAndSendToDefaultDest() { return PAYLOAD; } @MySendToUser(dest = {"/dest3", "/dest4"}) String handleAndSendToOverride() { return PAYLOAD; } }
@MySendTo(dest = "/dest-default") @SuppressWarnings("unused") private static class SendToTestBean { String handleNoAnnotation() { return PAYLOAD; } @SendTo String handleAndSendToDefaultDest() { return PAYLOAD; } @MySendTo(dest = {"/dest3", "/dest4"}) String handleAndSendToOverride() { return PAYLOAD; } }
@Test public void messageMappingDestinationVariableResolution() { Message<?> message = createMessage("/pre/message/bar/value"); this.messageHandler.registerHandler(this.testController); this.messageHandler.handleMessage(message); assertEquals("messageMappingDestinationVariable", this.testController.method); assertEquals("bar", this.testController.arguments.get("foo")); assertEquals("value", this.testController.arguments.get("name")); }
@Test public void simpleBinding() { Message<?> message = createMessage("/pre/binding/id/12"); this.messageHandler.registerHandler(this.testController); this.messageHandler.handleMessage(message); assertEquals("simpleBinding", this.testController.method); assertTrue("should be bound to type long", this.testController.arguments.get("id") instanceof Long); assertEquals(12L, this.testController.arguments.get("id")); }