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=da0ddcbebfcde8db0954104ba40bef26a40d8bba;hpb=c2107fa018f358d94865227bc19a5691403178cc;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 da0ddcbeb..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 @@ -8,15 +8,17 @@ package org.argeo.slc.core.test; * * @see TestStatus */ -public class SimpleResultPart implements TestResultPart, TestStatus { +public class SimpleResultPart implements TestResultPart, TestStatus, + TestRunAware { - /** For ORM */ private Long tid; + private String testRunUuid; + /** The status. Default to ERROR since it should always be explicitely set. */ private Integer status = ERROR; private String message; - private Exception exception; + private String exceptionMessage; public SimpleResultPart() { } @@ -28,7 +30,7 @@ public class SimpleResultPart implements TestResultPart, TestStatus { public SimpleResultPart(Integer status, String message, Exception exception) { this.status = status; this.message = message; - this.exception = exception; + setException(exception); } public String getMessage() { @@ -47,12 +49,39 @@ public class SimpleResultPart implements TestResultPart, TestStatus { return status; } - public Exception getException() { - return exception; + public String getExceptionMessage() { + return exceptionMessage; } public void setException(Exception exception) { - this.exception = exception; + if (exception == null) + return; + + 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()); + } } @Override @@ -65,18 +94,34 @@ public class SimpleResultPart implements TestResultPart, TestStatus { buf.append(" "); } buf.append(message); - if (exception != null) { - buf.append("(").append(exception.getMessage()).append(")"); - } return buf.toString(); } + /** @deprecated */ Long getTid() { return tid; } + /** @deprecated */ void setTid(Long tid) { this.tid = tid; } + public String getTestRunUuid() { + return testRunUuid; + } + + /** For ORM */ + public void setTestRunUuid(String testRunUuid) { + this.testRunUuid = testRunUuid; + } + + public void notifyTestRun(TestRun testRun) { + testRunUuid = testRun.getUuid(); + } + + public void setExceptionMessage(String exceptionMessage) { + this.exceptionMessage = exceptionMessage; + } + }