You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ge...@apache.org on 2011/05/26 05:35:55 UTC
svn commit: r1127768 - in /openejb/trunk/openejb3/container/openejb-core/src:
main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
test/java/org/apache/openejb/timer/EJBCronTriggerTest.java
Author: genspring
Date: Thu May 26 03:35:55 2011
New Revision: 1127768
URL: http://svn.apache.org/viewvc?rev=1127768&view=rev
Log:
OPENEJB-1542 Implement the Expression Rules defined in ejb3.1 spec 18.2.1.2
additional logic and unit cases.
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=1127768&r1=1127767&r2=1127768&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 Thu May 26 03:35:55 2011
@@ -467,10 +467,15 @@ public class EJBCronTrigger extends Trig
nextDayOfWeek = expressions[3].getNextValue(calendarDayOfWeek);
}
- if (value != null && nextDayOfWeek != null) {
+ if (nextDayOfWeek != null) {
calendarDayOfWeek.set(expressions[3].field, nextDayOfWeek);
int newDayOfMonth = calendarDayOfWeek.get(expressions[2].field);
- value = Math.min(value, newDayOfMonth);
+
+ if (value == null) {
+ value = newDayOfMonth;
+ } else {
+ value = Math.min(value, newDayOfMonth);
+ }
//Next valid DayOfWeek might exist in next month.
calendar.set(Calendar.MONTH, calendarDayOfWeek.get(Calendar.MONTH));
}
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=1127768&r1=1127767&r2=1127768&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 Thu May 26 03:35:55 2011
@@ -70,7 +70,7 @@ public class EJBCronTriggerTest {
@Test(timeout = 1000)
public void testIncrementsA() throws ParseException {
ScheduleExpression expr = new ScheduleExpression().year(2008).month(1).dayOfMonth(20)
- .dayOfWeek("sun").hour("6/3").minute(30).start(new Date(0));
+ .hour("6/3").minute(30).start(new Date(0));
EJBCronTrigger trigger = new EJBCronTrigger(expr);
// Should fire on Sunday, January 20th, first at 6:30
@@ -127,20 +127,35 @@ public class EJBCronTriggerTest {
assertEquals(new GregorianCalendar(2011, 1, 5, 0, 0, 5).getTime(), trigger.getFireTimeAfter(new GregorianCalendar(2011, 1, 5, 0, 0, 4).getTime()));
assertEquals(new GregorianCalendar(2011, 1, 5, 0, 1, 5).getTime(), trigger.getFireTimeAfter(new GregorianCalendar(2011, 1, 5, 0, 0, 6).getTime()));
}
+
- @Test(timeout = 5000000)
+ @Test(timeout = 5000)
public void testBothDayOfMonthAndDayOfWeekA() throws ParseException {
ScheduleExpression expr = new ScheduleExpression().dayOfMonth("5").dayOfWeek("6").year(2010).start(new Date(0));
EJBCronTrigger trigger = new EJBCronTrigger(expr);
assertEquals(new GregorianCalendar(2010, 6, 3, 0, 0, 0).getTime(), trigger.getFireTimeAfter(new GregorianCalendar(2010, 6, 1, 0, 0, 0).getTime()));
}
- @Test(timeout = 5000000)
+ @Test(timeout = 5000)
public void testBothDayOfMonthAndDayOfWeekB() throws ParseException {
ScheduleExpression expr = new ScheduleExpression().dayOfMonth("last").dayOfWeek("3").year(2011).start(new Date(0));
EJBCronTrigger trigger = new EJBCronTrigger(expr);
assertEquals(new GregorianCalendar(2011, 4, 11, 0, 0, 0).getTime(), trigger.getFireTimeAfter(new GregorianCalendar(2011, 4, 7, 0, 0, 0).getTime()));
}
+
+ @Test(timeout = 5000)
+ public void testBothDayOfMonthAndDayOfWeekC() throws ParseException {
+ ScheduleExpression expr = new ScheduleExpression().year(2011).dayOfMonth("18").dayOfWeek("3").hour(23).minute(59).second(58).start(new Date(0));
+ EJBCronTrigger trigger = new EJBCronTrigger(expr);
+ assertEquals(new GregorianCalendar(2011, 4, 25, 23, 59, 58).getTime(), trigger.getFireTimeAfter(new GregorianCalendar(2011, 4, 18, 23, 59, 59).getTime()));
+ }
+
+ @Test(timeout = 5000)
+ public void testBothDayOfMonthAndDayOfWeekD() throws ParseException {
+ ScheduleExpression expr = new ScheduleExpression().year(2011).dayOfMonth("19").dayOfWeek("3").hour(23).minute(59).second(59).start(new GregorianCalendar(2011, 4, 18, 23, 59, 58).getTime());
+ EJBCronTrigger trigger = new EJBCronTrigger(expr);
+ assertEquals(new GregorianCalendar(2011, 4, 18, 23, 59, 59).getTime(), trigger.getFireTimeAfter(new GregorianCalendar(2011, 4, 18, 23, 59, 58).getTime()));
+ }
@Test(timeout = 5000)
public void testLastDayOfMonthA() throws ParseException {