]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java
Use values from flows
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / execution / JcrExecutionModulesListener.java
index 90b86f3d327549e76cb2693726795d102532e6c7..8543689294323ff8e0c3f24c59b7fea830b6b0d3 100644 (file)
@@ -16,6 +16,7 @@ import org.apache.commons.logging.LogFactory;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.core.execution.PrimitiveSpecAttribute;
+import org.argeo.slc.core.execution.PrimitiveValue;
 import org.argeo.slc.core.execution.RefSpecAttribute;
 import org.argeo.slc.core.execution.RefValueChoice;
 import org.argeo.slc.deploy.ModuleDescriptor;
@@ -207,6 +208,8 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener,
                                                        SlcTypes.SLC_EXECUTION_FLOW);
                        }
                }
+
+               // name, description
                flowNode.setProperty(SLC_NAME, efd.getName());
                String[] tokens = relativePath.split("/");
                flowNode.setProperty(Property.JCR_TITLE, tokens[tokens.length - 1]);
@@ -218,6 +221,7 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener,
                ExecutionSpec executionSpec = efd.getExecutionSpec();
                String esName = executionSpec.getName();
                if (!(esName == null || esName.equals(ExecutionSpec.INTERNAL_NAME))) {
+                       // reference spec node
                        Node executionSpecsNode = moduleNode.hasNode(SLC_EXECUTION_SPECS) ? moduleNode
                                        .getNode(SLC_EXECUTION_SPECS) : moduleNode
                                        .addNode(SLC_EXECUTION_SPECS);
@@ -232,8 +236,25 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener,
                        mapExecutionSpec(executionSpecNode, executionSpec);
                        flowNode.setProperty(SLC_SPEC, executionSpecNode);
                } else {
+                       // internal spec node
                        mapExecutionSpec(flowNode, executionSpec);
                }
+
+               // values
+               for (String attr : efd.getValues().keySet()) {
+                       if (log.isDebugEnabled())
+                               log.debug(attr + "=" + efd.getValues().get(attr));
+                       ExecutionSpecAttribute esa = executionSpec.getAttributes()
+                                       .get(attr);
+                       if (esa instanceof PrimitiveSpecAttribute) {
+                               PrimitiveSpecAttribute psa = (PrimitiveSpecAttribute) esa;
+                               Node valueNode = flowNode.addNode(attr);
+                               valueNode.setProperty(SLC_TYPE, psa.getType());
+                               SlcJcrUtils.setPrimitiveAsProperty(valueNode, SLC_VALUE,
+                                               (PrimitiveValue) efd.getValues().get(attr));
+                       }
+               }
+
                return flowNode;
        }