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));