From 0c878d2d06dff2a2c1ef0fda61faca88f8b215ba Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Mon, 21 Nov 2022 14:28:30 +0100 Subject: [PATCH] Apply additional 'instanceof pattern matching' in spring-web See gh-29530 --- .../HandlerMethodReturnValueHandlerComposite.java | 9 +++++---- .../invocation/reactive/ChannelSendOperator.java | 6 +++--- .../http/codec/EncoderHttpMessageWriter.java | 4 ++-- .../http/server/reactive/JettyHeadersAdapter.java | 6 +++--- .../web/client/HttpMessageConverterExtractor.java | 4 ++-- .../web/context/request/RequestContextListener.java | 10 +++++----- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java index ba9479ec106..5e3ed7e3a8a 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java @@ -129,17 +129,18 @@ public class HandlerMethodReturnValueHandlerComposite implements AsyncHandlerMet @Override public boolean isAsyncReturnValue(Object returnValue, MethodParameter returnType) { HandlerMethodReturnValueHandler handler = getReturnValueHandler(returnType); - return (handler instanceof AsyncHandlerMethodReturnValueHandler && - ((AsyncHandlerMethodReturnValueHandler) handler).isAsyncReturnValue(returnValue, returnType)); + return (handler instanceof AsyncHandlerMethodReturnValueHandler asyncHandler && + asyncHandler.isAsyncReturnValue(returnValue, returnType)); } @Override @Nullable public CompletableFuture toCompletableFuture(Object returnValue, MethodParameter returnType) { HandlerMethodReturnValueHandler handler = getReturnValueHandler(returnType); - if (handler instanceof AsyncHandlerMethodReturnValueHandler) { - return ((AsyncHandlerMethodReturnValueHandler) handler).toCompletableFuture(returnValue, returnType); + if (handler instanceof AsyncHandlerMethodReturnValueHandler asyncHandler) { + return asyncHandler.toCompletableFuture(returnValue, returnType); } return null; } + } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java index 108d1492990..0fa659141b4 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2022 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. @@ -343,8 +343,8 @@ class ChannelSendOperator extends Mono implements Scannable { private void releaseCachedItem() { synchronized (this) { Object item = this.item; - if (item instanceof DataBuffer) { - DataBufferUtils.release((DataBuffer) item); + if (item instanceof DataBuffer dataBuffer) { + DataBufferUtils.release(dataBuffer); } this.item = null; } diff --git a/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java b/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java index ba35141af43..239ddf0a69f 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java +++ b/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java @@ -180,10 +180,10 @@ public class EncoderHttpMessageWriter implements HttpMessageWriter { } private boolean isStreamingMediaType(@Nullable MediaType mediaType) { - if (mediaType == null || !(this.encoder instanceof HttpMessageEncoder)) { + if (mediaType == null || !(this.encoder instanceof HttpMessageEncoder httpMessageEncoder)) { return false; } - for (MediaType streamingMediaType : ((HttpMessageEncoder) this.encoder).getStreamingMediaTypes()) { + for (MediaType streamingMediaType : httpMessageEncoder.getStreamingMediaTypes()) { if (mediaType.isCompatibleWith(streamingMediaType) && matchParameters(mediaType, streamingMediaType)) { return true; } diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/JettyHeadersAdapter.java b/spring-web/src/main/java/org/springframework/http/server/reactive/JettyHeadersAdapter.java index 28deaa01b5e..99e6e30faf0 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/JettyHeadersAdapter.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/JettyHeadersAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 the original author or authors. + * Copyright 2002-2022 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. @@ -110,8 +110,8 @@ class JettyHeadersAdapter implements MultiValueMap { @Override public boolean containsValue(Object value) { - return (value instanceof String && - this.headers.stream().anyMatch(field -> field.contains((String) value))); + return (value instanceof String searchString && + this.headers.stream().anyMatch(field -> field.contains(searchString))); } @Nullable diff --git a/spring-web/src/main/java/org/springframework/web/client/HttpMessageConverterExtractor.java b/spring-web/src/main/java/org/springframework/web/client/HttpMessageConverterExtractor.java index 082f3fe5788..7b339969f24 100644 --- a/spring-web/src/main/java/org/springframework/web/client/HttpMessageConverterExtractor.java +++ b/spring-web/src/main/java/org/springframework/web/client/HttpMessageConverterExtractor.java @@ -71,13 +71,13 @@ public class HttpMessageConverterExtractor implements ResponseExtractor { this(responseType, messageConverters, LogFactory.getLog(HttpMessageConverterExtractor.class)); } - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) HttpMessageConverterExtractor(Type responseType, List> messageConverters, Log logger) { Assert.notNull(responseType, "'responseType' must not be null"); Assert.notEmpty(messageConverters, "'messageConverters' must not be empty"); Assert.noNullElements(messageConverters, "'messageConverters' must not contain null elements"); this.responseType = responseType; - this.responseClass = (responseType instanceof Class ? (Class) responseType : null); + this.responseClass = (responseType instanceof Class clazz ? clazz : null); this.messageConverters = messageConverters; this.logger = logger; } diff --git a/spring-web/src/main/java/org/springframework/web/context/request/RequestContextListener.java b/spring-web/src/main/java/org/springframework/web/context/request/RequestContextListener.java index 876cc7e4f54..ecca2b235f6 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/RequestContextListener.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/RequestContextListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2022 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. @@ -65,16 +65,16 @@ public class RequestContextListener implements ServletRequestListener { public void requestDestroyed(ServletRequestEvent requestEvent) { ServletRequestAttributes attributes = null; Object reqAttr = requestEvent.getServletRequest().getAttribute(REQUEST_ATTRIBUTES_ATTRIBUTE); - if (reqAttr instanceof ServletRequestAttributes) { - attributes = (ServletRequestAttributes) reqAttr; + if (reqAttr instanceof ServletRequestAttributes servletRequestAttributes) { + attributes = servletRequestAttributes; } RequestAttributes threadAttributes = RequestContextHolder.getRequestAttributes(); if (threadAttributes != null) { // We're assumably within the original request thread... LocaleContextHolder.resetLocaleContext(); RequestContextHolder.resetRequestAttributes(); - if (attributes == null && threadAttributes instanceof ServletRequestAttributes) { - attributes = (ServletRequestAttributes) threadAttributes; + if (attributes == null && threadAttributes instanceof ServletRequestAttributes servletRequestAttributes) { + attributes = servletRequestAttributes; } } if (attributes != null) {