diff --git a/spring-integration-core/src/main/java/org/springframework/integration/aop/CompoundTriggerAdvice.java b/spring-integration-core/src/main/java/org/springframework/integration/aop/CompoundTriggerAdvice.java index c309f4ae149..f0e34d0a9bd 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/aop/CompoundTriggerAdvice.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/aop/CompoundTriggerAdvice.java @@ -39,8 +39,7 @@ * @since 4.3 * */ -public class CompoundTriggerAdvice - implements MessageSourceMutator, ReceiveMessageAdvice { +public class CompoundTriggerAdvice implements MessageSourceMutator { private final CompoundTrigger compoundTrigger; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/aop/SimpleActiveIdleReceiveMessageAdvice.java b/spring-integration-core/src/main/java/org/springframework/integration/aop/SimpleActiveIdleReceiveMessageAdvice.java index d2ee1810f31..5e7d8d49295 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/aop/SimpleActiveIdleReceiveMessageAdvice.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/aop/SimpleActiveIdleReceiveMessageAdvice.java @@ -25,7 +25,7 @@ import org.springframework.util.Assert; /** - A simple advice that polls at one rate when messages exist and another when + * A simple advice that polls at one rate when messages exist and another when * there are no messages. * * @author Gary Russell diff --git a/spring-integration-core/src/main/java/org/springframework/integration/util/CompoundTrigger.java b/spring-integration-core/src/main/java/org/springframework/integration/util/CompoundTrigger.java index 10f2599ce50..83c8e52635b 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/util/CompoundTrigger.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/util/CompoundTrigger.java @@ -23,7 +23,7 @@ import org.springframework.util.Assert; /** - * A {@link Trigger} that delegates the {@link #nextExecutionTime(TriggerContext)} + * A {@link Trigger} that delegates the {@link #nextExecution(TriggerContext)} * to one of two Triggers. If the {@link #setOverride(Trigger) override} trigger is * {@code null}, the primary trigger is invoked; otherwise the override trigger is * invoked. diff --git a/spring-integration-core/src/main/java/org/springframework/integration/util/DynamicPeriodicTrigger.java b/spring-integration-core/src/main/java/org/springframework/integration/util/DynamicPeriodicTrigger.java index 1c04fbbbbea..3e70590dfdc 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/util/DynamicPeriodicTrigger.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/util/DynamicPeriodicTrigger.java @@ -16,6 +16,7 @@ package org.springframework.integration.util; +import java.time.Clock; import java.time.Duration; import java.time.Instant; import java.util.Objects; @@ -130,14 +131,18 @@ public boolean isFixedRate() { @Override public Instant nextExecution(TriggerContext triggerContext) { Instant lastScheduled = triggerContext.lastScheduledExecution(); + Clock clock = triggerContext.getClock(); if (lastScheduled == null) { - return Instant.now().plus(this.initialDuration); + return clock.instant().plus(this.initialDuration); } else if (this.fixedRate) { return lastScheduled.plus(this.duration); } - return - triggerContext.lastCompletion().plus(this.duration); // NOSONAR never null here + Instant lastCompletion = triggerContext.lastCompletion(); + if (lastCompletion == null) { + return clock.instant().plus(this.duration); + } + return lastCompletion.plus(this.duration); } @Override