/*
- * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ * Copyright (C) 2007-2012 Mathieu Baudier
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.argeo.slc.core.execution;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
private List<FilteredNotifier> filteredNotifiers = Collections
.synchronizedList(new ArrayList<FilteredNotifier>());
- private ThreadGroup processesThreadGroup = new ThreadGroup("SLC Processes");
-
protected abstract ExecutionFlow findExecutionFlow(String moduleName,
String moduleVersion, String flowName);
filteredNotifier.getNotifier().updateStatus(process, oldStatus,
newStatus);
}
+
}
public void dispatchAddSteps(ExecutionProcess process,
List<ExecutionStep> steps) {
+ process.addSteps(steps);
+
for (Iterator<SlcExecutionNotifier> it = getSlcExecutionNotifiers()
.iterator(); it.hasNext();) {
it.next().addSteps(process, steps);
filteredNotifiers.add(new FilteredNotifier(notifier, properties));
}
+ public void unregisterProcessNotifier(ExecutionProcessNotifier notifier,
+ Map<String, String> properties) {
+ filteredNotifiers.remove(notifier);
+ }
+
public void setSlcExecutionNotifiers(
List<SlcExecutionNotifier> slcExecutionNotifiers) {
this.slcExecutionNotifiers = slcExecutionNotifiers;
return slcExecutionNotifiers;
}
- public ThreadGroup getProcessesThreadGroup() {
- return processesThreadGroup;
- }
-
protected class FilteredNotifier {
private final ExecutionProcessNotifier notifier;
private final String processId;
Map<String, String> properties) {
super();
this.notifier = notifier;
+ if (properties == null)
+ properties = new HashMap<String, String>();
if (properties.containsKey(SLC_PROCESS_ID))
processId = properties.get(SLC_PROCESS_ID);
else
@Override
public boolean equals(Object obj) {
- return notifier.equals(obj);
+ if (obj instanceof FilteredNotifier) {
+ FilteredNotifier fn = (FilteredNotifier) obj;
+ return notifier.equals(fn.notifier);
+ } else if (obj instanceof ExecutionProcessNotifier) {
+ ExecutionProcessNotifier epn = (ExecutionProcessNotifier) obj;
+ return notifier.equals(epn);
+ } else
+ return false;
}
public ExecutionProcessNotifier getNotifier() {