Author: genspring
Date: Wed Jun 29 09:46:59 2011
New Revision: 1141026

URL: http://svn.apache.org/viewvc?rev=1141026&view=rev
Log:
Adding more boundary value checking for range day of month.

Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/timer/EJBCronTriggerTest.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java?rev=1141026&r1=1141025&r2=1141026&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
 Wed Jun 29 09:46:59 2011
@@ -879,7 +879,8 @@ public class EJBCronTrigger extends Trig
                 } else if (startWeekdayExpr != null) {
                     beginValue = startWeekdayExpr.getWeekdayInMonth(calendar);
                 } else if (startDaysFromLastDayExpr != null) {
-                    beginValue = 
startDaysFromLastDayExpr.getNextValue(calendar);
+                    Integer next = 
startDaysFromLastDayExpr.getNextValue(calendar);
+                    beginValue = next == null ? calendar.get(field) : next;
                 } else {
                     beginValue = convertValue(startWeekDay);
                 }
@@ -889,7 +890,8 @@ public class EJBCronTrigger extends Trig
                 } else if (endWeekdayExpr != null) {
                     endValue = endWeekdayExpr.getWeekdayInMonth(calendar);
                 } else if (endDaysFromLastDayExpr != null) {
-                    endValue = endDaysFromLastDayExpr.getNextValue(calendar);
+                    Integer next = 
endDaysFromLastDayExpr.getNextValue(calendar);
+                    endValue = next == null ? calendar.get(field) : next;
                 } else {
                     endValue = convertValue(endWeekDay);
                 }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/timer/EJBCronTriggerTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/timer/EJBCronTriggerTest.java?rev=1141026&r1=1141025&r2=1141026&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/timer/EJBCronTriggerTest.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/timer/EJBCronTriggerTest.java
 Wed Jun 29 09:46:59 2011
@@ -329,10 +329,16 @@ public class EJBCronTriggerTest {
         assertEquals(new GregorianCalendar(2011, 4, 18, 23, 1, 59).getTime(), 
trigger.getFireTimeAfter(new GregorianCalendar(2011, 4, 18, 23, 0, 
0).getTime()));
         assertEquals(new GregorianCalendar(2011, 4, 27, 23, 1, 59).getTime(), 
trigger.getFireTimeAfter(new GregorianCalendar(2011, 4, 26, 23, 3, 
0).getTime()));
         assertEquals(new GregorianCalendar(2011, 5, 4, 23, 1, 59).getTime(), 
trigger.getFireTimeAfter(new GregorianCalendar(2011, 4, 28, 23, 3, 
0).getTime()));
-    }  
-       
+    }
+    
+    @Test(timeout = 5000)
+    public void testRangeDayOfMonthD() throws ParseException {
+        //current day is later than start day of range.
+        ScheduleExpression expr = new 
ScheduleExpression().dayOfMonth("-7-1").hour(23).minute(1).second(59).start(new 
Date(0));
+        EJBCronTrigger trigger = new EJBCronTrigger(expr);
+        assertEquals(new GregorianCalendar(2011, 5, 28, 23, 1, 59).getTime(), 
trigger.getFireTimeAfter(new GregorianCalendar(2011, 5, 28, 23, 0, 
0).getTime()));
+    }
        
-
        @Test(timeout = 500)
     public void testRangeDayOfWeekA() throws ParseException {
         ScheduleExpression expr = new 
ScheduleExpression().dayOfWeek("tue-fri").hour(23).minute(1).second(59).start(new
 Date(0));


Reply via email to