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

Reply via email to