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]