X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Ftest%2FSimpleResultPart.java;h=e114e1f6d15c34b7eb68aa4dd8e13cfb9d0813cf;hb=7ffec52c590ce511b476f55be4ad123418268aa0;hp=543cc98bb89849cefbbe5b626205fdd169daefdf;hpb=62e442adb36b006627b17061864dfa4edde0a99a;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java index 543cc98bb..e114e1f6d 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java @@ -1,14 +1,5 @@ package org.argeo.slc.core.test; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringReader; -import java.io.StringWriter; -import java.util.List; -import java.util.Vector; - -import org.apache.commons.io.IOUtils; - /** *

* Basic implementation of a result part, implementing the standard three status @@ -29,7 +20,6 @@ public class SimpleResultPart implements TestResultPart, TestStatus, private Integer status = ERROR; private String message; private String exceptionMessage; - private List exceptionStackLines = new Vector(); public SimpleResultPart() { } @@ -68,20 +58,30 @@ public class SimpleResultPart implements TestResultPart, TestStatus, if (exception == null) return; - this.exceptionMessage = exception.getMessage(); - - StringWriter writer = null; - StringReader reader = null; - try { - writer = new StringWriter(); - exception.printStackTrace(new PrintWriter(writer)); - reader = new StringReader(writer.toString()); - exceptionStackLines = new Vector(IOUtils.readLines(reader)); - } catch (IOException e) { - // silent - } finally { - IOUtils.closeQuietly(writer); - IOUtils.closeQuietly(reader); + StringBuffer buf = new StringBuffer(""); + buf.append(exception.toString()); + buf.append('\n'); + for (StackTraceElement elem : exception.getStackTrace()) { + buf.append('\t').append(elem.toString()).append('\n'); + } + + if (exception.getCause() != null) + addRootCause(buf, exception.getCause()); + + this.exceptionMessage = buf.toString(); + } + + protected void addRootCause(StringBuffer buf, Throwable cause) { + if (cause == null) + return; + + buf.append("Caused by: " + cause.getMessage()); + for (StackTraceElement elem : cause.getStackTrace()) { + buf.append('\t').append(elem.toString()).append('\n'); + } + + if (cause.getCause() != null) { + addRootCause(buf, cause.getCause()); } } @@ -121,14 +121,6 @@ public class SimpleResultPart implements TestResultPart, TestStatus, testRunUuid = testRun.getUuid(); } - public List getExceptionStackLines() { - return exceptionStackLines; - } - - public void setExceptionStackLines(List exceptionStackLines) { - this.exceptionStackLines = exceptionStackLines; - } - public void setExceptionMessage(String exceptionMessage) { this.exceptionMessage = exceptionMessage; }