From 51ec3ce3dfb047a5e5bb774b801668912dbb0e01 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 1 Aug 2025 14:57:10 +0200 Subject: [PATCH] Add nullability annotations to module/spring-boot-liquibase See gh-46587 --- ...uibaseChangelogMissingFailureAnalyzer.java | 12 +- .../LiquibaseAutoConfiguration.java | 19 ++-- .../LiquibaseConnectionDetails.java | 10 +- .../autoconfigure/LiquibaseProperties.java | 103 +++++++++--------- .../autoconfigure/endpoint/package-info.java | 3 + .../liquibase/autoconfigure/package-info.java | 3 + ...tingLiquibaseConnectionDetailsFactory.java | 6 +- .../docker/compose/package-info.java | 3 + .../liquibase/endpoint/LiquibaseEndpoint.java | 12 +- .../boot/liquibase/endpoint/package-info.java | 3 + .../boot/liquibase/package-info.java | 3 + .../testcontainers/package-info.java | 3 + 12 files changed, 104 insertions(+), 76 deletions(-) diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/LiquibaseChangelogMissingFailureAnalyzer.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/LiquibaseChangelogMissingFailureAnalyzer.java index 3367b0b054e..afc867b34b4 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/LiquibaseChangelogMissingFailureAnalyzer.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/LiquibaseChangelogMissingFailureAnalyzer.java @@ -17,6 +17,7 @@ package org.springframework.boot.liquibase; import liquibase.exception.ChangeLogParseException; +import org.jspecify.annotations.Nullable; import org.springframework.boot.diagnostics.AbstractFailureAnalyzer; import org.springframework.boot.diagnostics.FailureAnalysis; @@ -32,17 +33,18 @@ class LiquibaseChangelogMissingFailureAnalyzer extends AbstractFailureAnalyzer contexts; + private @Nullable List contexts; /** * Default database schema. */ - private String defaultSchema; + private @Nullable String defaultSchema; /** * Schema to use for Liquibase objects. */ - private String liquibaseSchema; + private @Nullable String liquibaseSchema; /** * Tablespace to use for Liquibase objects. */ - private String liquibaseTablespace; + private @Nullable String liquibaseTablespace; /** * Name of table to use for tracking change history. @@ -94,38 +95,38 @@ public class LiquibaseProperties { /** * Login user of the database to migrate. */ - private String user; + private @Nullable String user; /** * Login password of the database to migrate. */ - private String password; + private @Nullable String password; /** * Fully qualified name of the JDBC driver. Auto-detected based on the URL by default. */ - private String driverClassName; + private @Nullable String driverClassName; /** * JDBC URL of the database to migrate. If not set, the primary configured data source * is used. */ - private String url; + private @Nullable String url; /** * List of runtime labels to use. */ - private List labelFilter; + private @Nullable List labelFilter; /** * Change log parameters. */ - private Map parameters; + private @Nullable Map parameters; /** * File to which rollback SQL is written when an update is performed. */ - private File rollbackFile; + private @Nullable File rollbackFile; /** * Whether rollback should be tested before update is performed. @@ -137,32 +138,32 @@ public class LiquibaseProperties { * "rollbackFile" to generate a rollback script for all existing changes associated * with that tag. */ - private String tag; + private @Nullable String tag; /** * Whether to print a summary of the update operation. */ - private ShowSummary showSummary; + private @Nullable ShowSummary showSummary; /** * Where to print a summary of the update operation. */ - private ShowSummaryOutput showSummaryOutput; + private @Nullable ShowSummaryOutput showSummaryOutput; /** * Which UIService to use. */ - private UiService uiService; + private @Nullable UiService uiService; /** * Whether to send product usage data and analytics to Liquibase. */ - private Boolean analyticsEnabled; + private @Nullable Boolean analyticsEnabled; /** * Liquibase Pro license key. */ - private String licenseKey; + private @Nullable String licenseKey; public String getChangeLog() { return this.changeLog; @@ -173,35 +174,35 @@ public class LiquibaseProperties { this.changeLog = changeLog; } - public List getContexts() { + public @Nullable List getContexts() { return this.contexts; } - public void setContexts(List contexts) { + public void setContexts(@Nullable List contexts) { this.contexts = contexts; } - public String getDefaultSchema() { + public @Nullable String getDefaultSchema() { return this.defaultSchema; } - public void setDefaultSchema(String defaultSchema) { + public void setDefaultSchema(@Nullable String defaultSchema) { this.defaultSchema = defaultSchema; } - public String getLiquibaseSchema() { + public @Nullable String getLiquibaseSchema() { return this.liquibaseSchema; } - public void setLiquibaseSchema(String liquibaseSchema) { + public void setLiquibaseSchema(@Nullable String liquibaseSchema) { this.liquibaseSchema = liquibaseSchema; } - public String getLiquibaseTablespace() { + public @Nullable String getLiquibaseTablespace() { return this.liquibaseTablespace; } - public void setLiquibaseTablespace(String liquibaseTablespace) { + public void setLiquibaseTablespace(@Nullable String liquibaseTablespace) { this.liquibaseTablespace = liquibaseTablespace; } @@ -245,59 +246,59 @@ public class LiquibaseProperties { this.enabled = enabled; } - 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; } - public String getDriverClassName() { + public @Nullable String getDriverClassName() { return this.driverClassName; } - public void setDriverClassName(String driverClassName) { + public void setDriverClassName(@Nullable String driverClassName) { this.driverClassName = driverClassName; } - public String getUrl() { + public @Nullable String getUrl() { return this.url; } - public void setUrl(String url) { + public void setUrl(@Nullable String url) { this.url = url; } - public List getLabelFilter() { + public @Nullable List getLabelFilter() { return this.labelFilter; } - public void setLabelFilter(List labelFilter) { + public void setLabelFilter(@Nullable List labelFilter) { this.labelFilter = labelFilter; } - public Map getParameters() { + public @Nullable Map getParameters() { return this.parameters; } - public void setParameters(Map parameters) { + public void setParameters(@Nullable Map parameters) { this.parameters = parameters; } - public File getRollbackFile() { + public @Nullable File getRollbackFile() { return this.rollbackFile; } - public void setRollbackFile(File rollbackFile) { + public void setRollbackFile(@Nullable File rollbackFile) { this.rollbackFile = rollbackFile; } @@ -309,51 +310,51 @@ public class LiquibaseProperties { this.testRollbackOnUpdate = testRollbackOnUpdate; } - public String getTag() { + public @Nullable String getTag() { return this.tag; } - public void setTag(String tag) { + public void setTag(@Nullable String tag) { this.tag = tag; } - public ShowSummary getShowSummary() { + public @Nullable ShowSummary getShowSummary() { return this.showSummary; } - public void setShowSummary(ShowSummary showSummary) { + public void setShowSummary(@Nullable ShowSummary showSummary) { this.showSummary = showSummary; } - public ShowSummaryOutput getShowSummaryOutput() { + public @Nullable ShowSummaryOutput getShowSummaryOutput() { return this.showSummaryOutput; } - public void setShowSummaryOutput(ShowSummaryOutput showSummaryOutput) { + public void setShowSummaryOutput(@Nullable ShowSummaryOutput showSummaryOutput) { this.showSummaryOutput = showSummaryOutput; } - public UiService getUiService() { + public @Nullable UiService getUiService() { return this.uiService; } - public void setUiService(UiService uiService) { + public void setUiService(@Nullable UiService uiService) { this.uiService = uiService; } - public Boolean getAnalyticsEnabled() { + public @Nullable Boolean getAnalyticsEnabled() { return this.analyticsEnabled; } - public void setAnalyticsEnabled(Boolean analyticsEnabled) { + public void setAnalyticsEnabled(@Nullable Boolean analyticsEnabled) { this.analyticsEnabled = analyticsEnabled; } - public String getLicenseKey() { + public @Nullable String getLicenseKey() { return this.licenseKey; } - public void setLicenseKey(String licenseKey) { + public void setLicenseKey(@Nullable String licenseKey) { this.licenseKey = licenseKey; } diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/endpoint/package-info.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/endpoint/package-info.java index 02c03c333ef..31161af0676 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/endpoint/package-info.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/endpoint/package-info.java @@ -17,4 +17,7 @@ /** * Auto-configuration for Liquibase endpoint. */ +@NullMarked package org.springframework.boot.liquibase.autoconfigure.endpoint; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/package-info.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/package-info.java index 11e1da2a4a7..548c8a62853 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/package-info.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/autoconfigure/package-info.java @@ -17,4 +17,7 @@ /** * Auto-configuration for Liquibase. */ +@NullMarked package org.springframework.boot.liquibase.autoconfigure; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/docker/compose/JdbcAdaptingLiquibaseConnectionDetailsFactory.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/docker/compose/JdbcAdaptingLiquibaseConnectionDetailsFactory.java index 3bd6b99f040..df9d6842bf5 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/docker/compose/JdbcAdaptingLiquibaseConnectionDetailsFactory.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/docker/compose/JdbcAdaptingLiquibaseConnectionDetailsFactory.java @@ -16,6 +16,8 @@ package org.springframework.boot.liquibase.docker.compose; +import org.jspecify.annotations.Nullable; + import org.springframework.boot.autoconfigure.service.connection.ConnectionDetailsFactory; import org.springframework.boot.jdbc.autoconfigure.JdbcConnectionDetails; import org.springframework.boot.liquibase.autoconfigure.LiquibaseConnectionDetails; @@ -34,12 +36,12 @@ class JdbcAdaptingLiquibaseConnectionDetailsFactory return new LiquibaseConnectionDetails() { @Override - public String getUsername() { + public @Nullable String getUsername() { return input.getUsername(); } @Override - public String getPassword() { + public @Nullable String getPassword() { return input.getPassword(); } diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/docker/compose/package-info.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/docker/compose/package-info.java index 85c2ab397df..7ad64ee5dd7 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/docker/compose/package-info.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/docker/compose/package-info.java @@ -17,4 +17,7 @@ /** * Support for Docker Compose Liquibase service connections. */ +@NullMarked package org.springframework.boot.liquibase.docker.compose; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/LiquibaseEndpoint.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/LiquibaseEndpoint.java index 6469f592210..737c1461a20 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/LiquibaseEndpoint.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/LiquibaseEndpoint.java @@ -31,6 +31,7 @@ import liquibase.database.Database; import liquibase.database.DatabaseFactory; import liquibase.database.jvm.JdbcConnection; import liquibase.integration.spring.SpringLiquibase; +import org.jspecify.annotations.Nullable; import org.springframework.boot.actuate.endpoint.OperationResponseBody; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; @@ -128,9 +129,10 @@ public class LiquibaseEndpoint { private final Map liquibaseBeans; - private final String parentId; + private final @Nullable String parentId; - private ContextLiquibaseBeansDescriptor(Map liquibaseBeans, String parentId) { + private ContextLiquibaseBeansDescriptor(Map liquibaseBeans, + @Nullable String parentId) { this.liquibaseBeans = liquibaseBeans; this.parentId = parentId; } @@ -139,7 +141,7 @@ public class LiquibaseEndpoint { return this.liquibaseBeans; } - public String getParentId() { + public @Nullable String getParentId() { return this.parentId; } @@ -187,7 +189,7 @@ public class LiquibaseEndpoint { private final Set labels; - private final String checksum; + private final @Nullable String checksum; private final Integer orderExecuted; @@ -250,7 +252,7 @@ public class LiquibaseEndpoint { return this.labels; } - public String getChecksum() { + public @Nullable String getChecksum() { return this.checksum; } diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/package-info.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/package-info.java index 539140b4eba..5d9e03bd954 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/package-info.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/package-info.java @@ -17,4 +17,7 @@ /** * Actuator endpoint for Liquibase. */ +@NullMarked package org.springframework.boot.liquibase.endpoint; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/package-info.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/package-info.java index 3aa5878b28b..b5289ac8050 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/package-info.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/package-info.java @@ -17,4 +17,7 @@ /** * Custom support for Liquibase database migration. */ +@NullMarked package org.springframework.boot.liquibase; + +import org.jspecify.annotations.NullMarked; diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/testcontainers/package-info.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/testcontainers/package-info.java index ca59b899a86..38da273afbb 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/testcontainers/package-info.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/testcontainers/package-info.java @@ -17,4 +17,7 @@ /** * Support for testcontainers Liquibase service connections. */ +@NullMarked package org.springframework.boot.liquibase.testcontainers; + +import org.jspecify.annotations.NullMarked;