@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 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.
|
||||
@@ -40,9 +40,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
|
||||
@@ -58,10 +58,10 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public BeanDefinition parse(Element element, ParserContext cxt) {
|
||||
Object source = cxt.extractSource(element);
|
||||
public BeanDefinition parse(Element element, ParserContext context) {
|
||||
Object source = context.extractSource(element);
|
||||
CompositeComponentDefinition compDefinition = new CompositeComponentDefinition(element.getTagName(), source);
|
||||
cxt.pushContainingComponent(compDefinition);
|
||||
context.pushContainingComponent(compDefinition);
|
||||
|
||||
String orderAttribute = element.getAttribute("order");
|
||||
int order = orderAttribute.isEmpty() ? DEFAULT_MAPPING_ORDER : Integer.valueOf(orderAttribute);
|
||||
@@ -70,19 +70,19 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
|
||||
handlerMappingDef.setSource(source);
|
||||
handlerMappingDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||
handlerMappingDef.getPropertyValues().add("order", order);
|
||||
String handlerMappingName = cxt.getReaderContext().registerWithGeneratedName(handlerMappingDef);
|
||||
String handlerMappingName = context.getReaderContext().registerWithGeneratedName(handlerMappingDef);
|
||||
|
||||
RuntimeBeanReference sockJsService = WebSocketNamespaceUtils.registerSockJsService(
|
||||
element, SOCK_JS_SCHEDULER_NAME, cxt, source);
|
||||
element, SOCK_JS_SCHEDULER_NAME, context, source);
|
||||
|
||||
HandlerMappingStrategy strategy;
|
||||
if (sockJsService != null) {
|
||||
strategy = new SockJsHandlerMappingStrategy(sockJsService);
|
||||
}
|
||||
else {
|
||||
RuntimeBeanReference handler = WebSocketNamespaceUtils.registerHandshakeHandler(element, cxt, source);
|
||||
RuntimeBeanReference handler = WebSocketNamespaceUtils.registerHandshakeHandler(element, context, source);
|
||||
Element interceptElem = DomUtils.getChildElementByTagName(element, "handshake-interceptors");
|
||||
ManagedList<? super Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptElem, cxt);
|
||||
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));
|
||||
@@ -92,12 +92,12 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser {
|
||||
ManagedMap<String, Object> urlMap = new ManagedMap<>();
|
||||
urlMap.setSource(source);
|
||||
for (Element mappingElement : DomUtils.getChildElementsByTagName(element, "mapping")) {
|
||||
strategy.addMapping(mappingElement, urlMap, cxt);
|
||||
strategy.addMapping(mappingElement, urlMap, context);
|
||||
}
|
||||
handlerMappingDef.getPropertyValues().add("urlMap", urlMap);
|
||||
|
||||
cxt.registerComponent(new BeanComponentDefinition(handlerMappingDef, handlerMappingName));
|
||||
cxt.popAndRegisterContainingComponent();
|
||||
context.registerComponent(new BeanComponentDefinition(handlerMappingDef, handlerMappingName));
|
||||
context.popAndRegisterContainingComponent();
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ 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 cargs = new ConstructorArgumentValues();
|
||||
@@ -153,7 +153,7 @@ 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 cargs = new ConstructorArgumentValues();
|
||||
|
||||
@@ -250,7 +250,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
|
||||
}
|
||||
|
||||
RootBeanDefinition channelDef = new RootBeanDefinition(ExecutorSubscribableChannel.class, cargs, null);
|
||||
ManagedList<? super Object> interceptors = new ManagedList<>();
|
||||
ManagedList<Object> interceptors = new ManagedList<>();
|
||||
if (element != null) {
|
||||
Element interceptorsElement = DomUtils.getChildElementByTagName(element, "interceptors");
|
||||
interceptors.addAll(WebSocketNamespaceUtils.parseBeanSubElements(interceptorsElement, context));
|
||||
@@ -339,7 +339,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
|
||||
else {
|
||||
RuntimeBeanReference handler = WebSocketNamespaceUtils.registerHandshakeHandler(element, ctx, source);
|
||||
Element interceptElem = DomUtils.getChildElementByTagName(element, "handshake-interceptors");
|
||||
ManagedList<? super Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptElem, ctx);
|
||||
ManagedList<Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptElem, ctx);
|
||||
String allowedOrigins = element.getAttribute("allowed-origins");
|
||||
List<String> origins = Arrays.asList(StringUtils.tokenizeToStringArray(allowedOrigins, ","));
|
||||
interceptors.add(new OriginHandshakeInterceptor(origins));
|
||||
@@ -465,7 +465,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
|
||||
Element element, ParserContext context, @Nullable Object source) {
|
||||
|
||||
Element convertersElement = DomUtils.getChildElementByTagName(element, "message-converters");
|
||||
ManagedList<? super Object> converters = new ManagedList<>();
|
||||
ManagedList<Object> converters = new ManagedList<>();
|
||||
if (convertersElement != null) {
|
||||
converters.setSource(source);
|
||||
for (Element beanElement : DomUtils.getChildElementsByTagName(convertersElement, "bean", "ref")) {
|
||||
@@ -555,7 +555,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
|
||||
|
||||
@Nullable
|
||||
private RuntimeBeanReference getValidator(
|
||||
Element messageBrokerElement, @Nullable Object source, ParserContext parserContext) {
|
||||
Element messageBrokerElement, @Nullable Object source, ParserContext context) {
|
||||
|
||||
if (messageBrokerElement.hasAttribute("validator")) {
|
||||
return new RuntimeBeanReference(messageBrokerElement.getAttribute("validator"));
|
||||
@@ -565,8 +565,8 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
|
||||
"org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean");
|
||||
validatorDef.setSource(source);
|
||||
validatorDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||
String validatorName = parserContext.getReaderContext().registerWithGeneratedName(validatorDef);
|
||||
parserContext.registerComponent(new BeanComponentDefinition(validatorDef, validatorName));
|
||||
String validatorName = context.getReaderContext().registerWithGeneratedName(validatorDef);
|
||||
context.registerComponent(new BeanComponentDefinition(validatorDef, validatorName));
|
||||
return new RuntimeBeanReference(validatorName);
|
||||
}
|
||||
else {
|
||||
@@ -574,11 +574,11 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser {
|
||||
}
|
||||
}
|
||||
|
||||
private ManagedList<Object> extractBeanSubElements(Element parentElement, ParserContext parserContext) {
|
||||
private ManagedList<Object> extractBeanSubElements(Element parentElement, ParserContext context) {
|
||||
ManagedList<Object> list = new ManagedList<>();
|
||||
list.setSource(parserContext.extractSource(parentElement));
|
||||
list.setSource(context.extractSource(parentElement));
|
||||
for (Element beanElement : DomUtils.getChildElementsByTagName(parentElement, "bean", "ref")) {
|
||||
Object object = parserContext.getDelegate().parsePropertySubElement(beanElement, null);
|
||||
Object object = context.getDelegate().parsePropertySubElement(beanElement, null);
|
||||
list.add(object);
|
||||
}
|
||||
return list;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 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.
|
||||
@@ -44,7 +44,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, @Nullable Object source) {
|
||||
@@ -65,8 +65,8 @@ class WebSocketNamespaceUtils {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static RuntimeBeanReference registerSockJsService(Element element, String schedulerName,
|
||||
ParserContext cxt, @Nullable Object source) {
|
||||
public static RuntimeBeanReference registerSockJsService(
|
||||
Element element, String schedulerName, ParserContext context, @Nullable Object source) {
|
||||
|
||||
Element sockJsElement = DomUtils.getChildElementByTagName(element, "sockjs");
|
||||
|
||||
@@ -82,7 +82,7 @@ class WebSocketNamespaceUtils {
|
||||
scheduler = new RuntimeBeanReference(customTaskSchedulerName);
|
||||
}
|
||||
else {
|
||||
scheduler = registerScheduler(schedulerName, cxt, source);
|
||||
scheduler = registerScheduler(schedulerName, context, source);
|
||||
}
|
||||
sockJsServiceDef.getConstructorArgumentValues().addIndexedArgumentValue(0, scheduler);
|
||||
|
||||
@@ -92,7 +92,7 @@ class WebSocketNamespaceUtils {
|
||||
if (registerDefaults.equals("false")) {
|
||||
sockJsServiceDef.setBeanClass(TransportHandlingSockJsService.class);
|
||||
}
|
||||
ManagedList<?> transportHandlers = parseBeanSubElements(transportHandlersElement, cxt);
|
||||
ManagedList<?> transportHandlers = parseBeanSubElements(transportHandlersElement, context);
|
||||
sockJsServiceDef.getConstructorArgumentValues().addIndexedArgumentValue(1, transportHandlers);
|
||||
}
|
||||
else if (handshakeHandler != null) {
|
||||
@@ -104,7 +104,7 @@ class WebSocketNamespaceUtils {
|
||||
}
|
||||
|
||||
Element interceptElem = DomUtils.getChildElementByTagName(element, "handshake-interceptors");
|
||||
ManagedList<? super Object> interceptors = WebSocketNamespaceUtils.parseBeanSubElements(interceptElem, cxt);
|
||||
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);
|
||||
@@ -154,7 +154,7 @@ class WebSocketNamespaceUtils {
|
||||
sockJsServiceDef.getPropertyValues().add("suppressCors", Boolean.valueOf(attrValue));
|
||||
}
|
||||
sockJsServiceDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
|
||||
String sockJsServiceName = cxt.getReaderContext().registerWithGeneratedName(sockJsServiceDef);
|
||||
String sockJsServiceName = context.getReaderContext().registerWithGeneratedName(sockJsServiceDef);
|
||||
return new RuntimeBeanReference(sockJsServiceName);
|
||||
}
|
||||
return null;
|
||||
@@ -176,10 +176,8 @@ class WebSocketNamespaceUtils {
|
||||
return new RuntimeBeanReference(schedulerName);
|
||||
}
|
||||
|
||||
public static ManagedList<? super Object> parseBeanSubElements(@Nullable Element parentElement,
|
||||
ParserContext context) {
|
||||
|
||||
ManagedList<? super Object> beans = new ManagedList<>();
|
||||
public static ManagedList<Object> parseBeanSubElements(@Nullable Element parentElement, ParserContext context) {
|
||||
ManagedList<Object> beans = new ManagedList<>();
|
||||
if (parentElement != null) {
|
||||
beans.setSource(context.extractSource(parentElement));
|
||||
for (Element beanElement : DomUtils.getChildElementsByTagName(parentElement, "bean", "ref")) {
|
||||
|
||||
Reference in New Issue
Block a user