X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2FDefaultExecutionFlow.java;h=0c6864f440fccf7aab7fbd7b346c1eaf5a32c3b0;hb=17ffc9fdb8f3a490881e540db8ff81655308233e;hp=7425a35c93a1e94ff9a16d8c66e27d83b53fc517;hpb=a18184e7d6bb5cc2cd6763439310061c60a00a78;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java index 7425a35c9..0c6864f44 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlow.java @@ -15,6 +15,7 @@ import org.argeo.slc.execution.ExecutionSpec; import org.argeo.slc.execution.ExecutionSpecAttribute; import org.argeo.slc.structure.StructureAware; import org.argeo.slc.structure.StructureRegistry; +import org.springframework.aop.scope.ScopedObject; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.validation.MapBindingResult; @@ -91,7 +92,7 @@ public class DefaultExecutionFlow implements ExecutionFlow, InitializingBean, public void run() { try { for (Runnable executable : executables) { - doExecuteRunnable(executable); + this.doExecuteRunnable(executable); } } catch (RuntimeException e) { if (failOnError) @@ -113,16 +114,26 @@ public class DefaultExecutionFlow implements ExecutionFlow, InitializingBean, @SuppressWarnings(value = { "unchecked" }) public void afterPropertiesSet() throws Exception { + if (path == null) { + if (name.charAt(0) == '/') { + path = name.substring(0, name.lastIndexOf('/')); + } + } + if (path != null) { for (Runnable executable : executables) { - if (executable instanceof StructureAware) { + if (executable instanceof StructureAware + && !(executable instanceof ScopedObject)) { ((StructureAware) executable).notifyCurrentPath( registry, new TreeSPath(path)); } else if (executable instanceof DefaultExecutionFlow) { // so we don't need to have DefaultExecutionFlow // implementing StructureAware + // FIXME: probably has side effects DefaultExecutionFlow flow = (DefaultExecutionFlow) executable; - flow.setPath(path + '/' + flow.getName()); + String newPath = path + '/' + flow.getName(); + flow.setPath(newPath); + log.warn(newPath + " was forcibly set on " + flow); } } }