Search in sources :

Example 1 with WebSocketHandlerDecoratorFactory

use of org.springframework.web.socket.handler.WebSocketHandlerDecoratorFactory in project spring-integration by spring-projects.

the class WebSocketParserTests method testDefaultInboundChannelAdapterAndServerContainer.

@Test
@SuppressWarnings("unckecked")
public void testDefaultInboundChannelAdapterAndServerContainer() {
    Map<?, ?> urlMap = TestUtils.getPropertyValue(this.handlerMapping, "urlMap", Map.class);
    assertEquals(1, urlMap.size());
    assertTrue(urlMap.containsKey("/ws/**"));
    Object mappedHandler = urlMap.get("/ws/**");
    // WebSocketHttpRequestHandler -> ExceptionWebSocketHandlerDecorator - > LoggingWebSocketHandlerDecorator
    // -> IntegrationWebSocketContainer$IntegrationWebSocketHandler
    assertSame(TestUtils.getPropertyValue(this.serverWebSocketContainer, "webSocketHandler"), TestUtils.getPropertyValue(mappedHandler, "webSocketHandler.delegate.delegate"));
    assertSame(this.handshakeHandler, TestUtils.getPropertyValue(this.serverWebSocketContainer, "handshakeHandler"));
    HandshakeInterceptor[] interceptors = TestUtils.getPropertyValue(this.serverWebSocketContainer, "interceptors", HandshakeInterceptor[].class);
    assertNotNull(interceptors);
    assertEquals(1, interceptors.length);
    assertSame(this.handshakeInterceptor, interceptors[0]);
    assertEquals(100, TestUtils.getPropertyValue(this.serverWebSocketContainer, "sendTimeLimit"));
    assertEquals(100000, TestUtils.getPropertyValue(this.serverWebSocketContainer, "sendBufferSizeLimit"));
    assertArrayEquals(new String[] { "http://foo.com" }, TestUtils.getPropertyValue(this.serverWebSocketContainer, "origins", String[].class));
    WebSocketHandlerDecoratorFactory[] decoratorFactories = TestUtils.getPropertyValue(this.serverWebSocketContainer, "decoratorFactories", WebSocketHandlerDecoratorFactory[].class);
    assertNotNull(decoratorFactories);
    assertEquals(1, decoratorFactories.length);
    assertSame(this.decoratorFactory, decoratorFactories[0]);
    TransportHandlingSockJsService sockJsService = TestUtils.getPropertyValue(mappedHandler, "sockJsService", TransportHandlingSockJsService.class);
    assertSame(this.taskScheduler, sockJsService.getTaskScheduler());
    assertSame(this.sockJsMessageCodec, sockJsService.getMessageCodec());
    Map<TransportType, TransportHandler> transportHandlers = sockJsService.getTransportHandlers();
    // If "handshake-handler" is provided, "transport-handlers" isn't allowed
    assertEquals(8, transportHandlers.size());
    assertSame(this.handshakeHandler, TestUtils.getPropertyValue(transportHandlers.get(TransportType.WEBSOCKET), "handshakeHandler"));
    assertEquals(4000L, sockJsService.getDisconnectDelay());
    assertEquals(30000L, sockJsService.getHeartbeatTime());
    assertEquals(10000, sockJsService.getHttpMessageCacheSize());
    assertEquals(2000, sockJsService.getStreamBytesLimit());
    assertEquals("https://foo.sock.js", sockJsService.getSockJsClientLibraryUrl());
    assertFalse(sockJsService.isSessionCookieNeeded());
    assertFalse(sockJsService.isWebSocketEnabled());
    assertTrue(sockJsService.shouldSuppressCors());
    assertSame(this.serverWebSocketContainer, TestUtils.getPropertyValue(this.defaultInboundAdapter, "webSocketContainer"));
    assertNull(TestUtils.getPropertyValue(this.defaultInboundAdapter, "messageConverters"));
    assertEquals(TestUtils.getPropertyValue(this.defaultInboundAdapter, "messageConverter.converters"), TestUtils.getPropertyValue(this.defaultInboundAdapter, "defaultConverters"));
    assertEquals(String.class, TestUtils.getPropertyValue(this.defaultInboundAdapter, "payloadType", AtomicReference.class).get());
    assertTrue(TestUtils.getPropertyValue(this.defaultInboundAdapter, "useBroker", Boolean.class));
    assertSame(this.brokerHandler, TestUtils.getPropertyValue(this.defaultInboundAdapter, "brokerHandler"));
    SubProtocolHandlerRegistry subProtocolHandlerRegistry = TestUtils.getPropertyValue(this.defaultInboundAdapter, "subProtocolHandlerRegistry", SubProtocolHandlerRegistry.class);
    assertThat(TestUtils.getPropertyValue(subProtocolHandlerRegistry, "defaultProtocolHandler"), instanceOf(PassThruSubProtocolHandler.class));
    assertTrue(TestUtils.getPropertyValue(subProtocolHandlerRegistry, "protocolHandlers", Map.class).isEmpty());
}
Also used : TransportHandler(org.springframework.web.socket.sockjs.transport.TransportHandler) TransportHandlingSockJsService(org.springframework.web.socket.sockjs.transport.TransportHandlingSockJsService) SubProtocolHandlerRegistry(org.springframework.integration.websocket.support.SubProtocolHandlerRegistry) WebSocketHandlerDecoratorFactory(org.springframework.web.socket.handler.WebSocketHandlerDecoratorFactory) HandshakeInterceptor(org.springframework.web.socket.server.HandshakeInterceptor) PassThruSubProtocolHandler(org.springframework.integration.websocket.support.PassThruSubProtocolHandler) TransportType(org.springframework.web.socket.sockjs.transport.TransportType) Test(org.junit.Test)

