[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Michael Yuan
michael.yuan at jboss.com
Tue Jun 19 01:33:32 EDT 2007
User: myuan
Date: 07/06/19 01:33:32
Modified: src/main/org/jboss/seam/core AbstractDispatcher.java
CronSchedule.java QuartzDispatcher.java
Schedule.java TimerSchedule.java
Log:
Add support for FinalExpiration on Quartz dispatcher
Revision Changes Path
1.9 +15 -4 jboss-seam/src/main/org/jboss/seam/core/AbstractDispatcher.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: AbstractDispatcher.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/AbstractDispatcher.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- AbstractDispatcher.java 14 Jun 2007 23:08:04 -0000 1.8
+++ AbstractDispatcher.java 19 Jun 2007 05:33:32 -0000 1.9
@@ -6,9 +6,10 @@
import java.util.Date;
import org.jboss.seam.Component;
-import org.jboss.seam.annotations.timer.Cron;
+import org.jboss.seam.annotations.timer.IntervalCron;
import org.jboss.seam.annotations.timer.Duration;
import org.jboss.seam.annotations.timer.Expiration;
+import org.jboss.seam.annotations.timer.FinalExpiration;
import org.jboss.seam.annotations.timer.IntervalDuration;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.contexts.Lifecycle;
@@ -148,12 +149,18 @@
}
+ // TODO: Throw exception when there are multiple interval params
+ // Make use of finalExpiration
+ // Make use of NthBusinessDay
protected Schedule createSchedule(InvocationContext invocation)
{
Long duration = null;
Date expiration = null;
+ Date finalExpiration = null;
+
Long intervalDuration = null;
String cron = null;
+ // NthBusinessDay intervalBusinessDay = null;
Annotation[][] parameterAnnotations = invocation.getMethod().getParameterAnnotations();
for ( int i=0; i<parameterAnnotations.length; i++ )
@@ -173,7 +180,11 @@
{
expiration = (Date) invocation.getParameters()[i];
}
- else if ( annotation.annotationType().equals(Cron.class) )
+ else if ( annotation.annotationType().equals(FinalExpiration.class) )
+ {
+ finalExpiration = (Date) invocation.getParameters()[i];
+ }
+ else if ( annotation.annotationType().equals(IntervalCron.class) )
{
cron = (String) invocation.getParameters()[i];
}
@@ -182,11 +193,11 @@
if ( cron!=null )
{
- return new CronSchedule(duration, expiration, cron);
+ return new CronSchedule(duration, expiration, cron, finalExpiration);
}
else
{
- return new TimerSchedule(duration, expiration, intervalDuration);
+ return new TimerSchedule(duration, expiration, intervalDuration, finalExpiration);
}
}
1.3 +2 -2 jboss-seam/src/main/org/jboss/seam/core/CronSchedule.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: CronSchedule.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/CronSchedule.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- CronSchedule.java 6 Jun 2007 00:49:36 -0000 1.2
+++ CronSchedule.java 19 Jun 2007 05:33:32 -0000 1.3
@@ -38,9 +38,9 @@
this.cron = cron;
}
- CronSchedule(Long duration, Date expiration, String cron)
+ CronSchedule(Long duration, Date expiration, String cron, Date finalExpiration)
{
- super(duration, expiration);
+ super(duration, expiration, finalExpiration);
this.cron = cron;
}
1.6 +5 -3 jboss-seam/src/main/org/jboss/seam/core/QuartzDispatcher.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: QuartzDispatcher.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/QuartzDispatcher.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- QuartzDispatcher.java 14 Jun 2007 23:08:04 -0000 1.5
+++ QuartzDispatcher.java 19 Jun 2007 05:33:32 -0000 1.6
@@ -139,6 +139,8 @@
{
CronTrigger trigger = new CronTrigger (triggerName, null);
trigger.setCronExpression(cronSchedule.getCron());
+ trigger.setEndTime(cronSchedule.getFinalExpiration());
+
if ( cronSchedule.getExpiration()!=null )
{
trigger.setStartTime (cronSchedule.getExpiration());
@@ -163,19 +165,19 @@
TimerSchedule timerSchedule = (TimerSchedule) schedule;
if ( timerSchedule.getExpiration()!=null )
{
- SimpleTrigger trigger = new SimpleTrigger(triggerName, null, timerSchedule.getExpiration(), null, SimpleTrigger.REPEAT_INDEFINITELY, timerSchedule.getIntervalDuration());
+ SimpleTrigger trigger = new SimpleTrigger(triggerName, null, timerSchedule.getExpiration(), timerSchedule.getFinalExpiration(), SimpleTrigger.REPEAT_INDEFINITELY, timerSchedule.getIntervalDuration());
scheduler.scheduleJob( jobDetail, trigger );
}
else if ( timerSchedule.getDuration()!=null )
{
- SimpleTrigger trigger = new SimpleTrigger(triggerName, null, calculateDelayedDate(timerSchedule.getDuration()), null, SimpleTrigger.REPEAT_INDEFINITELY, timerSchedule.getIntervalDuration());
+ SimpleTrigger trigger = new SimpleTrigger(triggerName, null, calculateDelayedDate(timerSchedule.getDuration()), timerSchedule.getFinalExpiration(), SimpleTrigger.REPEAT_INDEFINITELY, timerSchedule.getIntervalDuration());
scheduler.scheduleJob( jobDetail, trigger );
}
else
{
- SimpleTrigger trigger = new SimpleTrigger(triggerName, null, SimpleTrigger.REPEAT_INDEFINITELY, timerSchedule.getIntervalDuration());
+ SimpleTrigger trigger = new SimpleTrigger(triggerName, null, null, timerSchedule.getFinalExpiration(), SimpleTrigger.REPEAT_INDEFINITELY, timerSchedule.getIntervalDuration());
scheduler.scheduleJob( jobDetail, trigger );
}
1.4 +18 -0 jboss-seam/src/main/org/jboss/seam/core/Schedule.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Schedule.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Schedule.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- Schedule.java 14 Jun 2007 23:08:04 -0000 1.3
+++ Schedule.java 19 Jun 2007 05:33:32 -0000 1.4
@@ -16,6 +16,7 @@
{
private Long duration;
private Date expiration;
+ private Date finalExpiration;
Long getDuration()
{
@@ -27,6 +28,11 @@
return expiration;
}
+ Date getFinalExpiration()
+ {
+ return finalExpiration;
+ }
+
/**
* @param duration the delay before the event occurs
* @param expiration the datetime at which the event occurs
@@ -39,6 +45,18 @@
/**
* @param duration the delay before the event occurs
+ * @param expiration the datetime at which the event occurs
+ * @param finalExpiration the datetime at which the event ends
+ */
+ Schedule(Long duration, Date expiration, Date finalExpiration)
+ {
+ this.duration = duration;
+ this.expiration = expiration;
+ this.finalExpiration = finalExpiration;
+ }
+
+ /**
+ * @param duration the delay before the event occurs
*/
public Schedule(Long duration)
{
1.6 +6 -0 jboss-seam/src/main/org/jboss/seam/core/TimerSchedule.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: TimerSchedule.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/TimerSchedule.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- TimerSchedule.java 14 Jun 2007 23:08:04 -0000 1.5
+++ TimerSchedule.java 19 Jun 2007 05:33:32 -0000 1.6
@@ -62,6 +62,12 @@
this.intervalDuration = intervalDuration;
}
+ TimerSchedule(Long duration, Date expiration, Long intervalDuration, Date finalExpiration)
+ {
+ super(duration, expiration, finalExpiration);
+ this.intervalDuration = intervalDuration;
+ }
+
TimerSchedule() {}
More information about the jboss-cvs-commits
mailing list