Skip to content

Commit 4734bef

Browse files
committed
Add nullability annotations to module/spring-boot-sql
See gh-46587
1 parent dc7f434 commit 4734bef

10 files changed

+62
-34
lines changed

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/OnDatabaseInitializationCondition.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import java.util.Locale;
2020

21+
import org.jspecify.annotations.Nullable;
22+
2123
import org.springframework.boot.autoconfigure.condition.ConditionMessage;
2224
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
2325
import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
@@ -68,7 +70,8 @@ private boolean match(DatabaseInitializationMode mode) {
6870
return !mode.equals(DatabaseInitializationMode.NEVER);
6971
}
7072

71-
private DatabaseInitializationMode getDatabaseInitializationMode(Environment environment, String propertyName) {
73+
private DatabaseInitializationMode getDatabaseInitializationMode(Environment environment,
74+
@Nullable String propertyName) {
7275
if (StringUtils.hasText(propertyName)) {
7376
String candidate = environment.getProperty(propertyName, "embedded").toUpperCase(Locale.ENGLISH);
7477
if (StringUtils.hasText(candidate)) {
@@ -78,7 +81,7 @@ private DatabaseInitializationMode getDatabaseInitializationMode(Environment env
7881
return DatabaseInitializationMode.EMBEDDED;
7982
}
8083

81-
private String getConfiguredProperty(Environment environment) {
84+
private @Nullable String getConfiguredProperty(Environment environment) {
8285
for (String propertyName : this.propertyNames) {
8386
if (environment.containsProperty(propertyName)) {
8487
return propertyName;

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SettingsCreator.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.util.ArrayList;
2020
import java.util.List;
2121

22+
import org.jspecify.annotations.Nullable;
23+
2224
import org.springframework.boot.sql.init.DatabaseInitializationSettings;
2325

2426
/**
@@ -44,7 +46,7 @@ static DatabaseInitializationSettings createFrom(SqlInitializationProperties pro
4446
return settings;
4547
}
4648

47-
private static List<String> scriptLocations(List<String> locations, String fallback, String platform) {
49+
private static List<String> scriptLocations(@Nullable List<String> locations, String fallback, String platform) {
4850
if (locations != null) {
4951
return locations;
5052
}

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationProperties.java

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.nio.charset.Charset;
2020
import java.util.List;
2121

22+
import org.jspecify.annotations.Nullable;
23+
2224
import org.springframework.boot.context.properties.ConfigurationProperties;
2325
import org.springframework.boot.sql.init.DatabaseInitializationMode;
2426

@@ -35,12 +37,12 @@ public class SqlInitializationProperties {
3537
/**
3638
* Locations of the schema (DDL) scripts to apply to the database.
3739
*/
38-
private List<String> schemaLocations;
40+
private @Nullable List<String> schemaLocations;
3941

4042
/**
4143
* Locations of the data (DML) scripts to apply to the database.
4244
*/
43-
private List<String> dataLocations;
45+
private @Nullable List<String> dataLocations;
4446

4547
/**
4648
* Platform to use in the default schema or data script locations,
@@ -52,13 +54,13 @@ public class SqlInitializationProperties {
5254
* Username of the database to use when applying initialization scripts (if
5355
* different).
5456
*/
55-
private String username;
57+
private @Nullable String username;
5658

5759
/**
5860
* Password of the database to use when applying initialization scripts (if
5961
* different).
6062
*/
61-
private String password;
63+
private @Nullable String password;
6264

6365
/**
6466
* Whether initialization should continue when an error occurs.
@@ -73,26 +75,26 @@ public class SqlInitializationProperties {
7375
/**
7476
* Encoding of the schema and data scripts.
7577
*/
76-
private Charset encoding;
78+
private @Nullable Charset encoding;
7779

7880
/**
7981
* Mode to apply when determining whether initialization should be performed.
8082
*/
8183
private DatabaseInitializationMode mode = DatabaseInitializationMode.EMBEDDED;
8284

83-
public List<String> getSchemaLocations() {
85+
public @Nullable List<String> getSchemaLocations() {
8486
return this.schemaLocations;
8587
}
8688

87-
public void setSchemaLocations(List<String> schemaLocations) {
89+
public void setSchemaLocations(@Nullable List<String> schemaLocations) {
8890
this.schemaLocations = schemaLocations;
8991
}
9092

91-
public List<String> getDataLocations() {
93+
public @Nullable List<String> getDataLocations() {
9294
return this.dataLocations;
9395
}
9496

95-
public void setDataLocations(List<String> dataLocations) {
97+
public void setDataLocations(@Nullable List<String> dataLocations) {
9698
this.dataLocations = dataLocations;
9799
}
98100

@@ -104,19 +106,19 @@ public void setPlatform(String platform) {
104106
this.platform = platform;
105107
}
106108

107-
public String getUsername() {
109+
public @Nullable String getUsername() {
108110
return this.username;
109111
}
110112

111-
public void setUsername(String username) {
113+
public void setUsername(@Nullable String username) {
112114
this.username = username;
113115
}
114116

115-
public String getPassword() {
117+
public @Nullable String getPassword() {
116118
return this.password;
117119
}
118120

119-
public void setPassword(String password) {
121+
public void setPassword(@Nullable String password) {
120122
this.password = password;
121123
}
122124

@@ -136,11 +138,11 @@ public void setSeparator(String separator) {
136138
this.separator = separator;
137139
}
138140

139-
public Charset getEncoding() {
141+
public @Nullable Charset getEncoding() {
140142
return this.encoding;
141143
}
142144

143-
public void setEncoding(Charset encoding) {
145+
public void setEncoding(@Nullable Charset encoding) {
144146
this.encoding = encoding;
145147
}
146148

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/SqlInitializationScriptsRuntimeHints.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.boot.sql.autoconfigure.init;
1818

19+
import org.jspecify.annotations.Nullable;
20+
1921
import org.springframework.aot.hint.RuntimeHints;
2022
import org.springframework.aot.hint.RuntimeHintsRegistrar;
2123

@@ -27,7 +29,7 @@
2729
class SqlInitializationScriptsRuntimeHints implements RuntimeHintsRegistrar {
2830

2931
@Override
30-
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
32+
public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader) {
3133
hints.resources().registerPattern("schema.sql").registerPattern("schema-*.sql");
3234
hints.resources().registerPattern("data.sql").registerPattern("data-*.sql");
3335
}

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/autoconfigure/init/package-info.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@
1717
/**
1818
* Auto-configuration for basic script-based initialization of an SQL database.
1919
*/
20+
@NullMarked
2021
package org.springframework.boot.sql.autoconfigure.init;
22+
23+
import org.jspecify.annotations.NullMarked;

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/AbstractScriptDatabaseInitializer.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import java.util.Iterator;
2525
import java.util.List;
2626

27+
import org.jspecify.annotations.Nullable;
28+
2729
import org.springframework.beans.factory.InitializingBean;
2830
import org.springframework.context.ResourceLoaderAware;
2931
import org.springframework.core.io.Resource;
@@ -45,6 +47,7 @@ public abstract class AbstractScriptDatabaseInitializer implements ResourceLoade
4547

4648
private final DatabaseInitializationSettings settings;
4749

50+
@SuppressWarnings("NullAway.Init")
4851
private volatile ResourceLoader resourceLoader;
4952

5053
/**
@@ -102,7 +105,8 @@ private boolean applyDataScripts(ScriptLocationResolver locationResolver) {
102105
return applyScripts(this.settings.getDataLocations(), "data", locationResolver);
103106
}
104107

105-
private boolean applyScripts(List<String> locations, String type, ScriptLocationResolver locationResolver) {
108+
private boolean applyScripts(@Nullable List<String> locations, String type,
109+
ScriptLocationResolver locationResolver) {
106110
List<Resource> scripts = getScripts(locations, type, locationResolver);
107111
if (!scripts.isEmpty() && isEnabled()) {
108112
runScripts(scripts);
@@ -111,7 +115,8 @@ private boolean applyScripts(List<String> locations, String type, ScriptLocation
111115
return false;
112116
}
113117

114-
private List<Resource> getScripts(List<String> locations, String type, ScriptLocationResolver locationResolver) {
118+
private List<Resource> getScripts(@Nullable List<String> locations, String type,
119+
ScriptLocationResolver locationResolver) {
115120
if (CollectionUtils.isEmpty(locations)) {
116121
return Collections.emptyList();
117122
}
@@ -192,7 +197,7 @@ public static class Scripts implements Iterable<Resource> {
192197

193198
private String separator = ";";
194199

195-
private Charset encoding;
200+
private @Nullable Charset encoding;
196201

197202
public Scripts(List<Resource> resources) {
198203
this.resources = resources;
@@ -221,12 +226,12 @@ public String getSeparator() {
221226
return this.separator;
222227
}
223228

224-
public Scripts encoding(Charset encoding) {
229+
public Scripts encoding(@Nullable Charset encoding) {
225230
this.encoding = encoding;
226231
return this;
227232
}
228233

229-
public Charset getEncoding() {
234+
public @Nullable Charset getEncoding() {
230235
return this.encoding;
231236
}
232237

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/DatabaseInitializationSettings.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.nio.charset.Charset;
2020
import java.util.List;
2121

22+
import org.jspecify.annotations.Nullable;
23+
2224
/**
2325
* Settings for initializing an SQL database.
2426
*
@@ -27,23 +29,23 @@
2729
*/
2830
public class DatabaseInitializationSettings {
2931

30-
private List<String> schemaLocations;
32+
private @Nullable List<String> schemaLocations;
3133

32-
private List<String> dataLocations;
34+
private @Nullable List<String> dataLocations;
3335

3436
private boolean continueOnError;
3537

3638
private String separator = ";";
3739

38-
private Charset encoding;
40+
private @Nullable Charset encoding;
3941

4042
private DatabaseInitializationMode mode = DatabaseInitializationMode.EMBEDDED;
4143

4244
/**
4345
* Returns the locations of the schema (DDL) scripts to apply to the database.
4446
* @return the locations of the schema scripts
4547
*/
46-
public List<String> getSchemaLocations() {
48+
public @Nullable List<String> getSchemaLocations() {
4749
return this.schemaLocations;
4850
}
4951

@@ -53,15 +55,15 @@ public List<String> getSchemaLocations() {
5355
* location can be made optional by prefixing it with {@code optional:}.
5456
* @param schemaLocations locations of the schema scripts
5557
*/
56-
public void setSchemaLocations(List<String> schemaLocations) {
58+
public void setSchemaLocations(@Nullable List<String> schemaLocations) {
5759
this.schemaLocations = schemaLocations;
5860
}
5961

6062
/**
6163
* Returns the locations of data (DML) scripts to apply to the database.
6264
* @return the locations of the data scripts
6365
*/
64-
public List<String> getDataLocations() {
66+
public @Nullable List<String> getDataLocations() {
6567
return this.dataLocations;
6668
}
6769

@@ -71,7 +73,7 @@ public List<String> getDataLocations() {
7173
* location can be made optional by prefixing it with {@code optional:}.
7274
* @param dataLocations locations of the data scripts
7375
*/
74-
public void setDataLocations(List<String> dataLocations) {
76+
public void setDataLocations(@Nullable List<String> dataLocations) {
7577
this.dataLocations = dataLocations;
7678
}
7779

@@ -113,15 +115,15 @@ public void setSeparator(String separator) {
113115
* Returns the encoding to use when reading the schema and data scripts.
114116
* @return the script encoding
115117
*/
116-
public Charset getEncoding() {
118+
public @Nullable Charset getEncoding() {
117119
return this.encoding;
118120
}
119121

120122
/**
121123
* Sets the encoding to use when reading the schema and data scripts.
122124
* @param encoding encoding to use when reading the schema and data scripts
123125
*/
124-
public void setEncoding(Charset encoding) {
126+
public void setEncoding(@Nullable Charset encoding) {
125127
this.encoding = encoding;
126128
}
127129

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import java.util.Map;
2727
import java.util.Set;
2828

29+
import org.jspecify.annotations.Nullable;
30+
2931
import org.springframework.aot.AotDetector;
3032
import org.springframework.beans.factory.BeanFactory;
3133
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
@@ -82,6 +84,7 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, B
8284
static class DependsOnDatabaseInitializationPostProcessor
8385
implements BeanFactoryPostProcessor, EnvironmentAware, Ordered {
8486

87+
@SuppressWarnings("NullAway.Init")
8588
private Environment environment;
8689

8790
@Override
@@ -118,7 +121,7 @@ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
118121
}
119122
}
120123

121-
private String[] merge(String[] source, Set<String> additional) {
124+
private String @Nullable [] merge(String @Nullable [] source, @Nullable Set<String> additional) {
122125
if (CollectionUtils.isEmpty(additional)) {
123126
return source;
124127
}

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/dependency/package-info.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@
1717
/**
1818
* Infrastructure for establishing database initialization bean dependencies.
1919
*/
20+
@NullMarked
2021
package org.springframework.boot.sql.init.dependency;
22+
23+
import org.jspecify.annotations.NullMarked;

module/spring-boot-sql/src/main/java/org/springframework/boot/sql/init/package-info.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@
1717
/**
1818
* Support for initialization of an SQL database.
1919
*/
20+
@NullMarked
2021
package org.springframework.boot.sql.init;
22+
23+
import org.jspecify.annotations.NullMarked;

0 commit comments

Comments
 (0)