Merge pull request #1642 from EnvOut/master

This commit is contained in:
Rossen Stoyanchev
2018-01-15 10:01:54 -05:00
6 changed files with 41 additions and 26 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2014 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.
@@ -30,8 +30,11 @@ import org.springframework.messaging.simp.config.MessageBrokerRegistry;
*
* @author Rossen Stoyanchev
* @since 4.0.1
* @deprecated in favor of simply using {@link WebSocketMessageBrokerConfigurer}
* which has default methods, made possible by a Java 8 baseline.
*/
public abstract class AbstractWebSocketMessageBrokerConfigurer implements WebSocketMessageBrokerConfigurer {
@Deprecated
public abstract class /*AbstractWebSocketMessageBrokerConfigurer*/ implements WebSocketMessageBrokerConfigurer {
@Override

View File

@@ -37,13 +37,12 @@ import org.springframework.context.annotation.Import;
* </pre>
*
* <p>Customize the imported configuration by implementing the
* {@link WebSocketMessageBrokerConfigurer} interface or more likely extend the
* convenient base class {@link AbstractWebSocketMessageBrokerConfigurer}:
* {@link WebSocketMessageBrokerConfigurer} interface:
*
* <pre class="code">
* &#064;Configuration
* &#064;EnableWebSocketMessageBroker
* public class MyConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
* public class MyConfiguration implements WebSocketMessageBrokerConfigurer {
*
* &#064;Override
* public void registerStompEndpoints(StompEndpointRegistry registry) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2014 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,13 +40,15 @@ public interface WebSocketMessageBrokerConfigurer {
* Register STOMP endpoints mapping each to a specific URL and (optionally)
* enabling and configuring SockJS fallback options.
*/
void registerStompEndpoints(StompEndpointRegistry registry);
default void registerStompEndpoints(StompEndpointRegistry registry) {
}
/**
* Configure options related to the processing of messages received from and
* sent to WebSocket clients.
*/
void configureWebSocketTransport(WebSocketTransportRegistration registry);
default void configureWebSocketTransport(WebSocketTransportRegistration registry) {
}
/**
* Configure the {@link org.springframework.messaging.MessageChannel} used for
@@ -54,7 +56,8 @@ public interface WebSocketMessageBrokerConfigurer {
* by a thread pool of size 1. It is recommended to customize thread pool
* settings for production use.
*/
void configureClientInboundChannel(ChannelRegistration registration);
default void configureClientInboundChannel(ChannelRegistration registration) {
}
/**
* Configure the {@link org.springframework.messaging.MessageChannel} used for
@@ -62,7 +65,8 @@ public interface WebSocketMessageBrokerConfigurer {
* by a thread pool of size 1. It is recommended to customize thread pool
* settings for production use.
*/
void configureClientOutboundChannel(ChannelRegistration registration);
default void configureClientOutboundChannel(ChannelRegistration registration) {
}
/**
* Add resolvers to support custom controller method argument types.
@@ -72,7 +76,8 @@ public interface WebSocketMessageBrokerConfigurer {
* @param argumentResolvers the resolvers to register (initially an empty list)
* @since 4.1.1
*/
void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers);
default void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
}
/**
* Add handlers to support custom controller method return value types.
@@ -82,7 +87,8 @@ public interface WebSocketMessageBrokerConfigurer {
* @param returnValueHandlers the handlers to register (initially an empty list)
* @since 4.1.1
*/
void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers);
default void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {
}
/**
* Configure the message converters to use when extracting the payload of
@@ -94,11 +100,14 @@ public interface WebSocketMessageBrokerConfigurer {
* @param messageConverters the converters to configure (initially an empty list)
* @return whether to also add default converter or not
*/
boolean configureMessageConverters(List<MessageConverter> messageConverters);
default boolean configureMessageConverters(List<MessageConverter> messageConverters) {
return true;
}
/**
* Configure message broker options.
*/
void configureMessageBroker(MessageBrokerRegistry registry);
default void configureMessageBroker(MessageBrokerRegistry registry) {
}
}

View File

@@ -16,9 +16,6 @@
package org.springframework.web.socket.config.annotation;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -64,6 +61,13 @@ import org.springframework.web.socket.messaging.SubProtocolHandler;
import org.springframework.web.socket.messaging.SubProtocolWebSocketHandler;
import org.springframework.web.socket.server.support.WebSocketHttpRequestHandler;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
/**
* Test fixture for
* {@link org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurationSupport}.
@@ -219,7 +223,7 @@ public class WebSocketMessageBrokerConfigurationSupportTests {
}
@Configuration
static class TestConfigurer extends AbstractWebSocketMessageBrokerConfigurer {
static class TestConfigurer implements WebSocketMessageBrokerConfigurer {
@Bean
public TestController subscriptionController() {

View File

@@ -51,14 +51,14 @@ import org.springframework.web.socket.UndertowTestServer;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.client.jetty.JettyWebSocketClient;
import org.springframework.web.socket.client.standard.StandardWebSocketClient;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.DelegatingWebSocketMessageBrokerConfiguration;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import org.springframework.web.socket.server.HandshakeHandler;
import static org.junit.Assert.*;
import static org.springframework.web.socket.messaging.StompTextMessageBuilder.*;
import static org.junit.Assert.assertTrue;
import static org.springframework.web.socket.messaging.StompTextMessageBuilder.create;
/**
* Integration tests with annotated message-handling methods.
@@ -318,7 +318,7 @@ public class StompWebSocketIntegrationTests extends AbstractWebSocketIntegration
basePackageClasses=StompWebSocketIntegrationTests.class,
useDefaultFilters=false,
includeFilters=@ComponentScan.Filter(IntegrationTestController.class))
static class TestMessageBrokerConfigurer extends AbstractWebSocketMessageBrokerConfigurer {
static class TestMessageBrokerConfigurer implements WebSocketMessageBrokerConfigurer {
@Autowired
private HandshakeHandler handshakeHandler; // can't rely on classpath for server detection

View File

@@ -1458,7 +1458,7 @@ In Java config:
----
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
// ...
@@ -1611,7 +1611,7 @@ user and associate it with subsequent STOMP messages on the same session:
----
@Configuration
@EnableWebSocketMessageBroker
public class MyConfig extends AbstractWebSocketMessageBrokerConfigurer {
public class MyConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
@@ -1634,7 +1634,7 @@ user and associate it with subsequent STOMP messages on the same session:
Also note that when using Spring Security's authorization for messages, at present
you will need to ensure that the authentication `ChannelInterceptor` config is ordered
ahead of Spring Security's. This is best done by declaring the custom interceptor in
its own sub-class of `AbstractWebSocketMessageBrokerConfigurer` marked with
its own implementation of `WebSocketMessageBrokerConfigurer` marked with
`@Order(Ordered.HIGHEST_PRECEDENCE + 99)`.
@@ -1811,7 +1811,7 @@ to intercept inbound messages:
----
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {