Polishing
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -39,9 +39,9 @@ import org.springframework.web.socket.server.support.WebSocketHttpRequestHandler
|
||||
import org.springframework.web.socket.sockjs.support.SockJsHttpRequestHandler;
|
||||
|
||||
/**
|
||||
* Parses the configuration for the {@code <websocket:handlers/>} namespace
|
||||
* element. Registers a Spring MVC {@code SimpleUrlHandlerMapping} to map HTTP
|
||||
* WebSocket handshake (or SockJS) requests to
|
||||
* Parses the configuration for the {@code <websocket:handlers/>} namespace element.
|
||||
* Registers a Spring MVC {@code SimpleUrlHandlerMapping} to map HTTP WebSocket
|
||||
* handshake (or SockJS) requests to
|
||||
* {@link org.springframework.web.socket.WebSocketHandler WebSocketHandler}s.
|
||||
*
|
||||
* @author Brian Clozel
|
||||
@@ -78,13 +78,13 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
|
||||
strategy = new SockJsHandlerMappingStrategy(sockJsService);
|
||||
}
|
||||
else {
|
||||
RuntimeBeanReference handshakeHandler = WebSocketNamespaceUtils.registerHandshakeHandler(element, context, source);
|
||||
Element interceptorsElement = DomUtils.getChildElementByTagName(element, "handshake-interceptors");
|
||||
ManagedList<? super Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptorsElement, context);
|
||||
String allowedOriginsAttribute = element.getAttribute("allowed-origins");
|
||||
List<String> allowedOrigins = Arrays.asList(StringUtils.tokenizeToStringArray(allowedOriginsAttribute, ","));
|
||||
interceptors.add(new OriginHandshakeInterceptor(allowedOrigins));
|
||||
strategy = new WebSocketHandlerMappingStrategy(handshakeHandler, interceptors);
|
||||
RuntimeBeanReference handler = WebSocketNamespaceUtils.registerHandshakeHandler(element, context, source);
|
||||
Element interceptElem = DomUtils.getChildElementByTagName(element, "handshake-interceptors");
|
||||
ManagedList<Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptElem, context);
|
||||
String allowedOrigins = element.getAttribute("allowed-origins");
|
||||
List<String> origins = Arrays.asList(StringUtils.tokenizeToStringArray(allowedOrigins, ","));
|
||||
interceptors.add(new OriginHandshakeInterceptor(origins));
|
||||
strategy = new WebSocketHandlerMappingStrategy(handler, interceptors);
|
||||
}
|
||||
|
||||
ManagedMap<String, Object> urlMap = new ManagedMap<String, Object>();
|
||||
@@ -103,17 +103,16 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
|
||||
private interface HandlerMappingStrategy {
|
||||
|
||||
void addMapping(Element mappingElement, ManagedMap<String, Object> map, ParserContext context);
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static class WebSocketHandlerMappingStrategy implements HandlerMappingStrategy {
|
||||
|
||||
private final RuntimeBeanReference handshakeHandlerReference;
|
||||
|
||||
private final ManagedList<?> interceptorsList;
|
||||
|
||||
|
||||
private WebSocketHandlerMappingStrategy(RuntimeBeanReference handshakeHandler, ManagedList<?> interceptors) {
|
||||
public WebSocketHandlerMappingStrategy(RuntimeBeanReference handshakeHandler, ManagedList<?> interceptors) {
|
||||
this.handshakeHandlerReference = handshakeHandler;
|
||||
this.interceptorsList = interceptors;
|
||||
}
|
||||
@@ -121,15 +120,13 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
|
||||
@Override
|
||||
public void addMapping(Element element, ManagedMap<String, Object> urlMap, ParserContext context) {
|
||||
String pathAttribute = element.getAttribute("path");
|
||||
List<String> mappings = Arrays.asList(StringUtils.tokenizeToStringArray(pathAttribute, ","));
|
||||
String[] mappings = StringUtils.tokenizeToStringArray(pathAttribute, ",");
|
||||
RuntimeBeanReference handlerReference = new RuntimeBeanReference(element.getAttribute("handler"));
|
||||
|
||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||
cavs.addIndexedArgumentValue(0, handlerReference);
|
||||
if (this.handshakeHandlerReference != null) {
|
||||
cavs.addIndexedArgumentValue(1, this.handshakeHandlerReference);
|
||||
}
|
||||
RootBeanDefinition requestHandlerDef = new RootBeanDefinition(WebSocketHttpRequestHandler.class, cavs, null);
|
||||
ConstructorArgumentValues cargs = new ConstructorArgumentValues();
|
||||
cargs.addIndexedArgumentValue(0, handlerReference);
|
||||
cargs.addIndexedArgumentValue(1, this.handshakeHandlerReference);
|
||||
RootBeanDefinition requestHandlerDef = new RootBeanDefinition(WebSocketHttpRequestHandler.class, cargs, null);
|
||||
requestHandlerDef.setSource(context.extractSource(element));
|
||||
requestHandlerDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||
requestHandlerDef.getPropertyValues().add("handshakeInterceptors", this.interceptorsList);
|
||||
@@ -142,26 +139,26 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static class SockJsHandlerMappingStrategy implements HandlerMappingStrategy {
|
||||
|
||||
private final RuntimeBeanReference sockJsService;
|
||||
|
||||
|
||||
private SockJsHandlerMappingStrategy(RuntimeBeanReference sockJsService) {
|
||||
public SockJsHandlerMappingStrategy(RuntimeBeanReference sockJsService) {
|
||||
this.sockJsService = sockJsService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMapping(Element element, ManagedMap<String, Object> urlMap, ParserContext context) {
|
||||
String pathAttribute = element.getAttribute("path");
|
||||
List<String> mappings = Arrays.asList(StringUtils.tokenizeToStringArray(pathAttribute, ","));
|
||||
String[] mappings = StringUtils.tokenizeToStringArray(pathAttribute, ",");
|
||||
RuntimeBeanReference handlerReference = new RuntimeBeanReference(element.getAttribute("handler"));
|
||||
|
||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||
cavs.addIndexedArgumentValue(0, this.sockJsService, "SockJsService");
|
||||
cavs.addIndexedArgumentValue(1, handlerReference, "WebSocketHandler");
|
||||
ConstructorArgumentValues cargs = new ConstructorArgumentValues();
|
||||
cargs.addIndexedArgumentValue(0, this.sockJsService, "SockJsService");
|
||||
cargs.addIndexedArgumentValue(1, handlerReference, "WebSocketHandler");
|
||||
|
||||
RootBeanDefinition requestHandlerDef = new RootBeanDefinition(SockJsHttpRequestHandler.class, cavs, null);
|
||||
RootBeanDefinition requestHandlerDef = new RootBeanDefinition(SockJsHttpRequestHandler.class, cargs, null);
|
||||
requestHandlerDef.setSource(context.extractSource(element));
|
||||
requestHandlerDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||
String requestHandlerName = context.getReaderContext().registerWithGeneratedName(requestHandlerDef);
|
||||
|
||||
@@ -245,7 +245,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
|
||||
}
|
||||
|
||||
RootBeanDefinition channelDef = new RootBeanDefinition(ExecutorSubscribableChannel.class, argValues, null);
|
||||
ManagedList<? super Object> interceptors = new ManagedList<Object>();
|
||||
ManagedList<Object> interceptors = new ManagedList<Object>();
|
||||
if (element != null) {
|
||||
Element interceptorsElement = DomUtils.getChildElementByTagName(element, "interceptors");
|
||||
interceptors.addAll(WebSocketNamespaceUtils.parseBeanSubElements(interceptorsElement, context));
|
||||
@@ -333,7 +333,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
|
||||
else {
|
||||
RuntimeBeanReference handshakeHandler = WebSocketNamespaceUtils.registerHandshakeHandler(element, context, source);
|
||||
Element interceptorsElement = DomUtils.getChildElementByTagName(element, "handshake-interceptors");
|
||||
ManagedList<? super Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptorsElement, context);
|
||||
ManagedList<Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptorsElement, context);
|
||||
String allowedOriginsAttribute = element.getAttribute("allowed-origins");
|
||||
List<String> allowedOrigins = Arrays.asList(StringUtils.tokenizeToStringArray(allowedOriginsAttribute, ","));
|
||||
interceptors.add(new OriginHandshakeInterceptor(allowedOrigins));
|
||||
@@ -458,7 +458,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
|
||||
|
||||
private RuntimeBeanReference registerMessageConverter(Element element, ParserContext context, Object source) {
|
||||
Element convertersElement = DomUtils.getChildElementByTagName(element, "message-converters");
|
||||
ManagedList<? super Object> converters = new ManagedList<Object>();
|
||||
ManagedList<Object> converters = new ManagedList<Object>();
|
||||
if (convertersElement != null) {
|
||||
converters.setSource(source);
|
||||
for (Element beanElement : DomUtils.getChildElementsByTagName(convertersElement, "bean", "ref")) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -43,7 +43,7 @@ import org.springframework.web.socket.sockjs.transport.handler.WebSocketTranspor
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 4.0
|
||||
*/
|
||||
class WebSocketNamespaceUtils {
|
||||
abstract class WebSocketNamespaceUtils {
|
||||
|
||||
public static RuntimeBeanReference registerHandshakeHandler(Element element, ParserContext context, Object source) {
|
||||
RuntimeBeanReference handlerRef;
|
||||
@@ -61,8 +61,8 @@ class WebSocketNamespaceUtils {
|
||||
return handlerRef;
|
||||
}
|
||||
|
||||
public static RuntimeBeanReference registerSockJsService(Element element, String schedulerName,
|
||||
ParserContext context, Object source) {
|
||||
public static RuntimeBeanReference registerSockJsService(
|
||||
Element element, String schedulerName, ParserContext context, Object source) {
|
||||
|
||||
Element sockJsElement = DomUtils.getChildElementByTagName(element, "sockjs");
|
||||
|
||||
@@ -99,13 +99,13 @@ class WebSocketNamespaceUtils {
|
||||
sockJsServiceDef.getConstructorArgumentValues().addIndexedArgumentValue(1, transportHandler);
|
||||
}
|
||||
|
||||
Element interceptorsElement = DomUtils.getChildElementByTagName(element, "handshake-interceptors");
|
||||
ManagedList<? super Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptorsElement, context);
|
||||
String allowedOriginsAttribute = element.getAttribute("allowed-origins");
|
||||
List<String> allowedOrigins = Arrays.asList(StringUtils.tokenizeToStringArray(allowedOriginsAttribute, ","));
|
||||
sockJsServiceDef.getPropertyValues().add("allowedOrigins", allowedOrigins);
|
||||
Element interceptElem = DomUtils.getChildElementByTagName(element, "handshake-interceptors");
|
||||
ManagedList<Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptElem, context);
|
||||
String allowedOrigins = element.getAttribute("allowed-origins");
|
||||
List<String> origins = Arrays.asList(StringUtils.tokenizeToStringArray(allowedOrigins, ","));
|
||||
sockJsServiceDef.getPropertyValues().add("allowedOrigins", origins);
|
||||
RootBeanDefinition originHandshakeInterceptor = new RootBeanDefinition(OriginHandshakeInterceptor.class);
|
||||
originHandshakeInterceptor.getPropertyValues().add("allowedOrigins", allowedOrigins);
|
||||
originHandshakeInterceptor.getPropertyValues().add("allowedOrigins", origins);
|
||||
interceptors.add(originHandshakeInterceptor);
|
||||
sockJsServiceDef.getPropertyValues().add("handshakeInterceptors", interceptors);
|
||||
|
||||
@@ -170,8 +170,8 @@ class WebSocketNamespaceUtils {
|
||||
return new RuntimeBeanReference(schedulerName);
|
||||
}
|
||||
|
||||
public static ManagedList<? super Object> parseBeanSubElements(Element parentElement, ParserContext context) {
|
||||
ManagedList<? super Object> beans = new ManagedList<Object>();
|
||||
public static ManagedList<Object> parseBeanSubElements(Element parentElement, ParserContext context) {
|
||||
ManagedList<Object> beans = new ManagedList<Object>();
|
||||
if (parentElement != null) {
|
||||
beans.setSource(context.extractSource(parentElement));
|
||||
for (Element beanElement : DomUtils.getChildElementsByTagName(parentElement, "bean", "ref")) {
|
||||
|
||||
Reference in New Issue
Block a user