Avoid "NullAway.Init" suppression in favor of explicit field handling

Closes gh-36961
This commit is contained in:
Juergen Hoeller
2026-06-23 11:55:58 +02:00
parent 9130ded96f
commit bd405756ab
18 changed files with 140 additions and 131 deletions
@@ -44,8 +44,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
public abstract class AbstractMultipartHttpServletRequest extends HttpServletRequestWrapper
implements MultipartHttpServletRequest {
@SuppressWarnings("NullAway.Init")
private MultiValueMap<String, MultipartFile> multipartFiles;
private @Nullable MultiValueMap<String, MultipartFile> multipartFiles;
/**
@@ -140,7 +139,7 @@ public abstract class AbstractMultipartHttpServletRequest extends HttpServletReq
if (this.multipartFiles == null) {
initializeMultipart();
}
return this.multipartFiles;
return (this.multipartFiles != null ? this.multipartFiles : new LinkedMultiValueMap<>(Collections.emptyMap()));
}
/**
@@ -45,11 +45,9 @@ public class DefaultMultipartHttpServletRequest extends AbstractMultipartHttpSer
private static final String CONTENT_TYPE = "Content-Type";
@SuppressWarnings("NullAway.Init")
private Map<String, String[]> multipartParameters;
private @Nullable Map<String, String[]> multipartParameters;
@SuppressWarnings("NullAway.Init")
private Map<String, String> multipartParameterContentTypes;
private @Nullable Map<String, String> multipartParameterContentTypes;
/**
@@ -170,7 +168,7 @@ public class DefaultMultipartHttpServletRequest extends AbstractMultipartHttpSer
if (this.multipartParameters == null) {
initializeMultipart();
}
return this.multipartParameters;
return (this.multipartParameters != null ? this.multipartParameters : Collections.emptyMap());
}
/**
@@ -190,7 +188,8 @@ public class DefaultMultipartHttpServletRequest extends AbstractMultipartHttpSer
if (this.multipartParameterContentTypes == null) {
initializeMultipart();
}
return this.multipartParameterContentTypes;
return (this.multipartParameterContentTypes != null ? this.multipartParameterContentTypes :
Collections.emptyMap());
}
}
@@ -58,8 +58,7 @@ import org.springframework.web.multipart.MultipartFile;
*/
public class StandardMultipartHttpServletRequest extends AbstractMultipartHttpServletRequest {
@SuppressWarnings("NullAway.Init")
private Set<String> multipartParameterNames;
private @Nullable Set<String> multipartParameterNames;
/**
@@ -144,7 +143,7 @@ public class StandardMultipartHttpServletRequest extends AbstractMultipartHttpSe
if (this.multipartParameterNames == null) {
initializeMultipart();
}
if (this.multipartParameterNames.isEmpty()) {
if (CollectionUtils.isEmpty(this.multipartParameterNames)) {
return super.getParameterNames();
}
@@ -164,7 +163,7 @@ public class StandardMultipartHttpServletRequest extends AbstractMultipartHttpSe
if (this.multipartParameterNames == null) {
initializeMultipart();
}
if (this.multipartParameterNames.isEmpty()) {
if (CollectionUtils.isEmpty(this.multipartParameterNames)) {
return super.getParameterMap();
}
@@ -86,8 +86,7 @@ public class HttpWebHandlerAdapter extends WebHandlerDecorator implements HttpHa
private WebSessionManager sessionManager = new DefaultWebSessionManager();
@SuppressWarnings("NullAway.Init")
private ServerCodecConfigurer codecConfigurer;
private @Nullable ServerCodecConfigurer codecConfigurer;
private LocaleContextResolver localeContextResolver = new AcceptHeaderLocaleContextResolver();
@@ -153,10 +152,12 @@ public class HttpWebHandlerAdapter extends WebHandlerDecorator implements HttpHa
* Return the configured {@link ServerCodecConfigurer}.
*/
public ServerCodecConfigurer getCodecConfigurer() {
if (this.codecConfigurer == null) {
setCodecConfigurer(ServerCodecConfigurer.create());
ServerCodecConfigurer codecConfigurer = this.codecConfigurer;
if (codecConfigurer == null) {
codecConfigurer = ServerCodecConfigurer.create();
setCodecConfigurer(codecConfigurer);
}
return this.codecConfigurer;
return codecConfigurer;
}
/**