]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java
Modular distributions
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / test / SimpleResultPart.java
1 package org.argeo.slc.core.test;
2
3 import org.argeo.slc.test.TestResultPart;
4 import org.argeo.slc.test.TestRun;
5 import org.argeo.slc.test.TestRunAware;
6 import org.argeo.slc.test.TestStatus;
7
8 /**
9 * <p>
10 * Basic implementation of a result part, implementing the standard three status
11 * approach for test results.
12 * </p>
13 *
14 * @see TestStatus
15 */
16 public class SimpleResultPart implements TestResultPart, TestStatus,
17 TestRunAware {
18
19 private Long tid;
20
21 private String testRunUuid;
22
23 /** The status. Default to ERROR since it should always be explicitely set. */
24 private Integer status = ERROR;
25 private String message;
26 private String exceptionMessage;
27
28 public SimpleResultPart() {
29 }
30
31 public SimpleResultPart(Integer status, String message) {
32 this(status, message, null);
33 }
34
35 public SimpleResultPart(Integer status, String message, Exception exception) {
36 this.status = status;
37 this.message = message;
38 setException(exception);
39 }
40
41 public String getMessage() {
42 return message;
43 }
44
45 public void setMessage(String message) {
46 this.message = message;
47 }
48
49 public void setStatus(Integer status) {
50 this.status = status;
51 }
52
53 public Integer getStatus() {
54 return status;
55 }
56
57 public String getExceptionMessage() {
58 return exceptionMessage;
59 }
60
61 public void setException(Exception exception) {
62 if (exception == null)
63 return;
64
65 StringBuffer buf = new StringBuffer("");
66 buf.append(exception.toString());
67 buf.append('\n');
68 for (StackTraceElement elem : exception.getStackTrace()) {
69 buf.append('\t').append(elem.toString()).append('\n');
70 }
71
72 if (exception.getCause() != null)
73 addRootCause(buf, exception.getCause());
74
75 this.exceptionMessage = buf.toString();
76 }
77
78 protected void addRootCause(StringBuffer buf, Throwable cause) {
79 if (cause == null)
80 return;
81
82 buf.append("Caused by: " + cause.getMessage());
83 for (StackTraceElement elem : cause.getStackTrace()) {
84 buf.append('\t').append(elem.toString()).append('\n');
85 }
86
87 if (cause.getCause() != null) {
88 addRootCause(buf, cause.getCause());
89 }
90 }
91
92 @Override
93 public String toString() {
94 StringBuffer buf = new StringBuffer("");
95 buf.append(SlcTestUtils.statusToString(status));
96 if (status == PASSED || status == FAILED) {
97 buf.append(' ');
98 } else if (status == ERROR) {
99 buf.append(" ");
100 }
101 buf.append(message);
102 return buf.toString();
103 }
104
105 /** @deprecated */
106 Long getTid() {
107 return tid;
108 }
109
110 /** @deprecated */
111 void setTid(Long tid) {
112 this.tid = tid;
113 }
114
115 public String getTestRunUuid() {
116 return testRunUuid;
117 }
118
119 /** For ORM */
120 public void setTestRunUuid(String testRunUuid) {
121 this.testRunUuid = testRunUuid;
122 }
123
124 public void notifyTestRun(TestRun testRun) {
125 testRunUuid = testRun.getUuid();
126 }
127
128 public void setExceptionMessage(String exceptionMessage) {
129 this.exceptionMessage = exceptionMessage;
130 }
131
132 }