diff --git a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java index 49e64d91af2..c037e198279 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/ExpressionEvaluatingRoutingSlipRouteStrategy.java @@ -16,6 +16,8 @@ package org.springframework.integration.routingslip; +import org.jspecify.annotations.Nullable; + import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; @@ -69,8 +71,10 @@ public class ExpressionEvaluatingRoutingSlipRouteStrategy private final Expression expression; + @SuppressWarnings("NullAway.Init") private EvaluationContext evaluationContext; + @SuppressWarnings("NullAway.Init") private BeanFactory beanFactory; public ExpressionEvaluatingRoutingSlipRouteStrategy(String expression) { @@ -98,7 +102,7 @@ public void afterPropertiesSet() { } @Override - public Object getNextPath(Message requestMessage, Object reply) { + public @Nullable Object getNextPath(Message requestMessage, Object reply) { return this.expression.getValue(this.evaluationContext, new RequestAndReply(requestMessage, reply)); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/RoutingSlipRouteStrategy.java b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/RoutingSlipRouteStrategy.java index 9de11f5bf12..ddc5cc4d1c3 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/RoutingSlipRouteStrategy.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/RoutingSlipRouteStrategy.java @@ -16,6 +16,8 @@ package org.springframework.integration.routingslip; +import org.jspecify.annotations.Nullable; + import org.springframework.messaging.Message; /** @@ -37,6 +39,7 @@ public interface RoutingSlipRouteStrategy { * object, a {@link Message} or a {@code AbstractIntegrationMessageBuilder}. * @return a channel name or another {@link RoutingSlipRouteStrategy}. */ + @Nullable Object getNextPath(Message requestMessage, Object reply); } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/package-info.java b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/package-info.java index 13ec34ed512..9295829adcc 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/routingslip/package-info.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/routingslip/package-info.java @@ -1,4 +1,5 @@ /** * Provides classes supporting the RoutingSlip pattern. */ +@org.jspecify.annotations.NullMarked package org.springframework.integration.routingslip; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/scattergather/ScatterGatherHandler.java b/spring-integration-core/src/main/java/org/springframework/integration/scattergather/ScatterGatherHandler.java index 883a98ec9bb..f3eecb2eb43 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/scattergather/ScatterGatherHandler.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/scattergather/ScatterGatherHandler.java @@ -16,6 +16,8 @@ package org.springframework.integration.scattergather; +import org.jspecify.annotations.Nullable; + import org.springframework.aop.support.AopUtils; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanInitializationException; @@ -63,13 +65,15 @@ public class ScatterGatherHandler extends AbstractReplyProducingMessageHandler i private final MessageHandler gatherer; + @SuppressWarnings("NullAway.Init") private MessageChannel gatherChannel; private String errorChannelName = IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME; + @SuppressWarnings("NullAway.Init") private Long gatherTimeout; - private AbstractEndpoint gatherEndpoint; + private @Nullable AbstractEndpoint gatherEndpoint; public ScatterGatherHandler(MessageHandler scatterer, MessageHandler gatherer) { this(new FixedSubscriberChannel(scatterer), gatherer); @@ -185,7 +189,7 @@ private Message enhanceScatterReplyMessage(Message message) { } @Override - protected Object handleRequestMessage(Message requestMessage) { + protected @Nullable Object handleRequestMessage(Message requestMessage) { MessageHeaders requestMessageHeaders = requestMessage.getHeaders(); PollableChannel gatherResultChannel = new QueueChannel(); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/scattergather/package-info.java b/spring-integration-core/src/main/java/org/springframework/integration/scattergather/package-info.java index 1067b8cae4b..e79bd987b6a 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/scattergather/package-info.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/scattergather/package-info.java @@ -1,4 +1,5 @@ /** * Provides classes supporting the Scatter-Gather pattern. */ +@org.jspecify.annotations.NullMarked package org.springframework.integration.scattergather; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollSkipAdvice.java b/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollSkipAdvice.java index be17d7444a0..015771d96d1 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollSkipAdvice.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollSkipAdvice.java @@ -20,6 +20,7 @@ import org.aopalliance.intercept.MethodInvocation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; /** * An advice that can be added to a poller's advice chain that determines @@ -47,7 +48,7 @@ public PollSkipAdvice(PollSkipStrategy strategy) { } @Override - public Object invoke(MethodInvocation invocation) throws Throwable { + public @Nullable Object invoke(MethodInvocation invocation) throws Throwable { if ("call".equals(invocation.getMethod().getName()) && this.pollSkipStrategy.skipPoll()) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Skipping poll because " @@ -56,9 +57,7 @@ public Object invoke(MethodInvocation invocation) throws Throwable { } return null; } - else { - return invocation.proceed(); - } + return invocation.proceed(); } private static final class DefaultPollSkipStrategy implements PollSkipStrategy { diff --git a/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollerMetadata.java b/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollerMetadata.java index bcbc49c8131..bd263013c5e 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollerMetadata.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/scheduling/PollerMetadata.java @@ -20,6 +20,7 @@ import java.util.concurrent.Executor; import org.aopalliance.aop.Advice; +import org.jspecify.annotations.Nullable; import org.springframework.beans.factory.BeanFactory; import org.springframework.integration.transaction.TransactionSynchronizationFactory; @@ -56,19 +57,19 @@ public class PollerMetadata { */ public static final String DEFAULT_POLLER = DEFAULT_POLLER_METADATA_BEAN_NAME; - private Trigger trigger; + private @Nullable Trigger trigger; private long maxMessagesPerPoll = MAX_MESSAGES_UNBOUNDED; private long receiveTimeout = DEFAULT_RECEIVE_TIMEOUT; - private ErrorHandler errorHandler; + private @Nullable ErrorHandler errorHandler; - private List adviceChain; + private @Nullable List adviceChain; - private Executor taskExecutor; + private @Nullable Executor taskExecutor; - private TransactionSynchronizationFactory transactionSynchronizationFactory; + private @Nullable TransactionSynchronizationFactory transactionSynchronizationFactory; public void setTransactionSynchronizationFactory( TransactionSynchronizationFactory transactionSynchronizationFactory) { @@ -76,19 +77,19 @@ public void setTransactionSynchronizationFactory( this.transactionSynchronizationFactory = transactionSynchronizationFactory; } - public TransactionSynchronizationFactory getTransactionSynchronizationFactory() { + public @Nullable TransactionSynchronizationFactory getTransactionSynchronizationFactory() { return this.transactionSynchronizationFactory; } - public void setTrigger(Trigger trigger) { + public void setTrigger(@Nullable Trigger trigger) { this.trigger = trigger; } - public Trigger getTrigger() { + public @Nullable Trigger getTrigger() { return this.trigger; } - public ErrorHandler getErrorHandler() { + public @Nullable ErrorHandler getErrorHandler() { return this.errorHandler; } @@ -124,7 +125,7 @@ public void setAdviceChain(List adviceChain) { this.adviceChain = adviceChain; } - public List getAdviceChain() { + public @Nullable List getAdviceChain() { return this.adviceChain; } @@ -132,7 +133,7 @@ public void setTaskExecutor(Executor taskExecutor) { this.taskExecutor = taskExecutor; } - public Executor getTaskExecutor() { + public @Nullable Executor getTaskExecutor() { return this.taskExecutor; } @@ -141,7 +142,7 @@ public Executor getTaskExecutor() { * @param beanFactory BeanFactory for lookup, must not be null. * @return The poller metadata. */ - public static PollerMetadata getDefaultPollerMetadata(BeanFactory beanFactory) { + public static @Nullable PollerMetadata getDefaultPollerMetadata(BeanFactory beanFactory) { Assert.notNull(beanFactory, "BeanFactory must not be null"); if (!beanFactory.containsBean(DEFAULT_POLLER_METADATA_BEAN_NAME)) { return null; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/scheduling/package-info.java b/spring-integration-core/src/main/java/org/springframework/integration/scheduling/package-info.java index 6e17dbaee87..1f1568e1473 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/scheduling/package-info.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/scheduling/package-info.java @@ -1,4 +1,5 @@ /** * Provides classes related to task scheduling. */ +@org.jspecify.annotations.NullMarked package org.springframework.integration.scheduling; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/selector/MetadataStoreSelector.java b/spring-integration-core/src/main/java/org/springframework/integration/selector/MetadataStoreSelector.java index 9b825380738..00122c9db1b 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/selector/MetadataStoreSelector.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/selector/MetadataStoreSelector.java @@ -65,16 +65,15 @@ public class MetadataStoreSelector implements MessageSelector { private final MessageProcessor keyStrategy; - private final MessageProcessor valueStrategy; + private final @Nullable MessageProcessor valueStrategy; - @Nullable - private BiPredicate compareValues; + private @Nullable BiPredicate compareValues; public MetadataStoreSelector(MessageProcessor keyStrategy) { this(keyStrategy, (MessageProcessor) null); } - public MetadataStoreSelector(MessageProcessor keyStrategy, MessageProcessor valueStrategy) { + public MetadataStoreSelector(MessageProcessor keyStrategy, @Nullable MessageProcessor valueStrategy) { this(keyStrategy, valueStrategy, new SimpleMetadataStore()); } @@ -82,7 +81,7 @@ public MetadataStoreSelector(MessageProcessor keyStrategy, ConcurrentMet this(keyStrategy, null, metadataStore); } - public MetadataStoreSelector(MessageProcessor keyStrategy, MessageProcessor valueStrategy, + public MetadataStoreSelector(MessageProcessor keyStrategy, @Nullable MessageProcessor valueStrategy, ConcurrentMetadataStore metadataStore) { Assert.notNull(keyStrategy, "'keyStrategy' must not be null"); Assert.notNull(metadataStore, "'metadataStore' must not be null"); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/selector/package-info.java b/spring-integration-core/src/main/java/org/springframework/integration/selector/package-info.java index ada7381ff30..9cab4d64ddc 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/selector/package-info.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/selector/package-info.java @@ -1,4 +1,5 @@ /** * Provides classes related to message selection. */ +@org.jspecify.annotations.NullMarked package org.springframework.integration.selector;