diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/OnDatabaseInitializationCondition.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/OnDatabaseInitializationCondition.java index 2e9069bfa17..766f00c28ff 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/OnDatabaseInitializationCondition.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/OnDatabaseInitializationCondition.java @@ -18,6 +18,8 @@ package org.springframework.boot.sql.autoconfigure.init; import java.util.Locale; +import org.jspecify.annotations.Nullable; + import org.springframework.boot.autoconfigure.condition.ConditionMessage; import org.springframework.boot.autoconfigure.condition.ConditionOutcome; import org.springframework.boot.autoconfigure.condition.SpringBootCondition; @@ -68,7 +70,8 @@ public abstract class OnDatabaseInitializationCondition extends SpringBootCondit return !mode.equals(DatabaseInitializationMode.NEVER); } - private DatabaseInitializationMode getDatabaseInitializationMode(Environment environment, String propertyName) { + private DatabaseInitializationMode getDatabaseInitializationMode(Environment environment, + @Nullable String propertyName) { if (StringUtils.hasText(propertyName)) { String candidate = environment.getProperty(propertyName, "embedded").toUpperCase(Locale.ENGLISH); if (StringUtils.hasText(candidate)) { @@ -78,7 +81,7 @@ public abstract class OnDatabaseInitializationCondition extends SpringBootCondit return DatabaseInitializationMode.EMBEDDED; } - private String getConfiguredProperty(Environment environment) { + private @Nullable String getConfiguredProperty(Environment environment) { for (String propertyName : this.propertyNames) { if (environment.containsProperty(propertyName)) { return propertyName; diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SettingsCreator.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SettingsCreator.java index 1912271b5a0..2ad1fe9a6c9 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SettingsCreator.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SettingsCreator.java @@ -19,6 +19,8 @@ package org.springframework.boot.sql.autoconfigure.init; import java.util.ArrayList; import java.util.List; +import org.jspecify.annotations.Nullable; + import org.springframework.boot.sql.init.DatabaseInitializationSettings; /** @@ -44,7 +46,7 @@ final class SettingsCreator { return settings; } - private static List scriptLocations(List locations, String fallback, String platform) { + private static List scriptLocations(@Nullable List locations, String fallback, String platform) { if (locations != null) { return locations; } diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationProperties.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationProperties.java index ac3444e9770..e3771776ed7 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationProperties.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationProperties.java @@ -19,6 +19,8 @@ package org.springframework.boot.sql.autoconfigure.init; import java.nio.charset.Charset; import java.util.List; +import org.jspecify.annotations.Nullable; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.sql.init.DatabaseInitializationMode; @@ -35,12 +37,12 @@ public class SqlInitializationProperties { /** * Locations of the schema (DDL) scripts to apply to the database. */ - private List schemaLocations; + private @Nullable List schemaLocations; /** * Locations of the data (DML) scripts to apply to the database. */ - private List dataLocations; + private @Nullable List dataLocations; /** * Platform to use in the default schema or data script locations, @@ -52,13 +54,13 @@ public class SqlInitializationProperties { * Username of the database to use when applying initialization scripts (if * different). */ - private String username; + private @Nullable String username; /** * Password of the database to use when applying initialization scripts (if * different). */ - private String password; + private @Nullable String password; /** * Whether initialization should continue when an error occurs. @@ -73,26 +75,26 @@ public class SqlInitializationProperties { /** * Encoding of the schema and data scripts. */ - private Charset encoding; + private @Nullable Charset encoding; /** * Mode to apply when determining whether initialization should be performed. */ private DatabaseInitializationMode mode = DatabaseInitializationMode.EMBEDDED; - public List getSchemaLocations() { + public @Nullable List getSchemaLocations() { return this.schemaLocations; } - public void setSchemaLocations(List schemaLocations) { + public void setSchemaLocations(@Nullable List schemaLocations) { this.schemaLocations = schemaLocations; } - public List getDataLocations() { + public @Nullable List getDataLocations() { return this.dataLocations; } - public void setDataLocations(List dataLocations) { + public void setDataLocations(@Nullable List dataLocations) { this.dataLocations = dataLocations; } @@ -104,19 +106,19 @@ public class SqlInitializationProperties { this.platform = platform; } - public String getUsername() { + public @Nullable String getUsername() { return this.username; } - public void setUsername(String username) { + public void setUsername(@Nullable String username) { this.username = username; } - public String getPassword() { + public @Nullable String getPassword() { return this.password; } - public void setPassword(String password) { + public void setPassword(@Nullable String password) { this.password = password; } @@ -136,11 +138,11 @@ public class SqlInitializationProperties { this.separator = separator; } - public Charset getEncoding() { + public @Nullable Charset getEncoding() { return this.encoding; } - public void setEncoding(Charset encoding) { + public void setEncoding(@Nullable Charset encoding) { this.encoding = encoding; } diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationScriptsRuntimeHints.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationScriptsRuntimeHints.java index 9526def869d..9fc969a0c0a 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationScriptsRuntimeHints.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationScriptsRuntimeHints.java @@ -16,6 +16,8 @@ package org.springframework.boot.sql.autoconfigure.init; +import org.jspecify.annotations.Nullable; + import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; @@ -27,7 +29,7 @@ import org.springframework.aot.hint.RuntimeHintsRegistrar; class SqlInitializationScriptsRuntimeHints implements RuntimeHintsRegistrar { @Override - public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader) { hints.resources().registerPattern("schema.sql").registerPattern("schema-*.sql"); hints.resources().registerPattern("data.sql").registerPattern("data-*.sql"); } diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/package-info.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/package-info.java index 08af5cdc63b..d364582f0f4 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/package-info.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/package-info.java @@ -17,4 +17,7 @@ /** * Auto-configuration for basic script-based initialization of an SQL database. */ +@NullMarked package org.springframework.boot.sql.autoconfigure.init; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java index b60ce69a54a..80f2aa73e53 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java @@ -24,6 +24,8 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import org.jspecify.annotations.Nullable; + import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ResourceLoaderAware; import org.springframework.core.io.Resource; @@ -45,6 +47,7 @@ public abstract class AbstractScriptDatabaseInitializer implements ResourceLoade private final DatabaseInitializationSettings settings; + @SuppressWarnings("NullAway.Init") private volatile ResourceLoader resourceLoader; /** @@ -102,7 +105,8 @@ public abstract class AbstractScriptDatabaseInitializer implements ResourceLoade return applyScripts(this.settings.getDataLocations(), "data", locationResolver); } - private boolean applyScripts(List locations, String type, ScriptLocationResolver locationResolver) { + private boolean applyScripts(@Nullable List locations, String type, + ScriptLocationResolver locationResolver) { List scripts = getScripts(locations, type, locationResolver); if (!scripts.isEmpty() && isEnabled()) { runScripts(scripts); @@ -111,7 +115,8 @@ public abstract class AbstractScriptDatabaseInitializer implements ResourceLoade return false; } - private List getScripts(List locations, String type, ScriptLocationResolver locationResolver) { + private List getScripts(@Nullable List locations, String type, + ScriptLocationResolver locationResolver) { if (CollectionUtils.isEmpty(locations)) { return Collections.emptyList(); } @@ -192,7 +197,7 @@ public abstract class AbstractScriptDatabaseInitializer implements ResourceLoade private String separator = ";"; - private Charset encoding; + private @Nullable Charset encoding; public Scripts(List resources) { this.resources = resources; @@ -221,12 +226,12 @@ public abstract class AbstractScriptDatabaseInitializer implements ResourceLoade return this.separator; } - public Scripts encoding(Charset encoding) { + public Scripts encoding(@Nullable Charset encoding) { this.encoding = encoding; return this; } - public Charset getEncoding() { + public @Nullable Charset getEncoding() { return this.encoding; } diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/DatabaseInitializationSettings.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/DatabaseInitializationSettings.java index ea58672b085..7ac7e5b55c1 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/DatabaseInitializationSettings.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/DatabaseInitializationSettings.java @@ -19,6 +19,8 @@ package org.springframework.boot.sql.init; import java.nio.charset.Charset; import java.util.List; +import org.jspecify.annotations.Nullable; + /** * Settings for initializing an SQL database. * @@ -27,15 +29,15 @@ import java.util.List; */ public class DatabaseInitializationSettings { - private List schemaLocations; + private @Nullable List schemaLocations; - private List dataLocations; + private @Nullable List dataLocations; private boolean continueOnError; private String separator = ";"; - private Charset encoding; + private @Nullable Charset encoding; private DatabaseInitializationMode mode = DatabaseInitializationMode.EMBEDDED; @@ -43,7 +45,7 @@ public class DatabaseInitializationSettings { * Returns the locations of the schema (DDL) scripts to apply to the database. * @return the locations of the schema scripts */ - public List getSchemaLocations() { + public @Nullable List getSchemaLocations() { return this.schemaLocations; } @@ -53,7 +55,7 @@ public class DatabaseInitializationSettings { * location can be made optional by prefixing it with {@code optional:}. * @param schemaLocations locations of the schema scripts */ - public void setSchemaLocations(List schemaLocations) { + public void setSchemaLocations(@Nullable List schemaLocations) { this.schemaLocations = schemaLocations; } @@ -61,7 +63,7 @@ public class DatabaseInitializationSettings { * Returns the locations of data (DML) scripts to apply to the database. * @return the locations of the data scripts */ - public List getDataLocations() { + public @Nullable List getDataLocations() { return this.dataLocations; } @@ -71,7 +73,7 @@ public class DatabaseInitializationSettings { * location can be made optional by prefixing it with {@code optional:}. * @param dataLocations locations of the data scripts */ - public void setDataLocations(List dataLocations) { + public void setDataLocations(@Nullable List dataLocations) { this.dataLocations = dataLocations; } @@ -113,7 +115,7 @@ public class DatabaseInitializationSettings { * Returns the encoding to use when reading the schema and data scripts. * @return the script encoding */ - public Charset getEncoding() { + public @Nullable Charset getEncoding() { return this.encoding; } @@ -121,7 +123,7 @@ public class DatabaseInitializationSettings { * Sets the encoding to use when reading the schema and data scripts. * @param encoding encoding to use when reading the schema and data scripts */ - public void setEncoding(Charset encoding) { + public void setEncoding(@Nullable Charset encoding) { this.encoding = encoding; } diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurer.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurer.java index bc20c24591e..9532e95286a 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurer.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurer.java @@ -26,6 +26,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.jspecify.annotations.Nullable; + import org.springframework.aot.AotDetector; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.NoSuchBeanDefinitionException; @@ -82,6 +84,7 @@ public class DatabaseInitializationDependencyConfigurer implements ImportBeanDef static class DependsOnDatabaseInitializationPostProcessor implements BeanFactoryPostProcessor, EnvironmentAware, Ordered { + @SuppressWarnings("NullAway.Init") private Environment environment; @Override @@ -118,7 +121,7 @@ public class DatabaseInitializationDependencyConfigurer implements ImportBeanDef } } - private String[] merge(String[] source, Set additional) { + private String @Nullable [] merge(String @Nullable [] source, @Nullable Set additional) { if (CollectionUtils.isEmpty(additional)) { return source; } diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/package-info.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/package-info.java index 2a070e52bcc..f53f7103489 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/package-info.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/package-info.java @@ -17,4 +17,7 @@ /** * Infrastructure for establishing database initialization bean dependencies. */ +@NullMarked package org.springframework.boot.sql.init.dependency; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/package-info.java b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/package-info.java index c6388b8bd63..9be5c69fb63 100644 --- a/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/package-info.java +++ b/module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/package-info.java @@ -17,4 +17,7 @@ /** * Support for initialization of an SQL database. */ +@NullMarked package org.springframework.boot.sql.init; + +import org.jspecify.annotations.NullMarked;