From 04b654d99f2486671e74ceddee0b76fc36e0f501 Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Fri, 21 Aug 2026 13:21:19 -0700 Subject: [PATCH] Update to NullAway 0.14.0 and fix new warnings Signed-off-by: Manu Sridharan --- gradle/spring-module.gradle | 4 ++++ .../scheduling/quartz/SimpleThreadPoolTaskExecutor.java | 3 ++- .../scheduling/concurrent/ConcurrentTaskExecutor.java | 4 ++-- .../scheduling/concurrent/ConcurrentTaskScheduler.java | 2 +- .../scheduling/concurrent/SimpleAsyncTaskScheduler.java | 2 +- .../scheduling/concurrent/ThreadPoolTaskExecutor.java | 2 +- .../scheduling/concurrent/ThreadPoolTaskScheduler.java | 2 +- .../core/convert/converter/ConvertingComparator.java | 1 + .../core/convert/support/CharacterToNumberFactory.java | 2 +- .../core/convert/support/NumberToNumberConverterFactory.java | 2 +- .../springframework/core/task/SimpleAsyncTaskExecutor.java | 2 +- .../core/task/support/TaskExecutorAdapter.java | 2 +- .../org/springframework/util/LinkedCaseInsensitiveMap.java | 2 +- .../springframework/util/comparator/InstanceComparator.java | 2 +- .../main/java/org/springframework/jdbc/core/JdbcTemplate.java | 2 +- .../jdbc/core/namedparam/NamedParameterJdbcTemplate.java | 2 +- .../test/web/reactive/server/DefaultWebTestClient.java | 4 ++-- 17 files changed, 23 insertions(+), 17 deletions(-) diff --git a/gradle/spring-module.gradle b/gradle/spring-module.gradle index 1a4ff436aa61..95ba750730f6 100644 --- a/gradle/spring-module.gradle +++ b/gradle/spring-module.gradle @@ -117,6 +117,10 @@ publishing { } } +nullability { + nullAwayVersion = "0.14.0" +} + // Disable publication of test fixture artifacts. components.java.withVariantsFromConfiguration(configurations.testFixturesApiElements) { skip() } components.java.withVariantsFromConfiguration(configurations.testFixturesRuntimeElements) { skip() } diff --git a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleThreadPoolTaskExecutor.java b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleThreadPoolTaskExecutor.java index c94b70ee7961..522c6b7a60a8 100644 --- a/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleThreadPoolTaskExecutor.java +++ b/spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleThreadPoolTaskExecutor.java @@ -20,6 +20,7 @@ import java.util.concurrent.Future; import java.util.concurrent.FutureTask; +import org.jspecify.annotations.Nullable; import org.quartz.SchedulerConfigException; import org.quartz.simpl.SimpleThreadPool; @@ -83,7 +84,7 @@ public Future submit(Runnable task) { } @Override - public Future submit(Callable task) { + public Future submit(Callable task) { FutureTask future = new FutureTask<>(task); execute(future); return future; diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskExecutor.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskExecutor.java index 7b15ed5e872e..19c28bd3fa83 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskExecutor.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskExecutor.java @@ -165,7 +165,7 @@ public Future submit(Runnable task) { } @Override - public Future submit(Callable task) { + public Future submit(Callable task) { return this.adaptedExecutor.submit(task); } @@ -208,7 +208,7 @@ public Future submit(Runnable task) { } @Override - public Future submit(Callable task) { + public Future submit(Callable task) { return super.submit(ManagedTaskBuilder.buildManagedTask(task, task.toString())); } } diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskScheduler.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskScheduler.java index da0202e316a4..8dc4215d62c3 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskScheduler.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ConcurrentTaskScheduler.java @@ -211,7 +211,7 @@ public Future submit(Runnable task) { } @Override - public Future submit(Callable task) { + public Future submit(Callable task) { return super.submit(new DelegatingErrorHandlingCallable<>(task, this.errorHandler)); } diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/SimpleAsyncTaskScheduler.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/SimpleAsyncTaskScheduler.java index 7e050ef212eb..9e5062a04ba3 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/SimpleAsyncTaskScheduler.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/SimpleAsyncTaskScheduler.java @@ -262,7 +262,7 @@ public Future submit(Runnable task) { } @Override - public Future submit(Callable task) { + public Future submit(Callable task) { return super.submit(new DelegatingErrorHandlingCallable<>(task, this.errorHandler)); } diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java index b798f3fbaa10..9af8a4e11a67 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java @@ -401,7 +401,7 @@ public Future submit(Runnable task) { } @Override - public Future submit(Callable task) { + public Future submit(Callable task) { ExecutorService executor = getThreadPoolExecutor(); try { return executor.submit(task); diff --git a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java index ad06bf052a69..9e9c8d075b22 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java +++ b/spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskScheduler.java @@ -336,7 +336,7 @@ public Future submit(Runnable task) { } @Override - public Future submit(Callable task) { + public Future submit(Callable task) { ExecutorService executor = getScheduledExecutor(); try { return executor.submit(new DelegatingErrorHandlingCallable<>(task, this.errorHandler)); diff --git a/spring-core/src/main/java/org/springframework/core/convert/converter/ConvertingComparator.java b/spring-core/src/main/java/org/springframework/core/convert/converter/ConvertingComparator.java index dcb489d5f611..36efadfec3e5 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/converter/ConvertingComparator.java +++ b/spring-core/src/main/java/org/springframework/core/convert/converter/ConvertingComparator.java @@ -69,6 +69,7 @@ public ConvertingComparator(Comparator comparator, Converter converter) * @param conversionService the conversion service * @param targetType the target type */ + @SuppressWarnings("NullAway") // Retain support for comparators that handle a null conversion result public ConvertingComparator( Comparator comparator, ConversionService conversionService, Class targetType) { diff --git a/spring-core/src/main/java/org/springframework/core/convert/support/CharacterToNumberFactory.java b/spring-core/src/main/java/org/springframework/core/convert/support/CharacterToNumberFactory.java index ac88807a73cc..c6be0277b8be 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/support/CharacterToNumberFactory.java +++ b/spring-core/src/main/java/org/springframework/core/convert/support/CharacterToNumberFactory.java @@ -43,7 +43,7 @@ final class CharacterToNumberFactory implements ConverterFactory { @Override - public Converter getConverter(Class targetType) { + public Converter getConverter(Class targetType) { return new CharacterToNumber<>(targetType); } diff --git a/spring-core/src/main/java/org/springframework/core/convert/support/NumberToNumberConverterFactory.java b/spring-core/src/main/java/org/springframework/core/convert/support/NumberToNumberConverterFactory.java index abf200874e9e..d8c9b230e441 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/support/NumberToNumberConverterFactory.java +++ b/spring-core/src/main/java/org/springframework/core/convert/support/NumberToNumberConverterFactory.java @@ -45,7 +45,7 @@ final class NumberToNumberConverterFactory implements ConverterFactory, ConditionalConverter { @Override - public Converter getConverter(Class targetType) { + public Converter getConverter(Class targetType) { return new NumberToNumber<>(targetType); } diff --git a/spring-core/src/main/java/org/springframework/core/task/SimpleAsyncTaskExecutor.java b/spring-core/src/main/java/org/springframework/core/task/SimpleAsyncTaskExecutor.java index d09482040e57..e0ae6a917a63 100644 --- a/spring-core/src/main/java/org/springframework/core/task/SimpleAsyncTaskExecutor.java +++ b/spring-core/src/main/java/org/springframework/core/task/SimpleAsyncTaskExecutor.java @@ -345,7 +345,7 @@ public Future submit(Runnable task) { @SuppressWarnings("deprecation") @Override - public Future submit(Callable task) { + public Future submit(Callable task) { FutureTask future = new FutureTask<>(task); execute(future, TIMEOUT_INDEFINITE); return future; diff --git a/spring-core/src/main/java/org/springframework/core/task/support/TaskExecutorAdapter.java b/spring-core/src/main/java/org/springframework/core/task/support/TaskExecutorAdapter.java index b9a81cecf6a8..38be515d885c 100644 --- a/spring-core/src/main/java/org/springframework/core/task/support/TaskExecutorAdapter.java +++ b/spring-core/src/main/java/org/springframework/core/task/support/TaskExecutorAdapter.java @@ -113,7 +113,7 @@ public Future submit(Runnable task) { } @Override - public Future submit(Callable task) { + public Future submit(Callable task) { try { if (this.taskDecorator == null && this.concurrentExecutor instanceof ExecutorService executorService) { diff --git a/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java b/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java index 438acd1d27df..b221ca9a2654 100644 --- a/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java +++ b/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java @@ -48,7 +48,7 @@ * @since 3.0 * @param the value type */ -public class LinkedCaseInsensitiveMap implements Map, Serializable, Cloneable { +public class LinkedCaseInsensitiveMap implements Map, Serializable, Cloneable { @Serial private static final long serialVersionUID = -1797561627545787622L; diff --git a/spring-core/src/main/java/org/springframework/util/comparator/InstanceComparator.java b/spring-core/src/main/java/org/springframework/util/comparator/InstanceComparator.java index b8e38381c49e..1657d7cd1ba7 100644 --- a/spring-core/src/main/java/org/springframework/util/comparator/InstanceComparator.java +++ b/spring-core/src/main/java/org/springframework/util/comparator/InstanceComparator.java @@ -37,7 +37,7 @@ * @param the type of objects that may be compared by this comparator * @see Comparator#thenComparing(Comparator) */ -public class InstanceComparator implements Comparator { +public class InstanceComparator implements Comparator { private final Class[] instanceOrder; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java index 0eec243d0614..cd3c04cfcd28 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java @@ -502,7 +502,7 @@ public void query(String sql, RowCallbackHandler rch) throws DataAccessException } @Override - public Stream queryForStream(String sql, RowMapper rowMapper) throws DataAccessException { + public Stream queryForStream(String sql, RowMapper rowMapper) throws DataAccessException { class StreamStatementCallback implements StatementCallback>, SqlProvider { @Override public Stream doInStatement(Statement stmt) throws SQLException { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java index db76fa820dea..68ac7af95f69 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java @@ -232,7 +232,7 @@ public void query(String sql, RowCallbackHandler rch) throws DataAccessException } @Override - public List query(String sql, RowMapper rowMapper) throws DataAccessException { + public List query(String sql, RowMapper rowMapper) throws DataAccessException { return query(sql, EmptySqlParameterSource.INSTANCE, rowMapper); } diff --git a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java index 5109efe2ef57..af645f0a8b8f 100644 --- a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java +++ b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java @@ -487,12 +487,12 @@ public CookieAssertions expectCookie() { } @Override - public ListBodySpec expectBodyList(Class elementType) { + public ListBodySpec expectBodyList(Class elementType) { return getListBodySpec(this.response.bodyToFlux(elementType)); } @Override - public ListBodySpec expectBodyList(ParameterizedTypeReference elementType) { + public ListBodySpec expectBodyList(ParameterizedTypeReference elementType) { Flux flux = this.response.bodyToFlux(elementType); return getListBodySpec(flux); }