]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrProcessThread.java
Improve encapsulation and synchronization of logging.
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / execution / JcrProcessThread.java
index e816b1c3724bef8e270816d04da93f451f4dd85a..41353e05260394f2468560b2e3618789420d7fcc 100644 (file)
@@ -22,8 +22,10 @@ import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.Property;
 import javax.jcr.RepositoryException;
+import javax.jcr.Session;
 
 import org.argeo.ArgeoException;
+import org.argeo.jcr.JcrUtils;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.core.execution.DefaultExecutionSpec;
 import org.argeo.slc.core.execution.PrimitiveSpecAttribute;
@@ -50,8 +52,11 @@ public class JcrProcessThread extends ProcessThread implements SlcNames {
 
        @Override
        protected void process() throws InterruptedException {
+               Session session = null;
                try {
-                       Node rootRealizedFlowNode = getNode().getNode(SLC_FLOW);
+                       session = getJcrExecutionProcess().getRepository().login();
+                       Node rootRealizedFlowNode = session.getNode(
+                                       getJcrExecutionProcess().getNodePath()).getNode(SLC_FLOW);
                        // we just manage one level for the time being
                        NodeIterator nit = rootRealizedFlowNode.getNodes(SLC_FLOW);
                        while (nit.hasNext()) {
@@ -85,7 +90,10 @@ public class JcrProcessThread extends ProcessThread implements SlcNames {
                                }
                        }
                } catch (RepositoryException e) {
-                       throw new ArgeoException("Cannot process " + getNode(), e);
+                       throw new ArgeoException("Cannot process "
+                                       + getJcrExecutionProcess().getNodePath(), e);
+               } finally {
+                       JcrUtils.logoutQuietly(session);
                }
        }
 
@@ -193,7 +201,7 @@ public class JcrProcessThread extends ProcessThread implements SlcNames {
                }
        }
 
-       protected Node getNode() {
-               return ((JcrExecutionProcess) getProcess()).getNode();
+       protected JcrExecutionProcess getJcrExecutionProcess() {
+               return (JcrExecutionProcess) getProcess();
        }
 }