X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2FDefaultExecutionFlowDescriptorConverter.java;h=277e4df0c93ab52a892f894343770ab4262a7e74;hb=827cc6fa4bff1994f89cb8d925808def5600b5dc;hp=7860feea6b6e7bcf93607951e758918a6cab1ae3;hpb=d601802d5a50e4e30eb639a08eff5270b63fe599;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java index 7860feea6..277e4df0c 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java @@ -143,55 +143,8 @@ public class DefaultExecutionFlowDescriptorConverter implements for (String name : executionFlows.keySet()) { ExecutionFlow executionFlow = executionFlows.get(name); - Assert.notNull(executionFlow.getName()); - Assert.state(name.equals(executionFlow.getName())); - - ExecutionSpec executionSpec = executionFlow.getExecutionSpec(); - Assert.notNull(executionSpec); - Assert.notNull(executionSpec.getName()); - - Map values = new TreeMap(); - for (String key : executionSpec.getAttributes().keySet()) { - ExecutionSpecAttribute attribute = executionSpec - .getAttributes().get(key); - - if (attribute instanceof PrimitiveSpecAttribute) { - if (executionFlow.isSetAsParameter(key)) { - Object value = executionFlow.getParameter(key); - PrimitiveValue primitiveValue = new PrimitiveValue(); - primitiveValue - .setType(((PrimitiveSpecAttribute) attribute) - .getType()); - primitiveValue.setValue(value); - values.put(key, primitiveValue); - } else { - // no need to add a primitive value if it is not set, - // all necessary information is in the spec - } - } else if (attribute instanceof RefSpecAttribute) { - if (attribute.getIsFrozen()) { - values.put(key, new RefValue(REF_VALUE_INTERNAL)); - } else - values.put(key, buildRefValue( - (RefSpecAttribute) attribute, executionFlow, - key)); - } else { - throw new SlcException("Unkown spec attribute type " - + attribute.getClass()); - } - - } - - ExecutionFlowDescriptor efd = new ExecutionFlowDescriptor(name, - values, executionSpec); - if (executionFlow.getPath() != null) - efd.setPath(executionFlow.getPath()); - else - efd.setPath(""); - - // Takes description from spring - BeanDefinition bd = getBeanFactory().getBeanDefinition(name); - efd.setDescription(bd.getDescription()); + ExecutionFlowDescriptor efd = getExecutionFlowDescriptor(executionFlow); + ExecutionSpec executionSpec = efd.getExecutionSpec(); // Add execution spec if necessary if (!md.getExecutionSpecs().contains(executionSpec)) @@ -204,6 +157,60 @@ public class DefaultExecutionFlowDescriptorConverter implements md.getExecutionFlows().addAll(set); } + public ExecutionFlowDescriptor getExecutionFlowDescriptor( + ExecutionFlow executionFlow) { + Assert.notNull(executionFlow.getName()); + String name = executionFlow.getName(); + + ExecutionSpec executionSpec = executionFlow.getExecutionSpec(); + Assert.notNull(executionSpec); + Assert.notNull(executionSpec.getName()); + + Map values = new TreeMap(); + for (String key : executionSpec.getAttributes().keySet()) { + ExecutionSpecAttribute attribute = executionSpec.getAttributes() + .get(key); + + if (attribute instanceof PrimitiveSpecAttribute) { + if (executionFlow.isSetAsParameter(key)) { + Object value = executionFlow.getParameter(key); + PrimitiveValue primitiveValue = new PrimitiveValue(); + primitiveValue.setType(((PrimitiveSpecAttribute) attribute) + .getType()); + primitiveValue.setValue(value); + values.put(key, primitiveValue); + } else { + // no need to add a primitive value if it is not set, + // all necessary information is in the spec + } + } else if (attribute instanceof RefSpecAttribute) { + if (attribute.getIsFrozen()) { + values.put(key, new RefValue(REF_VALUE_INTERNAL)); + } else + values.put( + key, + buildRefValue((RefSpecAttribute) attribute, + executionFlow, key)); + } else { + throw new SlcException("Unkown spec attribute type " + + attribute.getClass()); + } + + } + + ExecutionFlowDescriptor efd = new ExecutionFlowDescriptor(name, values, + executionSpec); + if (executionFlow.getPath() != null) + efd.setPath(executionFlow.getPath()); + else + efd.setPath(""); + + // Takes description from spring + BeanDefinition bd = getBeanFactory().getBeanDefinition(name); + efd.setDescription(bd.getDescription()); + return efd; + } + @SuppressWarnings(value = { "unchecked" }) protected RefValue buildRefValue(RefSpecAttribute rsa, ExecutionFlow executionFlow, String key) { @@ -225,8 +232,7 @@ public class DefaultExecutionFlowDescriptorConverter implements String ref = null; Object value = executionFlow.getParameter(key); if (applicationContext == null) { - log - .warn("No application context declared, cannot scan ref value."); + log.warn("No application context declared, cannot scan ref value."); ref = value.toString(); } else { @@ -252,15 +258,9 @@ public class DefaultExecutionFlowDescriptorConverter implements } } if (ref == null) { - log - .warn("Cannot define reference for ref spec attribute " - + key - + " in " - + executionFlow - + " (" - + rsa - + ")." - + " If it is an inner bean consider put it frozen."); + log.warn("Cannot define reference for ref spec attribute " + + key + " in " + executionFlow + " (" + rsa + ")." + + " If it is an inner bean consider put it frozen."); ref = REF_VALUE_INTERNAL; } else { if (log.isTraceEnabled()) @@ -300,7 +300,7 @@ public class DefaultExecutionFlowDescriptorConverter implements // Check whether name include path int lastIndex1 = name1.lastIndexOf('/'); - //log.debug(name1+", "+lastIndex1); + // log.debug(name1+", "+lastIndex1); if (!StringUtils.hasText(path1) && lastIndex1 >= 0) { path1 = name1.substring(0, lastIndex1); name1 = name1.substring(lastIndex1 + 1);