Polishing

This commit is contained in:
Juergen Hoeller
2018-08-02 16:55:53 +02:00
parent dc36bb34c7
commit 2474c48749
8 changed files with 168 additions and 184 deletions

View File

@@ -40,10 +40,10 @@ 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
* {@link org.springframework.web.socket.WebSocketHandler WebSocketHandler org.springframework.web.socket.WebSocketHandler WebSocketHandlers}.
* 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 WebSocketHandlers}.
*
* @author Brian Clozel
* @author Rossen Stoyanchev
@@ -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;
}

View File

@@ -254,7 +254,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));
@@ -346,7 +346,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));
@@ -477,7 +477,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")) {
@@ -567,7 +567,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"));
@@ -577,8 +577,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 {
@@ -586,11 +586,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;

View File

@@ -65,8 +65,8 @@ abstract 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 @@ abstract 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 @@ abstract 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 @@ abstract 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 @@ abstract 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 @@ abstract 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")) {