master
Rossen Stoyanchev 10 years ago
parent 0dddb6f3e1
commit 4372dac002
  1. 12
      spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebMvcStompEndpointRegistry.java
  2. 11
      spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebSocketMessageBrokerConfigurationSupport.java

@ -21,9 +21,7 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.messaging.simp.user.UserSessionRegistry; import org.springframework.messaging.simp.user.UserSessionRegistry;
import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.TaskScheduler;
import org.springframework.util.Assert; import org.springframework.util.Assert;
@ -44,7 +42,7 @@ import org.springframework.web.socket.handler.WebSocketHandlerDecorator;
* @author Artem Bilan * @author Artem Bilan
* @since 4.0 * @since 4.0
*/ */
public class WebMvcStompEndpointRegistry implements StompEndpointRegistry, ApplicationContextAware { public class WebMvcStompEndpointRegistry implements StompEndpointRegistry {
private final WebSocketHandler webSocketHandler; private final WebSocketHandler webSocketHandler;
@ -88,17 +86,15 @@ public class WebMvcStompEndpointRegistry implements StompEndpointRegistry, Appli
this.sockJsScheduler = defaultSockJsTaskScheduler; this.sockJsScheduler = defaultSockJsTaskScheduler;
} }
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.stompHandler.setApplicationEventPublisher(applicationContext);
}
private static SubProtocolWebSocketHandler unwrapSubProtocolWebSocketHandler(WebSocketHandler wsHandler) { private static SubProtocolWebSocketHandler unwrapSubProtocolWebSocketHandler(WebSocketHandler wsHandler) {
WebSocketHandler actual = WebSocketHandlerDecorator.unwrap(wsHandler); WebSocketHandler actual = WebSocketHandlerDecorator.unwrap(wsHandler);
Assert.isInstanceOf(SubProtocolWebSocketHandler.class, actual, "No SubProtocolWebSocketHandler in " + wsHandler); Assert.isInstanceOf(SubProtocolWebSocketHandler.class, actual, "No SubProtocolWebSocketHandler in " + wsHandler);
return (SubProtocolWebSocketHandler) actual; return (SubProtocolWebSocketHandler) actual;
} }
protected void setApplicationContext(ApplicationContext applicationContext) {
this.stompHandler.setApplicationEventPublisher(applicationContext);
}
@Override @Override
public StompWebSocketEndpointRegistration addEndpoint(String... paths) { public StompWebSocketEndpointRegistration addEndpoint(String... paths) {

@ -51,18 +51,11 @@ public abstract class WebSocketMessageBrokerConfigurationSupport extends Abstrac
@Bean @Bean
public HandlerMapping stompWebSocketHandlerMapping() { public HandlerMapping stompWebSocketHandlerMapping() {
WebSocketHandler webSocketHandler = subProtocolWebSocketHandler(); WebMvcStompEndpointRegistry registry = new WebMvcStompEndpointRegistry(subProtocolWebSocketHandler(),
UserSessionRegistry sessionRegistry = userSessionRegistry(); getTransportRegistration(), userSessionRegistry(), messageBrokerSockJsTaskScheduler());
WebSocketTransportRegistration transportRegistration = getTransportRegistration();
ThreadPoolTaskScheduler taskScheduler = messageBrokerSockJsTaskScheduler();
WebMvcStompEndpointRegistry registry = new WebMvcStompEndpointRegistry(
webSocketHandler, transportRegistration, sessionRegistry, taskScheduler);
registry.setApplicationContext(getApplicationContext()); registry.setApplicationContext(getApplicationContext());
registerStompEndpoints(registry); registerStompEndpoints(registry);
return registry.getHandlerMapping(); return registry.getHandlerMapping();
} }

Loading…
Cancel
Save