package org.argeo.slc.core.test;\r
\r
-\r
/**\r
* <p>\r
* Basic implementation of a result part, implementing the standard three status\r
if (exception == null)\r
return;\r
\r
- //this.exceptionMessage = exception.getMessage();\r
-\r
StringBuffer buf = new StringBuffer("");\r
- buf.append(exception.getMessage());\r
+ buf.append(exception.toString());\r
buf.append('\n');\r
- for(StackTraceElement elem : exception.getStackTrace()){\r
- buf.append(elem.toString()).append('\n');\r
+ for (StackTraceElement elem : exception.getStackTrace()) {\r
+ buf.append('\t').append(elem.toString()).append('\n');\r
}\r
- \r
+\r
+ if (exception.getCause() != null)\r
+ addRootCause(buf, exception.getCause());\r
+\r
this.exceptionMessage = buf.toString();\r
- \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
- }*/\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
@Override\r