diff --git a/spring-aspects/src/test/java/org/springframework/scheduling/aspectj/AnnotationAsyncExecutionAspectTests.java b/spring-aspects/src/test/java/org/springframework/scheduling/aspectj/AnnotationAsyncExecutionAspectTests.java index 624d96a277..53c460c570 100644 --- a/spring-aspects/src/test/java/org/springframework/scheduling/aspectj/AnnotationAsyncExecutionAspectTests.java +++ b/spring-aspects/src/test/java/org/springframework/scheduling/aspectj/AnnotationAsyncExecutionAspectTests.java @@ -221,7 +221,7 @@ public class AnnotationAsyncExecutionAspectTests { @Async public Future incrementReturningAFuture() { counter++; - return new AsyncResult(5); + return new AsyncResult<>(5); } /** @@ -256,7 +256,7 @@ public class AnnotationAsyncExecutionAspectTests { public Future incrementReturningAFuture() { counter++; - return new AsyncResult(5); + return new AsyncResult<>(5); } } @@ -265,12 +265,12 @@ public class AnnotationAsyncExecutionAspectTests { @Async public Future defaultWork() { - return new AsyncResult(Thread.currentThread()); + return new AsyncResult<>(Thread.currentThread()); } @Async("e1") public ListenableFuture e1Work() { - return new AsyncResult(Thread.currentThread()); + return new AsyncResult<>(Thread.currentThread()); } @Async("e1") diff --git a/spring-context/src/test/java/org/springframework/aop/framework/AbstractAopProxyTests.java b/spring-context/src/test/java/org/springframework/aop/framework/AbstractAopProxyTests.java index fa0c5b609c..c2cb067fb3 100644 --- a/spring-context/src/test/java/org/springframework/aop/framework/AbstractAopProxyTests.java +++ b/spring-context/src/test/java/org/springframework/aop/framework/AbstractAopProxyTests.java @@ -1231,7 +1231,7 @@ public abstract class AbstractAopProxyTests { } } AdvisedSupport pc = new AdvisedSupport(ITestBean.class); - MapAwareMethodInterceptor mami1 = new MapAwareMethodInterceptor(new HashMap<>(), new HashMap()); + MapAwareMethodInterceptor mami1 = new MapAwareMethodInterceptor(new HashMap<>(), new HashMap<>()); Map firstValuesToAdd = new HashMap<>(); firstValuesToAdd.put("test", ""); MapAwareMethodInterceptor mami2 = new MapAwareMethodInterceptor(new HashMap<>(), firstValuesToAdd); diff --git a/spring-context/src/test/java/org/springframework/scheduling/annotation/AsyncResultTests.java b/spring-context/src/test/java/org/springframework/scheduling/annotation/AsyncResultTests.java index 9c8832d2bb..efbcd4b081 100644 --- a/spring-context/src/test/java/org/springframework/scheduling/annotation/AsyncResultTests.java +++ b/spring-context/src/test/java/org/springframework/scheduling/annotation/AsyncResultTests.java @@ -37,11 +37,12 @@ public class AsyncResultTests { String value = "val"; final Set values = new HashSet<>(1); org.springframework.util.concurrent.ListenableFuture future = AsyncResult.forValue(value); - future.addCallback(new org.springframework.util.concurrent.ListenableFutureCallback() { + future.addCallback(new org.springframework.util.concurrent.ListenableFutureCallback<>() { @Override public void onSuccess(String result) { values.add(result); } + @Override public void onFailure(Throwable ex) { throw new AssertionError("Failure callback not expected: " + ex, ex); @@ -59,11 +60,12 @@ public class AsyncResultTests { IOException ex = new IOException(); final Set values = new HashSet<>(1); org.springframework.util.concurrent.ListenableFuture future = AsyncResult.forExecutionException(ex); - future.addCallback(new org.springframework.util.concurrent.ListenableFutureCallback() { + future.addCallback(new org.springframework.util.concurrent.ListenableFutureCallback<>() { @Override public void onSuccess(String result) { throw new AssertionError("Success callback not expected: " + result); } + @Override public void onFailure(Throwable ex) { values.add(ex); diff --git a/spring-context/src/test/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessorObservabilityTests.java b/spring-context/src/test/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessorObservabilityTests.java index 6b412c25fb..2dea00b171 100644 --- a/spring-context/src/test/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessorObservabilityTests.java +++ b/spring-context/src/test/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessorObservabilityTests.java @@ -276,7 +276,7 @@ class ScheduledAnnotationBeanPostProcessorObservabilityTests { @Scheduled(fixedDelay = 10_000, initialDelay = 5_000) Mono hasCurrentObservation() { return Mono.just("test") - .tap(() -> new DefaultSignalListener() { + .tap(() -> new DefaultSignalListener<>() { @Override public void doFirst() throws Throwable { Observation observation = observationRegistry.getCurrentObservation(); diff --git a/spring-core/src/test/java/org/springframework/util/ClassUtilsTests.java b/spring-core/src/test/java/org/springframework/util/ClassUtilsTests.java index 909d330d15..4a445b04cf 100644 --- a/spring-core/src/test/java/org/springframework/util/ClassUtilsTests.java +++ b/spring-core/src/test/java/org/springframework/util/ClassUtilsTests.java @@ -453,7 +453,7 @@ class ClassUtilsTests { void isNotLambda() { assertIsNotLambda(new EnigmaSupplier()); - assertIsNotLambda(new Supplier() { + assertIsNotLambda(new Supplier<>() { @Override public String get() { return "anonymous inner class"; diff --git a/spring-expression/src/test/java/org/springframework/expression/spel/SpelExceptionTests.java b/spring-expression/src/test/java/org/springframework/expression/spel/SpelExceptionTests.java index f72ac2f261..d0a0a9daa1 100644 --- a/spring-expression/src/test/java/org/springframework/expression/spel/SpelExceptionTests.java +++ b/spring-expression/src/test/java/org/springframework/expression/spel/SpelExceptionTests.java @@ -59,7 +59,7 @@ public class SpelExceptionTests { ExpressionParser parser = new SpelExpressionParser(); Expression spelExpression = parser.parseExpression("#aMap['one'] eq 1"); StandardEvaluationContext ctx = new StandardEvaluationContext(); - ctx.setVariables(new HashMap() { + ctx.setVariables(new HashMap<>() { { put("aMap", new HashMap() { { @@ -98,7 +98,7 @@ public class SpelExceptionTests { ExpressionParser parser = new SpelExpressionParser(); Expression spelExpression = parser.parseExpression("#aList.contains('one')"); StandardEvaluationContext ctx = new StandardEvaluationContext(); - ctx.setVariables(new HashMap() { + ctx.setVariables(new HashMap<>() { { put("aList", new ArrayList() { { @@ -120,7 +120,7 @@ public class SpelExceptionTests { ExpressionParser parser = new SpelExpressionParser(); Expression spelExpression = parser.parseExpression("#aList[0] eq 'one'"); StandardEvaluationContext ctx = new StandardEvaluationContext(); - ctx.setVariables(new HashMap() { + ctx.setVariables(new HashMap<>() { { put("aList", new ArrayList() { { @@ -150,9 +150,9 @@ public class SpelExceptionTests { ExpressionParser parser = new SpelExpressionParser(); Expression spelExpression = parser.parseExpression("#anArray[0] eq 1"); StandardEvaluationContext ctx = new StandardEvaluationContext(); - ctx.setVariables(new HashMap() { + ctx.setVariables(new HashMap<>() { { - put("anArray", new int[] {1,2,3}); + put("anArray", new int[]{1, 2, 3}); } }); boolean result = spelExpression.getValue(ctx, Boolean.class); diff --git a/spring-jms/src/test/java/org/springframework/jms/listener/DefaultMessageListenerContainerTests.java b/spring-jms/src/test/java/org/springframework/jms/listener/DefaultMessageListenerContainerTests.java index 4157cc4f17..e00257fe3d 100644 --- a/spring-jms/src/test/java/org/springframework/jms/listener/DefaultMessageListenerContainerTests.java +++ b/spring-jms/src/test/java/org/springframework/jms/listener/DefaultMessageListenerContainerTests.java @@ -248,8 +248,9 @@ class DefaultMessageListenerContainerTests { private static ConnectionFactory createRecoverableContainerFactory(final int failingAttempts) { try { ConnectionFactory connectionFactory = mock(); - given(connectionFactory.createConnection()).will(new Answer() { + given(connectionFactory.createConnection()).will(new Answer<>() { int currentAttempts = 0; + @Override public Object answer(InvocationOnMock invocation) throws Throwable { currentAttempts++; diff --git a/spring-web/src/test/java/org/springframework/http/client/MultipartBodyBuilderTests.java b/spring-web/src/test/java/org/springframework/http/client/MultipartBodyBuilderTests.java index a87801e740..f8d9cc4b5a 100644 --- a/spring-web/src/test/java/org/springframework/http/client/MultipartBodyBuilderTests.java +++ b/spring-web/src/test/java/org/springframework/http/client/MultipartBodyBuilderTests.java @@ -56,7 +56,8 @@ public class MultipartBodyBuilderTests { Publisher publisher = Flux.just("foo", "bar", "baz"); builder.asyncPart("publisherClass", publisher, String.class).header("baz", "qux"); - builder.asyncPart("publisherPtr", publisher, new ParameterizedTypeReference() {}).header("baz", "qux"); + builder.asyncPart("publisherPtr", publisher, new ParameterizedTypeReference<>() { + }).header("baz", "qux"); MultiValueMap> result = builder.build(); diff --git a/spring-web/src/test/java/org/springframework/http/server/reactive/ChannelSendOperatorTests.java b/spring-web/src/test/java/org/springframework/http/server/reactive/ChannelSendOperatorTests.java index 01d39c40ff..69c2854bb9 100644 --- a/spring-web/src/test/java/org/springframework/http/server/reactive/ChannelSendOperatorTests.java +++ b/spring-web/src/test/java/org/springframework/http/server/reactive/ChannelSendOperatorTests.java @@ -169,7 +169,8 @@ class ChannelSendOperatorTests { return Mono.never(); }); - operator.subscribe(new BaseSubscriber() {}); + operator.subscribe(new BaseSubscriber<>() { + }); try { writeSubscriber.signalDemand(1); // Let cached signals ("foo" and error) be published.. } diff --git a/spring-web/src/test/java/org/springframework/web/client/RestClientIntegrationTests.java b/spring-web/src/test/java/org/springframework/web/client/RestClientIntegrationTests.java index ece13445cc..e5b24b4724 100644 --- a/spring-web/src/test/java/org/springframework/web/client/RestClientIntegrationTests.java +++ b/spring-web/src/test/java/org/springframework/web/client/RestClientIntegrationTests.java @@ -166,7 +166,8 @@ class RestClientIntegrationTests { ValueContainer result = this.restClient.get() .uri("/json").accept(MediaType.APPLICATION_JSON) .retrieve() - .body(new ParameterizedTypeReference>() {}); + .body(new ParameterizedTypeReference<>() { + }); assertThat(result.getContainerValue()).isNotNull(); Pojo pojo = result.getContainerValue(); @@ -191,7 +192,8 @@ class RestClientIntegrationTests { ValueContainer> result = this.restClient.get() .uri("/json").accept(MediaType.APPLICATION_JSON) .retrieve() - .body(new ParameterizedTypeReference>>() {}); + .body(new ParameterizedTypeReference<>() { + }); assertThat(result.containerValue).isNotNull(); assertThat(result.containerValue).containsExactly(new Pojo("foofoo", "barbar")); diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/BodyExtractorsTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/BodyExtractorsTests.java index cbc795d0f1..695049ff16 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/BodyExtractorsTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/BodyExtractorsTests.java @@ -138,7 +138,8 @@ class BodyExtractorsTests { @Test void toMonoParameterizedTypeReference() { BodyExtractor>, ReactiveHttpInputMessage> extractor = - BodyExtractors.toMono(new ParameterizedTypeReference>() {}); + BodyExtractors.toMono(new ParameterizedTypeReference<>() { + }); byte[] bytes = "{\"username\":\"foo\",\"password\":\"bar\"}".getBytes(StandardCharsets.UTF_8); DefaultDataBuffer dataBuffer = DefaultDataBufferFactory.sharedInstance.wrap(ByteBuffer.wrap(bytes)); @@ -183,7 +184,8 @@ class BodyExtractorsTests { @Test // SPR-15758 void toMonoWithEmptyBodyAndNoContentType() { BodyExtractor>, ReactiveHttpInputMessage> extractor = - BodyExtractors.toMono(new ParameterizedTypeReference>() {}); + BodyExtractors.toMono(new ParameterizedTypeReference<>() { + }); MockServerHttpRequest request = MockServerHttpRequest.post("/").body(Flux.empty()); Mono> result = extractor.extract(request, this.context); diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientDataBufferAllocatingTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientDataBufferAllocatingTests.java index e64e9bce57..f11f972588 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientDataBufferAllocatingTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientDataBufferAllocatingTests.java @@ -124,7 +124,8 @@ class WebClientDataBufferAllocatingTests extends AbstractDataBufferAllocatingTes Mono> mono = this.webClient.get() .uri("/sample").accept(MediaType.APPLICATION_JSON) .retrieve() - .bodyToMono(new ParameterizedTypeReference>() {}); + .bodyToMono(new ParameterizedTypeReference<>() { + }); StepVerifier.create(mono).expectError(WebClientResponseException.class).verify(Duration.ofSeconds(3)); assertThat(this.server.getRequestCount()).isEqualTo(1); diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientIntegrationTests.java index 8f1499f0de..598cf990ef 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientIntegrationTests.java @@ -197,7 +197,8 @@ class WebClientIntegrationTests { Mono> result = this.webClient.get() .uri("/json").accept(MediaType.APPLICATION_JSON) .retrieve() - .bodyToMono(new ParameterizedTypeReference>() {}); + .bodyToMono(new ParameterizedTypeReference<>() { + }); StepVerifier.create(result) .assertNext(c -> assertThat(c.getContainerValue()).isEqualTo(new Pojo("foofoo", "barbar"))) @@ -804,7 +805,8 @@ class WebClientIntegrationTests { .uri("/greeting") .retrieve() .onStatus(HttpStatusCode::is5xxServerError, response -> Mono.just(new MyException("500 error!"))) - .bodyToMono(new ParameterizedTypeReference() {}); + .bodyToMono(new ParameterizedTypeReference<>() { + }); StepVerifier.create(result) .expectError(MyException.class) diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/DefaultServerRequestTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/DefaultServerRequestTests.java index 83038db2c4..5eba512cf4 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/DefaultServerRequestTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/DefaultServerRequestTests.java @@ -318,7 +318,7 @@ public class DefaultServerRequestTests { DefaultServerRequest request = new DefaultServerRequest(MockServerWebExchange.from(mockRequest), messageReaders); Mono> resultMono = request.bodyToMono( - new ParameterizedTypeReference>() { + new ParameterizedTypeReference<>() { }); StepVerifier.create(resultMono) .expectError(ServerWebInputException.class) diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/SseHandlerFunctionIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/SseHandlerFunctionIntegrationTests.java index d21a8be4a1..bbb536ce6d 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/SseHandlerFunctionIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/SseHandlerFunctionIntegrationTests.java @@ -100,7 +100,8 @@ class SseHandlerFunctionIntegrationTests extends AbstractRouterFunctionIntegrati .uri("/event") .accept(TEXT_EVENT_STREAM) .retrieve() - .bodyToFlux(new ParameterizedTypeReference>() {}); + .bodyToFlux(new ParameterizedTypeReference<>() { + }); StepVerifier.create(result) .consumeNextWith( event -> { diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/SseIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/SseIntegrationTests.java index 73da85b101..d72cf4820a 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/SseIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/result/method/annotation/SseIntegrationTests.java @@ -134,7 +134,8 @@ class SseIntegrationTests extends AbstractHttpHandlerIntegrationTests { .uri("/event") .accept(TEXT_EVENT_STREAM) .retrieve() - .bodyToFlux(new ParameterizedTypeReference>() {}); + .bodyToFlux(new ParameterizedTypeReference<>() { + }); verifyPersonEvents(result); } @@ -147,7 +148,8 @@ class SseIntegrationTests extends AbstractHttpHandlerIntegrationTests { .uri("/event") .accept(TEXT_EVENT_STREAM) .retrieve() - .bodyToFlux(new ParameterizedTypeReference>() {}); + .bodyToFlux(new ParameterizedTypeReference<>() { + }); verifyPersonEvents(result); } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilderTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilderTests.java index f1fcff861e..7a523bf969 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilderTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilderTests.java @@ -60,7 +60,8 @@ class DefaultEntityResponseBuilderTests { void fromObjectTypeReference() { String body = "foo"; EntityResponse response = EntityResponse.fromObject(body, - new ParameterizedTypeReference() {}) + new ParameterizedTypeReference<>() { + }) .build(); assertThat(response.entity()).isSameAs(body); diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerRequestTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerRequestTests.java index 530df95b1a..0eaf2180c0 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerRequestTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerRequestTests.java @@ -265,7 +265,8 @@ class DefaultServerRequestTests { DefaultServerRequest request = new DefaultServerRequest(servletRequest, List.of(new MappingJackson2HttpMessageConverter())); - List result = request.body(new ParameterizedTypeReference>() {}); + List result = request.body(new ParameterizedTypeReference<>() { + }); assertThat(result).hasSize(2); assertThat(result).element(0).isEqualTo("foo"); assertThat(result).element(1).isEqualTo("bar"); diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerResponseBuilderTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerResponseBuilderTests.java index 09c726110e..7d53f1ddb2 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerResponseBuilderTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerResponseBuilderTests.java @@ -293,7 +293,8 @@ class DefaultServerResponseBuilderTests { List body = new ArrayList<>(); body.add("foo"); body.add("bar"); - ServerResponse response = ServerResponse.ok().body(body, new ParameterizedTypeReference>() {}); + ServerResponse response = ServerResponse.ok().body(body, new ParameterizedTypeReference<>() { + }); MockHttpServletRequest mockRequest = new MockHttpServletRequest("GET", "https://example.com"); MockHttpServletResponse mockResponse = new MockHttpServletResponse(); diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/view/ViewResolverTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/view/ViewResolverTests.java index e3db177c76..92ba90c0e7 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/view/ViewResolverTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/view/ViewResolverTests.java @@ -291,7 +291,7 @@ class ViewResolverTests { request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.wac); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new AcceptHeaderLocaleResolver()); View view = vr.resolveViewName("example1", Locale.getDefault()); - view.render(new HashMap(), request, this.response); + view.render(new HashMap<>(), request, this.response); } @Test @@ -327,7 +327,7 @@ class ViewResolverTests { request.setAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.wac); request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, new AcceptHeaderLocaleResolver()); View view = vr.resolveViewName("example1", Locale.getDefault()); - view.render(new HashMap(), request, this.response); + view.render(new HashMap<>(), request, this.response); } @Test diff --git a/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/client/AbstractSockJsIntegrationTests.java b/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/client/AbstractSockJsIntegrationTests.java index a6bae1556d..f6343b7a80 100644 --- a/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/client/AbstractSockJsIntegrationTests.java +++ b/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/client/AbstractSockJsIntegrationTests.java @@ -216,7 +216,7 @@ abstract class AbstractSockJsIntegrationTests { CountDownLatch latch = new CountDownLatch(1); initSockJsClient(createWebSocketTransport()); this.sockJsClient.doHandshake(handler, this.baseUrl + "/echo").addCallback( - new org.springframework.util.concurrent.ListenableFutureCallback() { + new org.springframework.util.concurrent.ListenableFutureCallback<>() { @Override public void onSuccess(WebSocketSession result) { } diff --git a/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/client/RestTemplateXhrTransportTests.java b/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/client/RestTemplateXhrTransportTests.java index a5f014f36b..12b19b534f 100644 --- a/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/client/RestTemplateXhrTransportTests.java +++ b/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/client/RestTemplateXhrTransportTests.java @@ -137,10 +137,11 @@ class RestTemplateXhrTransportTests { final CountDownLatch latch = new CountDownLatch(1); connect(restTemplate).addCallback( - new org.springframework.util.concurrent.ListenableFutureCallback() { + new org.springframework.util.concurrent.ListenableFutureCallback<>() { @Override public void onSuccess(WebSocketSession result) { } + @Override public void onFailure(Throwable ex) { if (ex == expected) {