ramc 01/03/18 22:19:34 Modified: src/java/org/apache/cornerstone/blocks/scheduler DefaultTimeScheduler.java Log: Used reset() (instead of clonning), to reset the trigger. Also, used thread safe version of PriorityQueue. Revision Changes Path 1.3 +14 -19 jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/scheduler/DefaultTimeScheduler.java Index: DefaultTimeScheduler.java =================================================================== RCS file: /home/cvs/jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/scheduler/DefaultTimeScheduler.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DefaultTimeScheduler.java 2001/03/15 17:10:03 1.2 +++ DefaultTimeScheduler.java 2001/03/19 06:19:34 1.3 @@ -17,6 +17,8 @@ import org.apache.cornerstone.services.scheduler.TimeTrigger; import org.apache.cornerstone.services.scheduler.Target; import org.apache.avalon.util.BinaryHeap; +import org.apache.avalon.util.PriorityQueue; +import org.apache.avalon.util.SynchronizedPriorityQueue; import org.apache.avalon.util.thread.ThreadContext; import org.apache.log.Logger; @@ -34,12 +36,12 @@ protected boolean m_running; protected Hashtable m_entries; - protected BinaryHeap m_priorityQueue; + protected PriorityQueue m_priorityQueue; public void init() { m_entries = new Hashtable(); - m_priorityQueue = new BinaryHeap(); + m_priorityQueue = new SynchronizedPriorityQueue( new BinaryHeap() ); } public void dispose() @@ -100,6 +102,7 @@ throws NoSuchElementException { final TimeScheduledEntry entry = getEntry( name ); + entry.getTimeTrigger().reset(); rescheduleEntry( entry, true ); } @@ -118,23 +121,15 @@ if( clone ) { - try - { - entry = new TimeScheduledEntry( timeEntry.getName(), - timeEntry.getTimeTrigger().getClone(), - timeEntry.getTarget() ); - timeEntry.invalidate(); - - // remove old refernce to the entry..so that next time - // somebody calls getEntry( name ), we will get the new valid entry. - m_entries.remove( timeEntry.getName() ); - m_entries.put( timeEntry.getName(), entry ); - } - catch( final CloneNotSupportedException cnse ) - { - //not sure what to do with this.... - //but this should never happen as interface TimeTrigger is Cloneable. - } + entry = new TimeScheduledEntry( timeEntry.getName(), + timeEntry.getTimeTrigger(), + timeEntry.getTarget() ); + timeEntry.invalidate(); + + // remove old refernce to the entry..so that next time + // somebody calls getEntry( name ), we will get the new valid entry. + m_entries.remove( timeEntry.getName() ); + m_entries.put( timeEntry.getName(), entry ); } //reschedule if appropriate --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]