Browse Source

Fix client-library-url ignored in MVC namespace

Prior to this commit, the `client-library-url` XML attribute was not
effective in the MVC namespace, leaving the default value configured:

```xml
<websocket:sockjs client-library-url="/js/sockjs.js" />
```

This commit fixes the sockjs namespace handler and makes sure that this
attribute is configured on the `SockJsService` Bean to be created.

Issue: SPR-12874
pull/766/head
Brian Clozel 10 years ago
parent
commit
100d75da26
  1. 4
      spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceUtils.java
  2. 1
      spring-websocket/src/test/java/org/springframework/web/socket/config/HandlersBeanDefinitionParserTests.java
  3. 3
      spring-websocket/src/test/resources/org/springframework/web/socket/config/websocket-config-handlers-sockjs-attributes.xml

4
spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceUtils.java

@ -137,6 +137,10 @@ class WebSocketNamespaceUtils { @@ -137,6 +137,10 @@ class WebSocketNamespaceUtils {
if (!attrValue.isEmpty()) {
sockJsServiceDef.getPropertyValues().add("heartbeatTime", Long.valueOf(attrValue));
}
attrValue = sockJsElement.getAttribute("client-library-url");
if (!attrValue.isEmpty()) {
sockJsServiceDef.getPropertyValues().add("sockJsClientLibraryUrl", attrValue);
}
attrValue = sockJsElement.getAttribute("message-codec");
if (!attrValue.isEmpty()) {
sockJsServiceDef.getPropertyValues().add("messageCodec", new RuntimeBeanReference(attrValue));

1
spring-websocket/src/test/java/org/springframework/web/socket/config/HandlersBeanDefinitionParserTests.java

@ -230,6 +230,7 @@ public class HandlersBeanDefinitionParserTests { @@ -230,6 +230,7 @@ public class HandlersBeanDefinitionParserTests {
assertEquals(256, transportService.getDisconnectDelay());
assertEquals(1024, transportService.getHttpMessageCacheSize());
assertEquals(20, transportService.getHeartbeatTime());
assertEquals("/js/sockjs.min.js", transportService.getSockJsClientLibraryUrl());
assertEquals(TestMessageCodec.class, transportService.getMessageCodec().getClass());
List<HandshakeInterceptor> interceptors = transportService.getHandshakeInterceptors();

3
spring-websocket/src/test/resources/org/springframework/web/socket/config/websocket-config-handlers-sockjs-attributes.xml

@ -9,7 +9,8 @@ @@ -9,7 +9,8 @@
<websocket:mapping path="/test" handler="testHandler"/>
<websocket:sockjs name="testSockJsService" scheduler="testTaskScheduler" websocket-enabled="false"
session-cookie-needed="false" stream-bytes-limit="2048" disconnect-delay="256"
message-cache-size="1024" heartbeat-time="20" message-codec="messageCodec" suppress-cors="true">
message-cache-size="1024" heartbeat-time="20" message-codec="messageCodec"
client-library-url="/js/sockjs.min.js" suppress-cors="true">
<websocket:transport-handlers register-defaults="false">
<bean class="org.springframework.web.socket.sockjs.transport.handler.XhrPollingTransportHandler"/>
<ref bean="xhrStreamingTransportHandler"/>

Loading…
Cancel
Save