[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