From 2d256c244eb225b4f4eb78a79abfdf6db8e77ec8 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Thu, 24 Jul 2025 08:50:24 +0200 Subject: [PATCH] Add nullability annotations to module/spring-boot-activemq See gh-46587 --- .../ActiveMQAutoConfiguration.java | 5 ++-- .../ActiveMQConnectionDetails.java | 6 +++-- .../ActiveMQConnectionFactoryConfigurer.java | 3 ++- .../autoconfigure/ActiveMQProperties.java | 26 ++++++++++--------- .../activemq/autoconfigure/package-info.java | 3 +++ ...DockerComposeConnectionDetailsFactory.java | 6 +++-- .../compose/ActiveMQClassicEnvironment.java | 10 ++++--- ...DockerComposeConnectionDetailsFactory.java | 6 +++-- .../docker/compose/ActiveMQEnvironment.java | 10 ++++--- .../activemq/docker/compose/package-info.java | 3 +++ ...veMQContainerConnectionDetailsFactory.java | 5 ++-- .../activemq/testcontainers/package-info.java | 3 +++ 12 files changed, 55 insertions(+), 31 deletions(-) diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQAutoConfiguration.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQAutoConfiguration.java index 4723918e1b3..484527ac422 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQAutoConfiguration.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQAutoConfiguration.java @@ -18,6 +18,7 @@ package org.springframework.boot.activemq.autoconfigure; import jakarta.jms.ConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory; +import org.jspecify.annotations.Nullable; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -71,12 +72,12 @@ public final class ActiveMQAutoConfiguration { } @Override - public String getUser() { + public @Nullable String getUser() { return this.properties.getUser(); } @Override - public String getPassword() { + public @Nullable String getPassword() { return this.properties.getPassword(); } diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionDetails.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionDetails.java index 450798faca2..47abad25313 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionDetails.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionDetails.java @@ -16,6 +16,8 @@ package org.springframework.boot.activemq.autoconfigure; +import org.jspecify.annotations.Nullable; + import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails; /** @@ -37,12 +39,12 @@ public interface ActiveMQConnectionDetails extends ConnectionDetails { * Login user to authenticate to the broker. * @return the login user to authenticate to the broker or {@code null} */ - String getUser(); + @Nullable String getUser(); /** * Login to authenticate against the broker. * @return the login to authenticate against the broker or {@code null} */ - String getPassword(); + @Nullable String getPassword(); } diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryConfigurer.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryConfigurer.java index fc099d9ec21..4964a7a2e7f 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryConfigurer.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryConfigurer.java @@ -20,6 +20,7 @@ import java.util.Collections; import java.util.List; import org.apache.activemq.ActiveMQConnectionFactory; +import org.jspecify.annotations.Nullable; import org.springframework.boot.activemq.autoconfigure.ActiveMQProperties.Packages; import org.springframework.util.Assert; @@ -40,7 +41,7 @@ class ActiveMQConnectionFactoryConfigurer { private final List factoryCustomizers; ActiveMQConnectionFactoryConfigurer(ActiveMQProperties properties, - List factoryCustomizers) { + @Nullable List factoryCustomizers) { Assert.notNull(properties, "'properties' must not be null"); this.properties = properties; this.factoryCustomizers = (factoryCustomizers != null) ? factoryCustomizers : Collections.emptyList(); diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQProperties.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQProperties.java index 04ad7cd753e..74b67fe77af 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQProperties.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQProperties.java @@ -20,6 +20,8 @@ import java.time.Duration; import java.util.ArrayList; import java.util.List; +import org.jspecify.annotations.Nullable; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; import org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties; @@ -44,17 +46,17 @@ public class ActiveMQProperties { /** * URL of the ActiveMQ broker. Auto-generated by default. */ - private String brokerUrl; + private @Nullable String brokerUrl; /** * Login user of the broker. */ - private String user; + private @Nullable String user; /** * Login password of the broker. */ - private String password; + private @Nullable String password; private final Embedded embedded = new Embedded(); @@ -79,27 +81,27 @@ public class ActiveMQProperties { private final Packages packages = new Packages(); - public String getBrokerUrl() { + public @Nullable String getBrokerUrl() { return this.brokerUrl; } - public void setBrokerUrl(String brokerUrl) { + public void setBrokerUrl(@Nullable String brokerUrl) { this.brokerUrl = brokerUrl; } - public String getUser() { + public @Nullable String getUser() { return this.user; } - public void setUser(String user) { + public void setUser(@Nullable String user) { this.user = user; } - public String getPassword() { + public @Nullable String getPassword() { return this.password; } - public void setPassword(String password) { + public void setPassword(@Nullable String password) { this.password = password; } @@ -174,18 +176,18 @@ public class ActiveMQProperties { /** * Whether to trust all packages. */ - private Boolean trustAll; + private @Nullable Boolean trustAll; /** * List of specific packages to trust (when not trusting all packages). */ private List trusted = new ArrayList<>(); - public Boolean getTrustAll() { + public @Nullable Boolean getTrustAll() { return this.trustAll; } - public void setTrustAll(Boolean trustAll) { + public void setTrustAll(@Nullable Boolean trustAll) { this.trustAll = trustAll; } diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/package-info.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/package-info.java index 5a7faf4775d..12fd9eab489 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/package-info.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/package-info.java @@ -17,4 +17,7 @@ /** * Auto-configuration for ActiveMQ. */ +@NullMarked package org.springframework.boot.activemq.autoconfigure; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQClassicDockerComposeConnectionDetailsFactory.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQClassicDockerComposeConnectionDetailsFactory.java index 26b3ab0b3da..9d7e2684a51 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQClassicDockerComposeConnectionDetailsFactory.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQClassicDockerComposeConnectionDetailsFactory.java @@ -16,6 +16,8 @@ package org.springframework.boot.activemq.docker.compose; +import org.jspecify.annotations.Nullable; + import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails; import org.springframework.boot.docker.compose.core.RunningService; import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionDetailsFactory; @@ -65,12 +67,12 @@ class ActiveMQClassicDockerComposeConnectionDetailsFactory } @Override - public String getUser() { + public @Nullable String getUser() { return this.environment.getUser(); } @Override - public String getPassword() { + public @Nullable String getPassword() { return this.environment.getPassword(); } diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQClassicEnvironment.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQClassicEnvironment.java index aa6963e8edf..be1192dcc43 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQClassicEnvironment.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQClassicEnvironment.java @@ -18,6 +18,8 @@ package org.springframework.boot.activemq.docker.compose; import java.util.Map; +import org.jspecify.annotations.Nullable; + /** * ActiveMQ environment details. * @@ -26,20 +28,20 @@ import java.util.Map; */ class ActiveMQClassicEnvironment { - private final String user; + private final @Nullable String user; - private final String password; + private final @Nullable String password; ActiveMQClassicEnvironment(Map env) { this.user = env.get("ACTIVEMQ_CONNECTION_USER"); this.password = env.get("ACTIVEMQ_CONNECTION_PASSWORD"); } - String getUser() { + @Nullable String getUser() { return this.user; } - String getPassword() { + @Nullable String getPassword() { return this.password; } diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQDockerComposeConnectionDetailsFactory.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQDockerComposeConnectionDetailsFactory.java index 357f70e5502..b71699ededd 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQDockerComposeConnectionDetailsFactory.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQDockerComposeConnectionDetailsFactory.java @@ -16,6 +16,8 @@ package org.springframework.boot.activemq.docker.compose; +import org.jspecify.annotations.Nullable; + import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails; import org.springframework.boot.docker.compose.core.RunningService; import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionDetailsFactory; @@ -64,12 +66,12 @@ class ActiveMQDockerComposeConnectionDetailsFactory } @Override - public String getUser() { + public @Nullable String getUser() { return this.environment.getUser(); } @Override - public String getPassword() { + public @Nullable String getPassword() { return this.environment.getPassword(); } diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQEnvironment.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQEnvironment.java index 06d6562bfb6..a5775a0fff6 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQEnvironment.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/ActiveMQEnvironment.java @@ -18,6 +18,8 @@ package org.springframework.boot.activemq.docker.compose; import java.util.Map; +import org.jspecify.annotations.Nullable; + /** * ActiveMQ environment details. * @@ -25,20 +27,20 @@ import java.util.Map; */ class ActiveMQEnvironment { - private final String user; + private final @Nullable String user; - private final String password; + private final @Nullable String password; ActiveMQEnvironment(Map env) { this.user = env.get("ACTIVEMQ_USERNAME"); this.password = env.get("ACTIVEMQ_PASSWORD"); } - String getUser() { + @Nullable String getUser() { return this.user; } - String getPassword() { + @Nullable String getPassword() { return this.password; } diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/package-info.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/package-info.java index 86a2b9b8e2a..cc4e2896443 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/package-info.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/docker/compose/package-info.java @@ -17,4 +17,7 @@ /** * Support for Docker Compose ActiveMQ service connections. */ +@NullMarked package org.springframework.boot.activemq.docker.compose; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/testcontainers/ActiveMQContainerConnectionDetailsFactory.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/testcontainers/ActiveMQContainerConnectionDetailsFactory.java index 61aafd15ee1..43995cfd7da 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/testcontainers/ActiveMQContainerConnectionDetailsFactory.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/testcontainers/ActiveMQContainerConnectionDetailsFactory.java @@ -16,6 +16,7 @@ package org.springframework.boot.activemq.testcontainers; +import org.jspecify.annotations.Nullable; import org.testcontainers.containers.Container; import org.testcontainers.containers.GenericContainer; @@ -56,12 +57,12 @@ class ActiveMQContainerConnectionDetailsFactory } @Override - public String getUser() { + public @Nullable String getUser() { return getContainer().getEnvMap().get("ACTIVEMQ_USERNAME"); } @Override - public String getPassword() { + public @Nullable String getPassword() { return getContainer().getEnvMap().get("ACTIVEMQ_PASSWORD"); } diff --git a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/testcontainers/package-info.java b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/testcontainers/package-info.java index b13c78bffdd..4f77cd1c242 100644 --- a/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/testcontainers/package-info.java +++ b/module/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/testcontainers/package-info.java @@ -17,4 +17,7 @@ /** * Support for testcontainers ActiveMQ service connections. */ +@NullMarked package org.springframework.boot.activemq.testcontainers; + +import org.jspecify.annotations.NullMarked;