|
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.
|