From e7d5b4b2100c7ae1ec20772cbdc996d959438f02 Mon Sep 17 00:00:00 2001 From: Daniel Beck Date: Thu, 30 Mar 2017 15:26:08 +0200 Subject: [PATCH] [FIX JENKINS-43228] Consider time zone for cron validation (cherry picked from commit 43d612f984572bfd764009b0a46184cb535f97ce) --- core/src/main/java/hudson/scheduler/CronTab.java | 13 +++++++++++++ .../src/main/java/hudson/scheduler/CronTabList.java | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/hudson/scheduler/CronTab.java b/core/src/main/java/hudson/scheduler/CronTab.java index 81fa5075c9..40381e2b71 100644 --- a/core/src/main/java/hudson/scheduler/CronTab.java +++ b/core/src/main/java/hudson/scheduler/CronTab.java @@ -532,4 +532,17 @@ public final class CronTab { return null; } } + + /** + * Returns the configured time zone, or null if none is configured + * + * @return the configured time zone, or null if none is configured + * @since TODO + */ + @CheckForNull public TimeZone getTimeZone() { + if (this.specTimezone == null) { + return null; + } + return TimeZone.getTimeZone(this.specTimezone); + } } diff --git a/core/src/main/java/hudson/scheduler/CronTabList.java b/core/src/main/java/hudson/scheduler/CronTabList.java index 3243dda38e..bb20834597 100644 --- a/core/src/main/java/hudson/scheduler/CronTabList.java +++ b/core/src/main/java/hudson/scheduler/CronTabList.java @@ -131,7 +131,7 @@ public final class CronTabList { public @CheckForNull Calendar previous() { Calendar nearest = null; for (CronTab tab : tabs) { - Calendar scheduled = tab.floor(Calendar.getInstance()); + Calendar scheduled = tab.floor(tab.getTimeZone() == null ? Calendar.getInstance() : Calendar.getInstance(tab.getTimeZone())); if (nearest == null || nearest.before(scheduled)) { nearest = scheduled; } @@ -143,7 +143,7 @@ public final class CronTabList { public @CheckForNull Calendar next() { Calendar nearest = null; for (CronTab tab : tabs) { - Calendar scheduled = tab.ceil(Calendar.getInstance()); + Calendar scheduled = tab.ceil(tab.getTimeZone() == null ? Calendar.getInstance() : Calendar.getInstance(tab.getTimeZone())); if (nearest == null || nearest.after(scheduled)) { nearest = scheduled; } -- GitLab