From: <bea...@us...> - 2006-12-21 18:17:32
|
Revision: 361 http://svn.sourceforge.net/cishell/?rev=361&view=rev Author: bearsfan Date: 2006-12-21 10:17:26 -0800 (Thu, 21 Dec 2006) Log Message: ----------- Added an unsynchronized map for retrieving a ServiceReference Modified Paths: -------------- trunk/core/org.cishell.reference/src/org/cishell/reference/app/service/scheduler/SchedulerServiceImpl.java Modified: trunk/core/org.cishell.reference/src/org/cishell/reference/app/service/scheduler/SchedulerServiceImpl.java =================================================================== --- trunk/core/org.cishell.reference/src/org/cishell/reference/app/service/scheduler/SchedulerServiceImpl.java 2006-12-21 02:55:51 UTC (rev 360) +++ trunk/core/org.cishell.reference/src/org/cishell/reference/app/service/scheduler/SchedulerServiceImpl.java 2006-12-21 18:17:26 UTC (rev 361) @@ -223,6 +223,7 @@ public void setRunning(boolean isRunning) { _algSchedulerTask.setRunning(isRunning); + _schedulerListenerInformer.schedulerRunStateChanged(isRunning); } } @@ -312,6 +313,7 @@ class AlgSchedulerTask extends TimerTask implements SchedulerListener { private Map _algMap; + private Map _algServiceMap; private volatile boolean _running = true; // Default allow as many as needed @@ -349,6 +351,7 @@ public AlgSchedulerTask(SchedulerListener listener) { _algMap = Collections.synchronizedMap(new HashMap()); + _algServiceMap = new HashMap(); setSchedulerListener(listener); } @@ -356,13 +359,8 @@ _schedulerListener = listener; } - public synchronized final ServiceReference getServiceReference(Algorithm algorithm) { - AlgorithmTask task = (AlgorithmTask)_algMap.get(algorithm); - if (task != null) { - return task.getServiceReference(); - } else { - return null; - } + public final ServiceReference getServiceReference(Algorithm algorithm) { + return (ServiceReference) _algServiceMap.get(algorithm); } public synchronized final Calendar getScheduledTime(Algorithm algorithm) { @@ -420,6 +418,7 @@ } public synchronized final void registerAlgorithmTask(Algorithm algorithm, AlgorithmTask algorithmTask) { + this._algServiceMap.put(algorithm, algorithmTask.getServiceReference()); this._algMap.put(algorithm, algorithmTask); } @@ -445,8 +444,10 @@ while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); AlgorithmTask task = (AlgorithmTask) entry.getValue(); - if (task.getState() == STATE.STOPPED) + if (task.getState() == STATE.STOPPED) { iter.remove(); + _algServiceMap.remove(entry.getKey()); + } } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |