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=db5f222287fbeb4d76d8e1519fe3caca7191938b;hb=7a8f034133c1112e187e2a2bfd2c56a8d2452345;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..db5f22228 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 @@ -20,7 +11,6 @@ import org.apache.commons.io.IOUtils; public class SimpleResultPart implements TestResultPart, TestStatus, TestRunAware { - /** @deprecated */ private Long tid; private String testRunUuid; @@ -29,7 +19,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 +57,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 +120,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; }