protected void setApplicationContext(ApplicationContext applicationContext) { this.stompHandler.setApplicationEventPublisher(applicationContext); }
@Test public void eventPublicationWithExceptions() { ApplicationEventPublisher publisher = mock(ApplicationEventPublisher.class); this.protocolHandler.setApplicationEventPublisher(publisher); this.protocolHandler.afterSessionStarted(this.session, this.channel); StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.CONNECT); Message<byte[]> message = MessageBuilder.createMessage(EMPTY_PAYLOAD, headers.getMessageHeaders()); TextMessage textMessage = new TextMessage(new StompEncoder().encode(message)); this.protocolHandler.handleMessageFromClient(this.session, textMessage, this.channel); verify(this.channel).send(this.messageCaptor.capture()); Message<?> actual = this.messageCaptor.getValue(); assertNotNull(actual); assertEquals(StompCommand.CONNECT, StompHeaderAccessor.wrap(actual).getCommand()); reset(this.channel); headers = StompHeaderAccessor.create(StompCommand.CONNECTED); message = MessageBuilder.createMessage(EMPTY_PAYLOAD, headers.getMessageHeaders()); this.protocolHandler.handleMessageToClient(this.session, message); assertEquals(1, this.session.getSentMessages().size()); textMessage = (TextMessage) this.session.getSentMessages().get(0); assertEquals("CONNECTED\n" + "user-name:joe\n" + "\n" + "\u0000", textMessage.getPayload()); this.protocolHandler.afterSessionEnded(this.session, CloseStatus.BAD_DATA, this.channel); verify(this.channel).send(this.messageCaptor.capture()); actual = this.messageCaptor.getValue(); assertNotNull(actual); StompHeaderAccessor accessor = StompHeaderAccessor.wrap(actual); assertEquals(StompCommand.DISCONNECT, accessor.getCommand()); assertEquals("s1", accessor.getSessionId()); assertEquals("joe", accessor.getUser().getName()); }
@Test public void eventPublication() { TestPublisher publisher = new TestPublisher(); this.protocolHandler.setApplicationEventPublisher(publisher); this.protocolHandler.afterSessionStarted(this.session, this.channel); StompHeaderAccessor headers = StompHeaderAccessor.create(StompCommand.CONNECT); Message<byte[]> message = MessageBuilder.createMessage(EMPTY_PAYLOAD, headers.getMessageHeaders()); TextMessage textMessage = new TextMessage(new StompEncoder().encode(message)); this.protocolHandler.handleMessageFromClient(this.session, textMessage, this.channel); headers = StompHeaderAccessor.create(StompCommand.CONNECTED); message = MessageBuilder.createMessage(EMPTY_PAYLOAD, headers.getMessageHeaders()); this.protocolHandler.handleMessageToClient(this.session, message); headers = StompHeaderAccessor.create(StompCommand.SUBSCRIBE); message = MessageBuilder.createMessage(EMPTY_PAYLOAD, headers.getMessageHeaders()); textMessage = new TextMessage(new StompEncoder().encode(message)); this.protocolHandler.handleMessageFromClient(this.session, textMessage, this.channel); headers = StompHeaderAccessor.create(StompCommand.UNSUBSCRIBE); message = MessageBuilder.createMessage(EMPTY_PAYLOAD, headers.getMessageHeaders()); textMessage = new TextMessage(new StompEncoder().encode(message)); this.protocolHandler.handleMessageFromClient(this.session, textMessage, this.channel); this.protocolHandler.afterSessionEnded(this.session, CloseStatus.BAD_DATA, this.channel); assertEquals("Unexpected events " + publisher.events, 5, publisher.events.size()); assertEquals(SessionConnectEvent.class, publisher.events.get(0).getClass()); assertEquals(SessionConnectedEvent.class, publisher.events.get(1).getClass()); assertEquals(SessionSubscribeEvent.class, publisher.events.get(2).getClass()); assertEquals(SessionUnsubscribeEvent.class, publisher.events.get(3).getClass()); assertEquals(SessionDisconnectEvent.class, publisher.events.get(4).getClass()); }
protected void setApplicationContext(ApplicationContext applicationContext) { this.stompHandler.setApplicationEventPublisher(applicationContext); }
protected void setApplicationContext(ApplicationContext applicationContext) { this.stompHandler.setApplicationEventPublisher(applicationContext); }