diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java b/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java index 950de748e0e..0cb4348b947 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java @@ -112,13 +112,21 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { CompositeComponentDefinition compDefinition = new CompositeComponentDefinition(element.getTagName(), source); context.pushContainingComponent(compDefinition); + RootBeanDefinition handlerMappingDef = new RootBeanDefinition(SimpleUrlHandlerMapping.class); + String orderAttribute = element.getAttribute("order"); int order = orderAttribute.isEmpty() ? DEFAULT_MAPPING_ORDER : Integer.valueOf(orderAttribute); + handlerMappingDef.getPropertyValues().add("order", order); + + String pathHelper = element.getAttribute("path-helper"); + if (StringUtils.hasText(pathHelper)) { + handlerMappingDef.getPropertyValues().add("urlPathHelper", new RuntimeBeanReference(pathHelper)); + } + ManagedMap urlMap = new ManagedMap(); urlMap.setSource(source); - RootBeanDefinition handlerMappingDef = new RootBeanDefinition(SimpleUrlHandlerMapping.class); - handlerMappingDef.getPropertyValues().add("order", order); handlerMappingDef.getPropertyValues().add("urlMap", urlMap); + registerBeanDef(handlerMappingDef, context, source); Element channelElem = DomUtils.getChildElementByTagName(element, "client-inbound-channel"); @@ -172,7 +180,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { } private RuntimeBeanReference getMessageChannel(String name, Element element, ParserContext context, Object source) { - RootBeanDefinition executor = null; + RootBeanDefinition executor; if (element == null) { executor = getDefaultExecutorBeanDefinition(name); } @@ -526,7 +534,6 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { context.registerComponent(new BeanComponentDefinition(beanDef, name)); } - private static class DecoratingFactoryBean implements FactoryBean { private final WebSocketHandler handler; @@ -534,6 +541,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { private final List factories; + @SuppressWarnings("unused") private DecoratingFactoryBean(WebSocketHandler handler, List factories) { this.handler = handler; this.factories = factories; diff --git a/spring-websocket/src/main/resources/org/springframework/web/socket/config/spring-websocket-4.2.xsd b/spring-websocket/src/main/resources/org/springframework/web/socket/config/spring-websocket-4.2.xsd index 8c1945a9688..8ec7535b3c2 100644 --- a/spring-websocket/src/main/resources/org/springframework/web/socket/config/spring-websocket-4.2.xsd +++ b/spring-websocket/src/main/resources/org/springframework/web/socket/config/spring-websocket-4.2.xsd @@ -891,6 +891,13 @@ ]]> + + + + + diff --git a/spring-websocket/src/test/resources/org/springframework/web/socket/config/websocket-config-broker-simple.xml b/spring-websocket/src/test/resources/org/springframework/web/socket/config/websocket-config-broker-simple.xml index ffb1fdd7d6b..82b3437ab49 100644 --- a/spring-websocket/src/test/resources/org/springframework/web/socket/config/websocket-config-broker-simple.xml +++ b/spring-websocket/src/test/resources/org/springframework/web/socket/config/websocket-config-broker-simple.xml @@ -6,7 +6,8 @@ + path-matcher="pathMatcher" + path-helper="urlPathHelper"> @@ -40,6 +41,10 @@ + + + +