X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Ftest%2Ftree%2FTreeTestResult.java;h=3e365afe0822c6f28b51f3f835d89189a6fd7328;hb=7a8f034133c1112e187e2a2bfd2c56a8d2452345;hp=7e7ae68b7a65cefe539ab9c9339436744ad5ea1e;hpb=526d74ac381ff3b546fe06dac8f6ce03c697c54f;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java index 7e7ae68b7..3e365afe0 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java @@ -9,9 +9,7 @@ import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.argeo.slc.core.SlcException; -import org.argeo.slc.core.structure.SimpleSElement; import org.argeo.slc.core.structure.StructureAware; import org.argeo.slc.core.structure.StructureElement; import org.argeo.slc.core.structure.StructureRegistry; @@ -34,27 +32,32 @@ public class TreeTestResult implements TestResult, StructureAware, private TreeSPath currentPath; private TestRun currentTestRun; - - private Map rootTags = new TreeMap(); private Date closeDate; - private boolean isClosed = false; + private Boolean isClosed = false; + + private Boolean warnIfAlreadyClosed = true; private String uuid; private SortedMap resultParts = new TreeMap(); private SortedMap elements = new TreeMap(); + private Map attributes = new TreeMap(); + /** Sets the list of listeners. */ public void setListeners(List> listeners) { this.listeners = listeners; } public void addResultPart(TestResultPart part) { - if (currentPath == null) { + if (isClosed) + throw new SlcException("Cannot result parts to a closed result"); + + if (currentPath == null) throw new SlcException("No current path set."); - } + PartSubList subList = resultParts.get(currentPath); if (subList == null) { subList = new PartSubList(); @@ -80,13 +83,6 @@ public class TreeTestResult implements TestResult, StructureAware, if (!elements.containsKey(p)) { StructureElement elem = registry.getElement(p); if (elem != null) { - - if(elements.size()==0 && (elem instanceof SimpleSElement)){ - SimpleSElement sElem = ((SimpleSElement)elem).clone(); - sElem.getTags().putAll(rootTags); - elem = sElem; - } - elements.put(p, elem); } } else { @@ -98,7 +94,7 @@ public class TreeTestResult implements TestResult, StructureAware, } } - currentPath = (TreeSPath) path; + currentPath = path; } /** Gets the current path. */ @@ -117,10 +113,20 @@ public class TreeTestResult implements TestResult, StructureAware, } public void close() { + if (resultParts.size() == 0) { + if (log.isTraceEnabled()) + log.trace("Test Result #" + getUuid() + + " contains no results, no need to close it."); + return; + } + if (isClosed) { - throw new SlcException("Test Result #" + getUuid() - + " alredy closed."); + if (warnIfAlreadyClosed) + log.warn("Test Result #" + getUuid() + + " already closed. Doing nothing."); + return; } + closeDate = new Date(); synchronized (listeners) { @@ -131,7 +137,8 @@ public class TreeTestResult implements TestResult, StructureAware, } isClosed = true; - log.info("Test Result #" + getUuid() + " closed."); + if (log.isTraceEnabled()) + log.trace("Test Result " + getUuid() + " closed."); } public Date getCloseDate() { @@ -165,6 +172,11 @@ public class TreeTestResult implements TestResult, StructureAware, public SortedMap getRelatedElements( TreeSPath path) { + if (path == null) + throw new SlcException( + "Cannot retrieve element for a null path in result #" + + uuid); + SortedMap relatedElements = new TreeMap(); List hierarchy = path.getHierarchyAsList(); for (TreeSPath currPath : elements.keySet()) { @@ -192,12 +204,16 @@ public class TreeTestResult implements TestResult, StructureAware, } } - public Map getRootTags() { - return rootTags; + public Map getAttributes() { + return attributes; + } + + public void setAttributes(Map attributes) { + this.attributes = attributes; } - public void setRootTags(Map rootTags) { - this.rootTags = rootTags; + public void setWarnIfAlreadyClosed(Boolean warnIfAlreadyClosed) { + this.warnIfAlreadyClosed = warnIfAlreadyClosed; } }