Example 2 with WebSocketHandlerDecoratorFactory

use of org.springframework.web.socket.handler.WebSocketHandlerDecoratorFactory in project spring-integration by spring-projects.

the class ServerWebSocketContainer method registerWebSocketHandlers.

@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    WebSocketHandler webSocketHandler = this.webSocketHandler;
    if (this.decoratorFactories != null) {
        for (WebSocketHandlerDecoratorFactory factory : this.decoratorFactories) {
            webSocketHandler = factory.decorate(webSocketHandler);
        }
    }
    WebSocketHandlerRegistration registration = registry.addHandler(webSocketHandler, this.paths).setHandshakeHandler(this.handshakeHandler).addInterceptors(this.interceptors).setAllowedOrigins(this.origins);
    if (this.sockJsServiceOptions != null) {
        SockJsServiceRegistration sockJsServiceRegistration = registration.withSockJS();
        if (this.sockJsServiceOptions.webSocketEnabled != null) {
            sockJsServiceRegistration.setWebSocketEnabled(this.sockJsServiceOptions.webSocketEnabled);
        }
        if (this.sockJsServiceOptions.clientLibraryUrl != null) {
            sockJsServiceRegistration.setClientLibraryUrl(this.sockJsServiceOptions.clientLibraryUrl);
        }
        if (this.sockJsServiceOptions.disconnectDelay != null) {
            sockJsServiceRegistration.setDisconnectDelay(this.sockJsServiceOptions.disconnectDelay);
        }
        if (this.sockJsServiceOptions.heartbeatTime != null) {
            sockJsServiceRegistration.setHeartbeatTime(this.sockJsServiceOptions.heartbeatTime);
        }
        if (this.sockJsServiceOptions.httpMessageCacheSize != null) {
            sockJsServiceRegistration.setHttpMessageCacheSize(this.sockJsServiceOptions.httpMessageCacheSize);
        }
        if (this.sockJsServiceOptions.heartbeatTime != null) {
            sockJsServiceRegistration.setHeartbeatTime(this.sockJsServiceOptions.heartbeatTime);
        }
        if (this.sockJsServiceOptions.sessionCookieNeeded != null) {
            sockJsServiceRegistration.setSessionCookieNeeded(this.sockJsServiceOptions.sessionCookieNeeded);
        }
        if (this.sockJsServiceOptions.streamBytesLimit != null) {
            sockJsServiceRegistration.setStreamBytesLimit(this.sockJsServiceOptions.streamBytesLimit);
        }
        if (this.sockJsServiceOptions.transportHandlers != null) {
            sockJsServiceRegistration.setTransportHandlers(this.sockJsServiceOptions.transportHandlers);
        }
        if (this.sockJsServiceOptions.taskScheduler != null) {
            sockJsServiceRegistration.setTaskScheduler(this.sockJsServiceOptions.taskScheduler);
        }
        if (this.sockJsServiceOptions.messageCodec != null) {
            sockJsServiceRegistration.setMessageCodec(this.sockJsServiceOptions.messageCodec);
        }
        if (this.sockJsServiceOptions.suppressCors != null) {
            sockJsServiceRegistration.setSupressCors(this.sockJsServiceOptions.suppressCors);
        }
    }
}
Also used : SockJsServiceRegistration(org.springframework.web.socket.config.annotation.SockJsServiceRegistration) WebSocketHandler(org.springframework.web.socket.WebSocketHandler) WebSocketHandlerDecoratorFactory(org.springframework.web.socket.handler.WebSocketHandlerDecoratorFactory) WebSocketHandlerRegistration(org.springframework.web.socket.config.annotation.WebSocketHandlerRegistration)

Aggregations

WebSocketHandlerDecoratorFactory (org.springframework.web.socket.handler.WebSocketHandlerDecoratorFactory)2 Test (org.junit.Test)1 PassThruSubProtocolHandler (org.springframework.integration.websocket.support.PassThruSubProtocolHandler)1 SubProtocolHandlerRegistry (org.springframework.integration.websocket.support.SubProtocolHandlerRegistry)1 WebSocketHandler (org.springframework.web.socket.WebSocketHandler)1 SockJsServiceRegistration (org.springframework.web.socket.config.annotation.SockJsServiceRegistration)1 WebSocketHandlerRegistration (org.springframework.web.socket.config.annotation.WebSocketHandlerRegistration)1 HandshakeInterceptor (org.springframework.web.socket.server.HandshakeInterceptor)1 TransportHandler (org.springframework.web.socket.sockjs.transport.TransportHandler)1 TransportHandlingSockJsService (org.springframework.web.socket.sockjs.transport.TransportHandlingSockJsService)1 TransportType (org.springframework.web.socket.sockjs.transport.TransportType)1