Skip to content

Commit 87dfa49

Browse files
committed
Refine null-safety in spring-webflux
See gh-32475
1 parent cf9033a commit 87dfa49

16 files changed

+26
-2
lines changed

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/config/DelegatingWebFluxConfiguration.java

+4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.springframework.context.annotation.Configuration;
2323
import org.springframework.format.FormatterRegistry;
2424
import org.springframework.http.codec.ServerCodecConfigurer;
25+
import org.springframework.lang.Nullable;
2526
import org.springframework.util.CollectionUtils;
2627
import org.springframework.validation.MessageCodesResolver;
2728
import org.springframework.validation.Validator;
@@ -63,12 +64,14 @@ protected void addFormatters(FormatterRegistry registry) {
6364
}
6465

6566
@Override
67+
@Nullable
6668
protected Validator getValidator() {
6769
Validator validator = this.configurers.getValidator();
6870
return (validator != null ? validator : super.getValidator());
6971
}
7072

7173
@Override
74+
@Nullable
7275
protected MessageCodesResolver getMessageCodesResolver() {
7376
MessageCodesResolver messageCodesResolver = this.configurers.getMessageCodesResolver();
7477
return (messageCodesResolver != null ? messageCodesResolver : super.getMessageCodesResolver());
@@ -110,6 +113,7 @@ protected void configureViewResolvers(ViewResolverRegistry registry) {
110113
}
111114

112115
@Override
116+
@Nullable
113117
protected WebSocketService getWebSocketService() {
114118
WebSocketService service = this.configurers.getWebSocketService();
115119
return (service != null ? service : super.getWebSocketService());

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/config/WebFluxConfigurerComposite.java

+2
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,13 @@ public void addFormatters(FormatterRegistry registry) {
6161
}
6262

6363
@Override
64+
@Nullable
6465
public Validator getValidator() {
6566
return createSingleBean(WebFluxConfigurer::getValidator, Validator.class);
6667
}
6768

6869
@Override
70+
@Nullable
6971
public MessageCodesResolver getMessageCodesResolver() {
7072
return createSingleBean(WebFluxConfigurer::getMessageCodesResolver, MessageCodesResolver.class);
7173
}

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultClientRequestBuilder.java

+1
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ public Map<String, Object> attributes() {
242242
}
243243

244244
@Override
245+
@Nullable
245246
public Consumer<ClientHttpRequest> httpRequest() {
246247
return this.httpRequestConsumer;
247248
}

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClientException.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.web.reactive.function.client;
1818

1919
import org.springframework.core.NestedRuntimeException;
20+
import org.springframework.lang.Nullable;
2021

2122
/**
2223
* Abstract base class for exception published by {@link WebClient} in case of errors.
@@ -42,7 +43,7 @@ public WebClientException(String msg) {
4243
* @param msg the message
4344
* @param ex the exception
4445
*/
45-
public WebClientException(String msg, Throwable ex) {
46+
public WebClientException(@Nullable String msg, Throwable ex) {
4647
super(msg, ex);
4748
}
4849

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapper.java

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.springframework.http.server.PathContainer;
4242
import org.springframework.http.server.RequestPath;
4343
import org.springframework.http.server.reactive.ServerHttpRequest;
44+
import org.springframework.lang.Nullable;
4445
import org.springframework.util.Assert;
4546
import org.springframework.util.MultiValueMap;
4647
import org.springframework.web.bind.WebDataBinder;
@@ -283,6 +284,7 @@ public Optional<MediaType> contentType() {
283284
}
284285

285286
@Override
287+
@Nullable
286288
public InetSocketAddress host() {
287289
return this.headers.host();
288290
}

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/handler/AbstractUrlHandlerMapping.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ protected Object lookupHandler(PathContainer lookupPath, ServerWebExchange excha
186186
* @param exchange current exchange
187187
*/
188188
@SuppressWarnings("UnusedParameters")
189-
protected void validateHandler(Object handler, ServerWebExchange exchange) {
189+
protected void validateHandler(@Nullable Object handler, ServerWebExchange exchange) {
190190
}
191191

192192
/**

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/resource/AbstractFileNameVersionStrategy.java

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.commons.logging.Log;
2323
import org.apache.commons.logging.LogFactory;
2424

25+
import org.springframework.lang.Nullable;
2526
import org.springframework.util.StringUtils;
2627

2728
/**
@@ -40,6 +41,7 @@ public abstract class AbstractFileNameVersionStrategy implements VersionStrategy
4041

4142

4243
@Override
44+
@Nullable
4345
public String extractVersion(String requestPath) {
4446
Matcher matcher = pattern.matcher(requestPath);
4547
if (matcher.find()) {

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/resource/AbstractPrefixVersionStrategy.java

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.apache.commons.logging.Log;
2020
import org.apache.commons.logging.LogFactory;
2121

22+
import org.springframework.lang.Nullable;
2223
import org.springframework.util.Assert;
2324

2425
/**
@@ -44,6 +45,7 @@ protected AbstractPrefixVersionStrategy(String version) {
4445

4546

4647
@Override
48+
@Nullable
4749
public String extractVersion(String requestPath) {
4850
return (requestPath.startsWith(this.prefix) ? this.prefix : null);
4951
}

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/result/method/AbstractHandlerMethodMapping.java

+1
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,7 @@ protected boolean hasCorsConfigurationSource(Object handler) {
400400
}
401401

402402
@Override
403+
@Nullable
403404
protected CorsConfiguration getCorsConfiguration(Object handler, ServerWebExchange exchange) {
404405
CorsConfiguration corsConfig = super.getCorsConfiguration(handler, exchange);
405406
if (handler instanceof HandlerMethod handlerMethod) {

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMapping.java

+3
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.springframework.http.server.PathContainer;
3737
import org.springframework.http.server.reactive.ServerHttpRequest;
3838
import org.springframework.http.server.reactive.observation.ServerRequestObservationContext;
39+
import org.springframework.lang.Nullable;
3940
import org.springframework.util.Assert;
4041
import org.springframework.util.CollectionUtils;
4142
import org.springframework.util.MultiValueMap;
@@ -87,6 +88,7 @@ protected Set<String> getDirectPaths(RequestMappingInfo info) {
8788
* @return an info in case of a match; or {@code null} otherwise.
8889
*/
8990
@Override
91+
@Nullable
9092
protected RequestMappingInfo getMatchingMapping(RequestMappingInfo info, ServerWebExchange exchange) {
9193
return info.getMatchingCondition(exchange);
9294
}
@@ -171,6 +173,7 @@ protected void handleMatch(RequestMappingInfo info, HandlerMethod handlerMethod,
171173
* method but not by query parameter conditions
172174
*/
173175
@Override
176+
@Nullable
174177
protected HandlerMethod handleNoMatch(Set<RequestMappingInfo> infos,
175178
ServerWebExchange exchange) throws Exception {
176179

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/CookieValueMethodArgumentResolver.java

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ protected NamedValueInfo createNamedValueInfo(MethodParameter parameter) {
6565
}
6666

6767
@Override
68+
@Nullable
6869
protected Object resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange) {
6970
HttpCookie cookie = exchange.getRequest().getCookies().getFirst(name);
7071
Class<?> paramType = parameter.getNestedParameterType();

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ExpressionValueMethodArgumentResolver.java

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ protected NamedValueInfo createNamedValueInfo(MethodParameter parameter) {
6363
}
6464

6565
@Override
66+
@Nullable
6667
protected Object resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange) {
6768
// No name to resolve
6869
return null;

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/PathVariableMethodArgumentResolver.java

+1
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ protected NamedValueInfo createNamedValueInfo(MethodParameter parameter) {
8585
}
8686

8787
@Override
88+
@Nullable
8889
protected Object resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange) {
8990
String attributeName = HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE;
9091
return exchange.getAttributeOrDefault(attributeName, Collections.emptyMap()).get(name);

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/RequestHeaderMethodArgumentResolver.java

+1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ protected NamedValueInfo createNamedValueInfo(MethodParameter parameter) {
7878
}
7979

8080
@Override
81+
@Nullable
8182
protected Object resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange) {
8283
List<String> headerValues = exchange.getRequest().getHeaders().get(name);
8384
Object result = null;

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/RequestMappingHandlerMapping.java

+1
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,7 @@ private void updateConsumesCondition(RequestMappingInfo info, Method method) {
356356
}
357357

358358
@Override
359+
@Nullable
359360
protected CorsConfiguration initCorsConfiguration(Object handler, Method method, RequestMappingInfo mappingInfo) {
360361
HandlerMethod handlerMethod = createHandlerMethod(handler, method);
361362
Class<?> beanType = handlerMethod.getBeanType();

Diff for: spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/RequestParamMethodArgumentResolver.java

+1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ protected NamedValueInfo createNamedValueInfo(MethodParameter parameter) {
9898
}
9999

100100
@Override
101+
@Nullable
101102
protected Object resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange) {
102103
List<String> paramValues = exchange.getRequest().getQueryParams().get(name);
103104
Object result = null;

0 commit comments

Comments
 (0)