X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjcr%2Fexecution%2FJcrExecutionModulesListener.java;h=ea734a8bbd6da7eed8c427b5321b7e74af6e5832;hb=2ecb1e7ce15a25ba8026b5ded625f36c1be467bd;hp=473dcb343434fc7a7a055624bafeed08fc1f5de9;hpb=58e0e18d64a2080680a9f8397b0dfa2894519910;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java index 473dcb343..ea734a8bb 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java @@ -243,8 +243,9 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener, String relativePath, ExecutionFlowDescriptor efd) throws RepositoryException { Node flowNode = null; - Iterator names = Arrays.asList(relativePath.split("/")) - .iterator(); + List pathTokens = Arrays.asList(relativePath.split("/")); + + Iterator names = pathTokens.iterator(); // create intermediary paths Node currNode = moduleNode; while (names.hasNext()) { @@ -262,8 +263,7 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener, // name, description flowNode.setProperty(SLC_NAME, efd.getName()); - String[] tokens = relativePath.split("/"); - String endName = tokens[tokens.length - 1]; + String endName = pathTokens.get(pathTokens.size() - 1); flowNode.setProperty(Property.JCR_TITLE, endName); if (efd.getDescription() != null && !efd.getDescription().trim().equals("")) { @@ -296,13 +296,14 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener, flowNode.setProperty(SLC_SPEC, executionSpecNode); } - // values + // flow values for (String attr : efd.getValues().keySet()) { ExecutionSpecAttribute esa = executionSpec.getAttributes() .get(attr); if (esa instanceof PrimitiveSpecAttribute) { PrimitiveSpecAttribute psa = (PrimitiveSpecAttribute) esa; - Node valueNode = flowNode.addNode(attr); + // if spec reference there will be no node at this stage + Node valueNode = JcrUtils.getOrAdd(flowNode, attr); valueNode.setProperty(SLC_TYPE, psa.getType()); SlcJcrUtils.setPrimitiveAsProperty(valueNode, SLC_VALUE, (PrimitiveValue) efd.getValues().get(attr));