X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.execution%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fexecution%2FSimpleExecutionSpec.java;h=d6d0518802182221301f1ee52f845170849b3504;hb=237c2da124703a91c64cf0106d293f77821010e1;hp=3399a78e731bbb9bc89b0ff94fd42d98e657aa87;hpb=49d1ccd3b9f4d55d90de5e956a44bdbe83f600ef;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.execution/src/main/java/org/argeo/slc/execution/SimpleExecutionSpec.java b/runtime/org.argeo.slc.execution/src/main/java/org/argeo/slc/execution/SimpleExecutionSpec.java index 3399a78e7..d6d051880 100644 --- a/runtime/org.argeo.slc.execution/src/main/java/org/argeo/slc/execution/SimpleExecutionSpec.java +++ b/runtime/org.argeo.slc.execution/src/main/java/org/argeo/slc/execution/SimpleExecutionSpec.java @@ -3,11 +3,14 @@ package org.argeo.slc.execution; import java.util.HashMap; import java.util.Map; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.argeo.slc.SlcException; -import org.springframework.aop.framework.ProxyFactory; import org.springframework.beans.factory.BeanNameAware; public class SimpleExecutionSpec implements ExecutionSpec, BeanNameAware { + private final static Log log = LogFactory.getLog(SimpleExecutionSpec.class); + private final static ThreadLocal initializingFlow = new ThreadLocal(); private Map attributes = new HashMap(); @@ -27,18 +30,17 @@ public class SimpleExecutionSpec implements ExecutionSpec, BeanNameAware { if (flow == null) throw new SlcException("No flow is currently initializing." + " Declare flow refs as inner beans or prototypes."); -/* - RefSpecAttribute refSpecAttribute = (RefSpecAttribute) attributes - .get(name); - Class targetClass = refSpecAttribute.getTargetClass(); - ExecutionTargetSource targetSource = new ExecutionTargetSource(flow, - targetClass, name); - ProxyFactory proxyFactory = new ProxyFactory(); - proxyFactory.setTargetClass(targetClass); - proxyFactory.setProxyTargetClass(true); - proxyFactory.setTargetSource(targetSource); - - return proxyFactory.getProxy();*/ + /* + * RefSpecAttribute refSpecAttribute = (RefSpecAttribute) attributes + * .get(name); Class targetClass = refSpecAttribute.getTargetClass(); + * ExecutionTargetSource targetSource = new ExecutionTargetSource(flow, + * targetClass, name); ProxyFactory proxyFactory = new ProxyFactory(); + * proxyFactory.setTargetClass(targetClass); + * proxyFactory.setProxyTargetClass(true); + * proxyFactory.setTargetSource(targetSource); + * + * return proxyFactory.getProxy(); + */ return flow.getParameter(name); } @@ -50,17 +52,25 @@ public class SimpleExecutionSpec implements ExecutionSpec, BeanNameAware { return name; } + // FLOWS INITIALIZATION SUPPORT + public static void flowInitializationStarted(ExecutionFlow flow) { + if (log.isTraceEnabled()) + log.trace("Start initialization of " + flow.hashCode() + " (" + + flow + " - " + flow.getClass() + ")"); initializingFlow.set(flow); } public static void flowInitializationFinished(ExecutionFlow flow) { + if (log.isTraceEnabled()) + log.trace("Finish initialization of " + flow.hashCode() + " (" + + flow + " - " + flow.getClass() + ")"); ExecutionFlow registeredFlow = initializingFlow.get(); - if (registeredFlow == null) - throw new SlcException("No flow registered"); - if (!flow.getUuid().equals(registeredFlow.getUuid())) - throw new SlcException("Current flow is " + flow); - initializingFlow.set(null); + if (registeredFlow != null) { + if (!flow.getName().equals(registeredFlow.getName())) + throw new SlcException("Current flow is " + flow); + initializingFlow.set(null); + } } public static Object getInitializingFlowParameter(String key) { @@ -72,4 +82,9 @@ public class SimpleExecutionSpec implements ExecutionSpec, BeanNameAware { public static Boolean isInFlowInitialization() { return initializingFlow.get() != null; } + + public boolean equals(Object obj) { + return ((ExecutionSpec) obj).getName().equals(name); + } + }