Add nullability annotations to module/spring-boot-webservices

See gh-46587
This commit is contained in:
Moritz Halbritter
2025-08-07 10:48:44 +02:00
parent 279258f699
commit 3998915359
6 changed files with 38 additions and 20 deletions
@@ -44,6 +44,7 @@ import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Role;
import org.springframework.core.io.Resource;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.ws.config.annotation.EnableWs;
import org.springframework.ws.config.annotation.WsConfigurationSupport;
@@ -96,6 +97,7 @@ public final class WebServicesAutoConfiguration {
static class WsdlDefinitionBeanFactoryPostProcessor
implements BeanDefinitionRegistryPostProcessor, ApplicationContextAware {
@SuppressWarnings("NullAway.Init")
private ApplicationContext applicationContext;
@Override
@@ -125,8 +127,9 @@ public final class WebServicesAutoConfiguration {
BeanDefinition beanDefinition = BeanDefinitionBuilder
.rootBeanDefinition(type, () -> beanSupplier.apply(resource))
.getBeanDefinition();
registry.registerBeanDefinition(StringUtils.stripFilenameExtension(resource.getFilename()),
beanDefinition);
String filename = resource.getFilename();
Assert.state(filename != null, "'filename' must not be null");
registry.registerBeanDefinition(StringUtils.stripFilenameExtension(filename), beanDefinition);
}
}
@@ -17,4 +17,7 @@
/**
* Auto-configuration for Spring Web Services Clients.
*/
@NullMarked
package org.springframework.boot.webservices.autoconfigure.client;
import org.jspecify.annotations.NullMarked;
@@ -17,4 +17,7 @@
/**
* Auto-configuration for Spring Web Services.
*/
@NullMarked
package org.springframework.boot.webservices.autoconfigure;
import org.jspecify.annotations.NullMarked;
@@ -16,6 +16,8 @@
package org.springframework.boot.webservices.client;
import org.jspecify.annotations.Nullable;
import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder;
import org.springframework.boot.http.client.ClientHttpRequestFactorySettings;
import org.springframework.http.client.ClientHttpRequestFactory;
@@ -66,7 +68,7 @@ public interface WebServiceMessageSenderFactory {
* @return a new {@link WebServiceMessageSenderFactory}
*/
static WebServiceMessageSenderFactory http(ClientHttpRequestFactoryBuilder<?> requestFactoryBuilder,
ClientHttpRequestFactorySettings requestFactorySettings) {
@Nullable ClientHttpRequestFactorySettings requestFactorySettings) {
Assert.notNull(requestFactoryBuilder, "'requestFactoryBuilder' must not be null");
return () -> new ClientHttpRequestMessageSender(requestFactoryBuilder.build(requestFactorySettings));
}
@@ -25,6 +25,8 @@ import java.util.Set;
import javax.xml.transform.TransformerFactory;
import org.jspecify.annotations.Nullable;
import org.springframework.beans.BeanUtils;
import org.springframework.boot.context.properties.PropertyMapper;
import org.springframework.oxm.Marshaller;
@@ -56,27 +58,27 @@ import org.springframework.ws.transport.WebServiceMessageSender;
*/
public class WebServiceTemplateBuilder {
private final WebServiceMessageSenderFactory httpMessageSenderFactory;
private final @Nullable WebServiceMessageSenderFactory httpMessageSenderFactory;
private final boolean detectHttpMessageSender;
private final Set<ClientInterceptor> interceptors;
private final @Nullable Set<ClientInterceptor> interceptors;
private final Set<WebServiceTemplateCustomizer> internalCustomizers;
private final @Nullable Set<WebServiceTemplateCustomizer> internalCustomizers;
private final Set<WebServiceTemplateCustomizer> customizers;
private final WebServiceMessageSenders messageSenders;
private final Marshaller marshaller;
private final @Nullable Marshaller marshaller;
private final Unmarshaller unmarshaller;
private final @Nullable Unmarshaller unmarshaller;
private final DestinationProvider destinationProvider;
private final @Nullable DestinationProvider destinationProvider;
private final Class<? extends TransformerFactory> transformerFactoryClass;
private final @Nullable Class<? extends TransformerFactory> transformerFactoryClass;
private final WebServiceMessageFactory messageFactory;
private final @Nullable WebServiceMessageFactory messageFactory;
public WebServiceTemplateBuilder(WebServiceTemplateCustomizer... customizers) {
this.httpMessageSenderFactory = null;
@@ -92,12 +94,14 @@ public class WebServiceTemplateBuilder {
this.messageFactory = null;
}
private WebServiceTemplateBuilder(WebServiceMessageSenderFactory messageSenderFactory,
boolean detectHttpMessageSender, Set<ClientInterceptor> interceptors,
Set<WebServiceTemplateCustomizer> internalCustomizers, Set<WebServiceTemplateCustomizer> customizers,
WebServiceMessageSenders messageSenders, Marshaller marshaller, Unmarshaller unmarshaller,
DestinationProvider destinationProvider, Class<? extends TransformerFactory> transformerFactoryClass,
WebServiceMessageFactory messageFactory) {
private WebServiceTemplateBuilder(@Nullable WebServiceMessageSenderFactory messageSenderFactory,
boolean detectHttpMessageSender, @Nullable Set<ClientInterceptor> interceptors,
@Nullable Set<WebServiceTemplateCustomizer> internalCustomizers,
Set<WebServiceTemplateCustomizer> customizers, WebServiceMessageSenders messageSenders,
@Nullable Marshaller marshaller, @Nullable Unmarshaller unmarshaller,
@Nullable DestinationProvider destinationProvider,
@Nullable Class<? extends TransformerFactory> transformerFactoryClass,
@Nullable WebServiceMessageFactory messageFactory) {
this.httpMessageSenderFactory = messageSenderFactory;
this.detectHttpMessageSender = detectHttpMessageSender;
this.interceptors = interceptors;
@@ -497,7 +501,7 @@ public class WebServiceTemplateBuilder {
}
private void applyCustomizers(WebServiceTemplate webServiceTemplate,
Set<WebServiceTemplateCustomizer> customizers) {
@Nullable Set<WebServiceTemplateCustomizer> customizers) {
if (!CollectionUtils.isEmpty(customizers)) {
for (WebServiceTemplateCustomizer customizer : customizers) {
customizer.customize(webServiceTemplate);
@@ -520,11 +524,11 @@ public class WebServiceTemplateBuilder {
}
}
private <T> Set<T> append(Set<T> set, T addition) {
private <T> Set<T> append(@Nullable Set<T> set, T addition) {
return append(set, Collections.singleton(addition));
}
private static <T> Set<T> append(Set<T> set, Collection<? extends T> additions) {
private static <T> Set<T> append(@Nullable Set<T> set, @Nullable Collection<? extends T> additions) {
Set<T> result = new LinkedHashSet<>((set != null) ? set : Collections.emptySet());
result.addAll((additions != null) ? additions : Collections.emptyList());
return Collections.unmodifiableSet(result);
@@ -17,4 +17,7 @@
/**
* Web Services client utilities.
*/
@NullMarked
package org.springframework.boot.webservices.client;
import org.jspecify.annotations.NullMarked;