]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrResultListener.java
Fix various bugs with execution
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / execution / JcrResultListener.java
index 733bac7fbbd2cfbc0b1ecbf4448fab06c6f5e70d..79e6b12a005448493b634509a57f8b91ac15ce5a 100644 (file)
@@ -21,6 +21,8 @@ import org.argeo.slc.SlcException;
 import org.argeo.slc.core.attachment.Attachment;
 import org.argeo.slc.core.structure.SimpleSElement;
 import org.argeo.slc.core.structure.tree.TreeSPath;
+import org.argeo.slc.core.test.SimpleResultPart;
+import org.argeo.slc.core.test.tree.PartSubList;
 import org.argeo.slc.core.test.tree.TreeTestResult;
 import org.argeo.slc.core.test.tree.TreeTestResultListener;
 import org.argeo.slc.jcr.SlcJcrUtils;
@@ -29,7 +31,11 @@ import org.argeo.slc.jcr.SlcTypes;
 import org.argeo.slc.test.TestResultPart;
 import org.argeo.slc.test.TestStatus;
 
-/** Persists results in JCR */
+/**
+ * Persists results in JCR by listening to {@link TreeTestResult}. This is to
+ * facilitate transition from legacy approaches and should not be used in new
+ * implementations.
+ */
 public class JcrResultListener implements TreeTestResultListener, SlcNames {
        private final static Log log = LogFactory.getLog(JcrResultListener.class);
 
@@ -66,7 +72,6 @@ public class JcrResultListener implements TreeTestResultListener, SlcNames {
                                // session.save();
                        }
                        // create part node
-                       // TODO find a better name
                        SimpleSElement element = null;
                        if (testResult.getElements().containsKey(currentPath)) {
                                element = (SimpleSElement) testResult.getElements().get(
@@ -173,6 +178,9 @@ public class JcrResultListener implements TreeTestResultListener, SlcNames {
 
                        uuidToIdentifier.remove(uuid);
                        session.save();
+
+                       if (log.isDebugEnabled())
+                               log.debug("Closed test result " + uuid);
                } catch (RepositoryException e) {
                        JcrUtils.discardQuietly(session);
                        log.error("Cannot close result " + testResult, e);
@@ -224,7 +232,20 @@ public class JcrResultListener implements TreeTestResultListener, SlcNames {
                                                resultPath.length());
                                TreeSPath tsp = new TreeSPath(relPath);
 
-                               // TODO result part
+                               // result part
+                               SimpleResultPart srp = new SimpleResultPart();
+                               if (checkNode.getProperty(SLC_SUCCESS).getBoolean())
+                                       srp.setStatus(TestStatus.PASSED);
+                               else if (checkNode.hasProperty(SLC_ERROR_MESSAGE))
+                                       srp.setStatus(TestStatus.ERROR);
+                               else
+                                       srp.setStatus(TestStatus.FAILED);
+                               if (checkNode.hasProperty(SLC_MESSAGE))
+                                       srp.setMessage(checkNode.getProperty(SLC_MESSAGE)
+                                                       .getString());
+                               if (!ttr.getResultParts().containsKey(tsp))
+                                       ttr.getResultParts().put(tsp, new PartSubList());
+                               ttr.getResultParts().get(tsp).getParts().add(srp);
 
                                // element
                                SimpleSElement elem = new SimpleSElement();