Repository: activemq Updated Branches: refs/heads/master 638c1e44b -> 7738e862a
AMQ-5645 - Updated DayOfMonth cron to roll to next month properly. Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/7738e862 Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/7738e862 Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/7738e862 Branch: refs/heads/master Commit: 7738e862ae5337cb9d8d07092e57520e8368f912 Parents: 638c1e4 Author: Matt Warhaftig <[email protected]> Authored: Mon Mar 9 08:22:55 2015 -0400 Committer: Timothy Bish <[email protected]> Committed: Mon Mar 9 15:14:50 2015 -0400 ---------------------------------------------------------------------- .../activemq/broker/scheduler/CronParser.java | 2 +- .../broker/scheduler/CronParserTest.java | 46 ++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/7738e862/activemq-client/src/main/java/org/apache/activemq/broker/scheduler/CronParser.java ---------------------------------------------------------------------- diff --git a/activemq-client/src/main/java/org/apache/activemq/broker/scheduler/CronParser.java b/activemq-client/src/main/java/org/apache/activemq/broker/scheduler/CronParser.java index 4251466..04a1df7 100644 --- a/activemq-client/src/main/java/org/apache/activemq/broker/scheduler/CronParser.java +++ b/activemq-client/src/main/java/org/apache/activemq/broker/scheduler/CronParser.java @@ -324,7 +324,7 @@ public class CronParser { CronEntry hours = new CronEntry("Hours", tokens.get(HOURS), 0, 24); hours.currentWhen = calculateValues(hours); result.add(hours); - CronEntry dayOfMonth = new CronEntry("DayOfMonth", tokens.get(DAY_OF_MONTH), 1, 31); + CronEntry dayOfMonth = new CronEntry("DayOfMonth", tokens.get(DAY_OF_MONTH), 1, 32); dayOfMonth.currentWhen = calculateValues(dayOfMonth); result.add(dayOfMonth); CronEntry month = new CronEntry("Month", tokens.get(MONTH), 1, 12); http://git-wip-us.apache.org/repos/asf/activemq/blob/7738e862/activemq-client/src/test/java/org/apache/activemq/broker/scheduler/CronParserTest.java ---------------------------------------------------------------------- diff --git a/activemq-client/src/test/java/org/apache/activemq/broker/scheduler/CronParserTest.java b/activemq-client/src/test/java/org/apache/activemq/broker/scheduler/CronParserTest.java index 395a87d..2733602 100644 --- a/activemq-client/src/test/java/org/apache/activemq/broker/scheduler/CronParserTest.java +++ b/activemq-client/src/test/java/org/apache/activemq/broker/scheduler/CronParserTest.java @@ -188,6 +188,52 @@ public class CronParserTest { } @Test + public void testgetStartNextMonth() throws MessageFormatException { + + // using an absolute date so that result will be absolute - Wednesday 15 Dec 2010 + Calendar current = Calendar.getInstance(); + current.set(2010, Calendar.DECEMBER, 15, 9, 15, 30); + LOG.debug("start:" + current.getTime()); + + String test = "* * 1 * *"; + long next = CronParser.getNextScheduledTime(test, current.getTimeInMillis()); + + Calendar result = Calendar.getInstance(); + result.setTimeInMillis(next); + LOG.debug("next:" + result.getTime()); + + assertEquals(0,result.get(Calendar.SECOND)); + assertEquals(0,result.get(Calendar.MINUTE)); + assertEquals(0,result.get(Calendar.HOUR_OF_DAY)); + assertEquals(1,result.get(Calendar.DAY_OF_MONTH)); + assertEquals(Calendar.JANUARY,result.get(Calendar.MONTH)); + assertEquals(2011,result.get(Calendar.YEAR)); + } + + @Test + public void testgetNextStartCurrMonth() throws MessageFormatException { + + // using an absolute date so that result will be absolute - Wednesday 15 Dec 2010 + Calendar current = Calendar.getInstance(); + current.set(2010, Calendar.DECEMBER, 15, 9, 15, 30); + LOG.debug("start:" + current.getTime()); + + String test = "* * 1 12 *"; + long next = CronParser.getNextScheduledTime(test, current.getTimeInMillis()); + + Calendar result = Calendar.getInstance(); + result.setTimeInMillis(next); + LOG.debug("next:" + result.getTime()); + + assertEquals(0,result.get(Calendar.SECOND)); + assertEquals(0,result.get(Calendar.MINUTE)); + assertEquals(0,result.get(Calendar.HOUR_OF_DAY)); + assertEquals(1,result.get(Calendar.DAY_OF_MONTH)); + assertEquals(Calendar.DECEMBER,result.get(Calendar.MONTH)); + assertEquals(2011,result.get(Calendar.YEAR)); + } + + @Test public void testgetNextTimeDays() throws MessageFormatException { // using an absolute date so that result will be absolute - Monday 15 Nov 2010
