]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.agent/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java
Introduce agent project
[gpl/argeo-slc.git] / org.argeo.slc.agent / src / main / java / org / argeo / slc / core / test / SimpleResultPart.java
diff --git a/org.argeo.slc.agent/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java b/org.argeo.slc.agent/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java
new file mode 100644 (file)
index 0000000..e114e1f
--- /dev/null
@@ -0,0 +1,128 @@
+package org.argeo.slc.core.test;\r
+\r
+/**\r
+ * <p>\r
+ * Basic implementation of a result part, implementing the standard three status\r
+ * approach for test results.\r
+ * </p>\r
+ * \r
+ * @see TestStatus\r
+ */\r
+public class SimpleResultPart implements TestResultPart, TestStatus,\r
+               TestRunAware {\r
+\r
+       /** @deprecated */\r
+       private Long tid;\r
+\r
+       private String testRunUuid;\r
+\r
+       /** The status. Default to ERROR since it should always be explicitely set. */\r
+       private Integer status = ERROR;\r
+       private String message;\r
+       private String exceptionMessage;\r
+\r
+       public SimpleResultPart() {\r
+       }\r
+\r
+       public SimpleResultPart(Integer status, String message) {\r
+               this(status, message, null);\r
+       }\r
+\r
+       public SimpleResultPart(Integer status, String message, Exception exception) {\r
+               this.status = status;\r
+               this.message = message;\r
+               setException(exception);\r
+       }\r
+\r
+       public String getMessage() {\r
+               return message;\r
+       }\r
+\r
+       public void setMessage(String message) {\r
+               this.message = message;\r
+       }\r
+\r
+       public void setStatus(Integer status) {\r
+               this.status = status;\r
+       }\r
+\r
+       public Integer getStatus() {\r
+               return status;\r
+       }\r
+\r
+       public String getExceptionMessage() {\r
+               return exceptionMessage;\r
+       }\r
+\r
+       public void setException(Exception exception) {\r
+               if (exception == null)\r
+                       return;\r
+\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
+       @Override\r
+       public String toString() {\r
+               StringBuffer buf = new StringBuffer("");\r
+               buf.append(SlcTestUtils.statusToString(status));\r
+               if (status == PASSED || status == FAILED) {\r
+                       buf.append(' ');\r
+               } else if (status == ERROR) {\r
+                       buf.append("  ");\r
+               }\r
+               buf.append(message);\r
+               return buf.toString();\r
+       }\r
+\r
+       /** @deprecated */\r
+       Long getTid() {\r
+               return tid;\r
+       }\r
+\r
+       /** @deprecated */\r
+       void setTid(Long tid) {\r
+               this.tid = tid;\r
+       }\r
+\r
+       public String getTestRunUuid() {\r
+               return testRunUuid;\r
+       }\r
+\r
+       /** For ORM */\r
+       public void setTestRunUuid(String testRunUuid) {\r
+               this.testRunUuid = testRunUuid;\r
+       }\r
+\r
+       public void notifyTestRun(TestRun testRun) {\r
+               testRunUuid = testRun.getUuid();\r
+       }\r
+\r
+       public void setExceptionMessage(String exceptionMessage) {\r
+               this.exceptionMessage = exceptionMessage;\r
+       }\r
+\r
+}\r