diff --git a/bundles/org.openhab.core.model.script/src/org/openhab/core/model/script/actions/Timer.java b/bundles/org.openhab.core.model.script/src/org/openhab/core/model/script/actions/Timer.java index 56d28015505..8bd94382266 100644 --- a/bundles/org.openhab.core.model.script/src/org/openhab/core/model/script/actions/Timer.java +++ b/bundles/org.openhab.core.model.script/src/org/openhab/core/model/script/actions/Timer.java @@ -44,6 +44,13 @@ public interface Timer { */ public boolean isActive(); + /** + * Determines whether the timer has been cancelled + * + * @return true, if the timer has been cancelled, false otherwise + */ + public boolean isCancelled(); + /** * Determines whether the scheduled code is currently executed. * diff --git a/bundles/org.openhab.core.model.script/src/org/openhab/core/model/script/internal/actions/TimerImpl.java b/bundles/org.openhab.core.model.script/src/org/openhab/core/model/script/internal/actions/TimerImpl.java index 89e83900ae5..874364f9516 100644 --- a/bundles/org.openhab.core.model.script/src/org/openhab/core/model/script/internal/actions/TimerImpl.java +++ b/bundles/org.openhab.core.model.script/src/org/openhab/core/model/script/internal/actions/TimerImpl.java @@ -36,8 +36,6 @@ public class TimerImpl implements Timer { private final SchedulerRunnable runnable; private ScheduledCompletableFuture future; - private boolean cancelled; - public TimerImpl(Scheduler scheduler, ZonedDateTime startTime, SchedulerRunnable runnable) { this.scheduler = scheduler; this.startTime = startTime; @@ -48,26 +46,29 @@ public TimerImpl(Scheduler scheduler, ZonedDateTime startTime, SchedulerRunnable @Override public boolean cancel() { - cancelled = true; return future.cancel(true); } @Override public boolean reschedule(ZonedDateTime newTime) { future.cancel(false); - cancelled = false; future = scheduler.schedule(runnable, newTime.toInstant()); return true; } @Override public ZonedDateTime getExecutionTime() { - return cancelled ? null : ZonedDateTime.now().plusNanos(future.getDelay(TimeUnit.NANOSECONDS)); + return isCancelled() ? null : ZonedDateTime.now().plusNanos(future.getDelay(TimeUnit.NANOSECONDS)); } @Override public boolean isActive() { - return !future.isDone() && !cancelled; + return !future.isDone() && !future.isCancelled(); + } + + @Override + public boolean isCancelled() { + return future.isCancelled(); } @Override