X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2FAbstractExecutionModulesManager.java;h=c4832dbc4bceb926b9cc3890d168d716a464780d;hb=5fe677bf811739592b1089471181e39f9cbe4f3f;hp=3b561392115a27d2e156493383e3d7121adacd36;hpb=0e2ff188c2e8ffac85739cccc3925e8bd82d7be9;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/AbstractExecutionModulesManager.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/AbstractExecutionModulesManager.java index 3b5613921..c4832dbc4 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/AbstractExecutionModulesManager.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/AbstractExecutionModulesManager.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Mathieu Baudier + * 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. @@ -13,11 +13,11 @@ * 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; @@ -46,8 +46,6 @@ public abstract class AbstractExecutionModulesManager implements private List filteredNotifiers = Collections .synchronizedList(new ArrayList()); - private ThreadGroup processesThreadGroup = new ThreadGroup("SLC Processes"); - protected abstract ExecutionFlow findExecutionFlow(String moduleName, String moduleVersion, String flowName); @@ -100,10 +98,13 @@ public abstract class AbstractExecutionModulesManager implements filteredNotifier.getNotifier().updateStatus(process, oldStatus, newStatus); } + } public void dispatchAddSteps(ExecutionProcess process, List steps) { + process.addSteps(steps); + for (Iterator it = getSlcExecutionNotifiers() .iterator(); it.hasNext();) { it.next().addSteps(process, steps); @@ -122,6 +123,11 @@ public abstract class AbstractExecutionModulesManager implements filteredNotifiers.add(new FilteredNotifier(notifier, properties)); } + public void unregisterProcessNotifier(ExecutionProcessNotifier notifier, + Map properties) { + filteredNotifiers.remove(notifier); + } + public void setSlcExecutionNotifiers( List slcExecutionNotifiers) { this.slcExecutionNotifiers = slcExecutionNotifiers; @@ -131,10 +137,6 @@ public abstract class AbstractExecutionModulesManager implements return slcExecutionNotifiers; } - public ThreadGroup getProcessesThreadGroup() { - return processesThreadGroup; - } - protected class FilteredNotifier { private final ExecutionProcessNotifier notifier; private final String processId; @@ -143,6 +145,8 @@ public abstract class AbstractExecutionModulesManager implements Map properties) { super(); this.notifier = notifier; + if (properties == null) + properties = new HashMap(); if (properties.containsKey(SLC_PROCESS_ID)) processId = properties.get(SLC_PROCESS_ID); else @@ -168,7 +172,14 @@ public abstract class AbstractExecutionModulesManager implements @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() {