private static Set<TransportHandler> getDefaultTransportHandlers(@Nullable Collection<TransportHandler> overrides) { Set<TransportHandler> result = new LinkedHashSet<>(8); result.add(new XhrPollingTransportHandler()); result.add(new XhrReceivingTransportHandler()); result.add(new XhrStreamingTransportHandler()); result.add(new EventSourceTransportHandler()); result.add(new HtmlFileTransportHandler()); try { result.add(new WebSocketTransportHandler(new DefaultHandshakeHandler())); } catch (Exception ex) { Log logger = LogFactory.getLog(DefaultSockJsService.class); if (logger.isWarnEnabled()) { logger.warn("Failed to create a default WebSocketTransportHandler", ex); } } if (overrides != null) { result.addAll(overrides); } return result; }
@Override @Nullable protected String[] readMessages(ServerHttpRequest request) throws IOException { return getServiceConfig().getMessageCodec().decodeInputStream(request.getBody()); }
@Test public void defaultTransportHandlersWithOverride() { XhrReceivingTransportHandler xhrHandler = new XhrReceivingTransportHandler(); DefaultSockJsService service = new DefaultSockJsService(mock(TaskScheduler.class), xhrHandler); Map<TransportType, TransportHandler> handlers = service.getTransportHandlers(); assertEquals(6, handlers.size()); assertSame(xhrHandler, handlers.get(xhrHandler.getTransportType())); }
@Test(expected = IllegalArgumentException.class) public void readMessagesNoSession() throws Exception { WebSocketHandler webSocketHandler = mock(WebSocketHandler.class); new XhrReceivingTransportHandler().handleRequest(this.request, this.response, webSocketHandler, null); }
@Test public void delegateMessageException() throws Exception { StubSockJsServiceConfig sockJsConfig = new StubSockJsServiceConfig(); this.servletRequest.setContent("[\"x\"]".getBytes("UTF-8")); WebSocketHandler wsHandler = mock(WebSocketHandler.class); TestHttpSockJsSession session = new TestHttpSockJsSession("1", sockJsConfig, wsHandler, null); session.delegateConnectionEstablished(); willThrow(new Exception()).given(wsHandler).handleMessage(session, new TextMessage("x")); try { XhrReceivingTransportHandler transportHandler = new XhrReceivingTransportHandler(); transportHandler.initialize(sockJsConfig); transportHandler.handleRequest(this.request, this.response, wsHandler, session); fail("Expected exception"); } catch (SockJsMessageDeliveryException ex) { assertNull(session.getCloseStatus()); } }
private void handleRequestAndExpectFailure() throws Exception { resetResponse(); WebSocketHandler wsHandler = mock(WebSocketHandler.class); AbstractSockJsSession session = new TestHttpSockJsSession("1", new StubSockJsServiceConfig(), wsHandler, null); new XhrReceivingTransportHandler().handleRequest(this.request, this.response, wsHandler, session); assertEquals(500, this.servletResponse.getStatus()); verifyNoMoreInteractions(wsHandler); }
@Test public void customizedTransportHandlerList() { TransportHandlingSockJsService service = new TransportHandlingSockJsService( mock(TaskScheduler.class), new XhrPollingTransportHandler(), new XhrReceivingTransportHandler()); Map<TransportType, TransportHandler> actualHandlers = service.getTransportHandlers(); assertEquals(2, actualHandlers.size()); }
@Override @Nullable protected String[] readMessages(ServerHttpRequest request) throws IOException { return getServiceConfig().getMessageCodec().decodeInputStream(request.getBody()); }
@Test public void readMessagesXhr() throws Exception { this.servletRequest.setContent("[\"x\"]".getBytes("UTF-8")); handleRequest(new XhrReceivingTransportHandler()); assertEquals(204, this.servletResponse.getStatus()); }
@Override @Nullable protected String[] readMessages(ServerHttpRequest request) throws IOException { return getServiceConfig().getMessageCodec().decodeInputStream(request.getBody()); }
private static Set<TransportHandler> getDefaultTransportHandlers(@Nullable Collection<TransportHandler> overrides) { Set<TransportHandler> result = new LinkedHashSet<>(8); result.add(new XhrPollingTransportHandler()); result.add(new XhrReceivingTransportHandler()); result.add(new XhrStreamingTransportHandler()); result.add(new EventSourceTransportHandler()); result.add(new HtmlFileTransportHandler()); try { result.add(new WebSocketTransportHandler(new DefaultHandshakeHandler())); } catch (Exception ex) { Log logger = LogFactory.getLog(DefaultSockJsService.class); if (logger.isWarnEnabled()) { logger.warn("Failed to create a default WebSocketTransportHandler", ex); } } if (overrides != null) { result.addAll(overrides); } return result; }
@SuppressWarnings("deprecation") private static Set<TransportHandler> getDefaultTransportHandlers(@Nullable Collection<TransportHandler> overrides) { Set<TransportHandler> result = new LinkedHashSet<>(8); result.add(new XhrPollingTransportHandler()); result.add(new XhrReceivingTransportHandler()); result.add(new XhrStreamingTransportHandler()); result.add(new JsonpPollingTransportHandler()); result.add(new JsonpReceivingTransportHandler()); result.add(new EventSourceTransportHandler()); result.add(new HtmlFileTransportHandler()); try { result.add(new WebSocketTransportHandler(new DefaultHandshakeHandler())); } catch (Exception ex) { Log logger = LogFactory.getLog(DefaultSockJsService.class); if (logger.isWarnEnabled()) { logger.warn("Failed to create a default WebSocketTransportHandler", ex); } } if (overrides != null) { result.addAll(overrides); } return result; }