package org.argeo.slc.core.test;\r
\r
-import java.io.IOException;\r
-import java.io.PrintWriter;\r
-import java.io.StringReader;\r
-import java.io.StringWriter;\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.commons.io.IOUtils;\r
-\r
/**\r
* <p>\r
* Basic implementation of a result part, implementing the standard three status\r
private Integer status = ERROR;\r
private String message;\r
private String exceptionMessage;\r
- private List<String> exceptionStackLines = new Vector<String>();\r
\r
public SimpleResultPart() {\r
}\r
if (exception == null)\r
return;\r
\r
- this.exceptionMessage = exception.getMessage();\r
-\r
- StringWriter writer = null;\r
- StringReader reader = null;\r
- try {\r
- writer = new StringWriter();\r
- exception.printStackTrace(new PrintWriter(writer));\r
- reader = new StringReader(writer.toString());\r
- exceptionStackLines = new Vector<String>(IOUtils.readLines(reader));\r
- } catch (IOException e) {\r
- // silent\r
- } finally {\r
- IOUtils.closeQuietly(writer);\r
- IOUtils.closeQuietly(reader);\r
+ StringBuffer buf = new StringBuffer("");\r
+ buf.append(exception.toString());\r
+ buf.append('\n');\r
+ for (StackTraceElement elem : exception.getStackTrace()) {\r
+ buf.append('\t').append(elem.toString()).append('\n');\r
+ }\r
+\r
+ if (exception.getCause() != null)\r
+ addRootCause(buf, exception.getCause());\r
+\r
+ this.exceptionMessage = buf.toString();\r
+ }\r
+\r
+ protected void addRootCause(StringBuffer buf, Throwable cause) {\r
+ if (cause == null)\r
+ return;\r
+\r
+ buf.append("Caused by: " + cause.getMessage());\r
+ for (StackTraceElement elem : cause.getStackTrace()) {\r
+ buf.append('\t').append(elem.toString()).append('\n');\r
+ }\r
+\r
+ if (cause.getCause() != null) {\r
+ addRootCause(buf, cause.getCause());\r
}\r
}\r
\r
testRunUuid = testRun.getUuid();\r
}\r
\r
- public List<String> getExceptionStackLines() {\r
- return exceptionStackLines;\r
- }\r
-\r
- public void setExceptionStackLines(List<String> exceptionStackLines) {\r
- this.exceptionStackLines = exceptionStackLines;\r
- }\r
-\r
public void setExceptionMessage(String exceptionMessage) {\r
this.exceptionMessage = exceptionMessage;\r
}\r