ramc 01/03/15 09:10:49 Modified: src/java/org/apache/cornerstone/services/scheduler TimeTrigger.java PeriodicTimeTrigger.java CronTimeTrigger.java Log: Patch for TimeScheduler block. This should fix the problem with timeout when the trigger is rescheduled. Revision Changes Path 1.2 +11 -1 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/services/scheduler/TimeTrigger.java Index: TimeTrigger.java =================================================================== RCS file: /home/cvs/jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/services/scheduler/TimeTrigger.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TimeTrigger.java 2001/02/22 07:51:35 1.1 +++ TimeTrigger.java 2001/03/15 17:10:42 1.2 @@ -12,9 +12,10 @@ * Triggers can be time-based, event-based or other. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Ram Chidambaram</a> */ public interface TimeTrigger - extends Trigger + extends Trigger, Cloneable { /** * Retrieve the next time at trigger activates relative to another time. @@ -22,4 +23,13 @@ * @return the time at which the trigger activates */ long getTimeAfter( long time ); + + /** + * Get a clone of the original TimeTrigger with adjusted time sensitive info. + * + * @return a new copy of the TimeTrigger + * @exception CloneNotSupportedException if trigger cannot be cloned + */ + TimeTrigger getClone() + throws CloneNotSupportedException; } 1.2 +17 -4 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/services/scheduler/PeriodicTimeTrigger.java Index: PeriodicTimeTrigger.java =================================================================== RCS file: /home/cvs/jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/services/scheduler/PeriodicTimeTrigger.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- PeriodicTimeTrigger.java 2001/02/22 07:51:35 1.1 +++ PeriodicTimeTrigger.java 2001/03/15 17:10:44 1.2 @@ -11,12 +11,14 @@ * This is the triggers based on a start time and period. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Ram Chidambaram</a> */ public class PeriodicTimeTrigger implements TimeTrigger { protected final long m_startTime; protected final long m_period; + private final long m_triggerTime; public PeriodicTimeTrigger( final int startTime, final int period ) { @@ -24,13 +26,14 @@ if( -1 == startTime ) { - m_startTime = current; + m_triggerTime = current; } else { - m_startTime = current + startTime; + m_triggerTime = current + startTime; } + m_startTime = startTime; m_period = period; } @@ -41,16 +44,26 @@ */ public long getTimeAfter( final long time ) { - if( time <= m_startTime ) return m_startTime; + if( time <= m_triggerTime ) return m_triggerTime; else { if( -1 == m_period ) return -1; - final long over = time - m_startTime; + final long over = time - m_triggerTime; final long remainder = over % m_period; return time + ( m_period - remainder ); } + } + + /** + * Get a clone of the original TimeTrigger with adjusted time sensitive info. + * + * @return a new copy of this TimeTrigger + */ + public TimeTrigger getClone() + { + return new PeriodicTimeTrigger( (int) m_startTime, (int) m_period ); } public String toString() 1.2 +12 -0 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/services/scheduler/CronTimeTrigger.java Index: CronTimeTrigger.java =================================================================== RCS file: /home/cvs/jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/services/scheduler/CronTimeTrigger.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- CronTimeTrigger.java 2001/02/22 07:51:35 1.1 +++ CronTimeTrigger.java 2001/03/15 17:10:45 1.2 @@ -15,6 +15,7 @@ * This is the holder triggers based on standard crontabs format. * * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Ram Chidambaram</a> */ public class CronTimeTrigger implements TimeTrigger @@ -223,6 +224,17 @@ //return time in millis return next.getTime().getTime(); + } + + /** + * Get a clone of the original TimeTrigger. + * + * @return a new copy of this TimeTrigger + */ + public TimeTrigger getClone() + throws CloneNotSupportedException + { + return (TimeTrigger) this.clone(); } public String toString() --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]