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 * approach for test results. *

* * @see TestStatus */ public class SimpleResultPart implements TestResultPart, TestStatus, TestRunAware { /** @deprecated */ 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 String exceptionMessage; private List exceptionStackLines = new Vector(); public SimpleResultPart() { } public SimpleResultPart(Integer status, String message) { this(status, message, null); } public SimpleResultPart(Integer status, String message, Exception exception) { this.status = status; this.message = message; setException(exception); } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public void setStatus(Integer status) { this.status = status; } public Integer getStatus() { return status; } public String getExceptionMessage() { return exceptionMessage; } public void setException(Exception exception) { 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); } } @Override public String toString() { StringBuffer buf = new StringBuffer(""); buf.append(SlcTestUtils.statusToString(status)); if (status == PASSED || status == FAILED) { buf.append(' '); } else if (status == ERROR) { buf.append(" "); } buf.append(message); 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 List getExceptionStackLines() { return exceptionStackLines; } public void setExceptionStackLines(List exceptionStackLines) { this.exceptionStackLines = exceptionStackLines; } public void setExceptionMessage(String exceptionMessage) { this.exceptionMessage = exceptionMessage; } }