--- /dev/null
+package org.argeo.slc.core.test.tree;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.test.TestResultListener;\r
+import org.argeo.slc.core.test.TestResultPart;\r
+import org.argeo.slc.core.test.TestStatus;\r
+\r
+/**\r
+ * Listener logging tree-based test results to the underlying logging system.\r
+ * \r
+ * @see TreeTestResult\r
+ * \r
+ */\r
+public class TreeTestResultLogger implements TestResultListener<TreeTestResult> {\r
+\r
+ private static Log log = LogFactory.getLog(TreeTestResultLogger.class);\r
+\r
+ private Boolean logExceptionMessages = false;\r
+\r
+ public void resultPartAdded(TreeTestResult testResult,\r
+ TestResultPart testResultPart) {\r
+ String msg = testResultPart + " - " + testResult.getUuid() + ":"\r
+ + testResult.getCurrentPath();\r
+ if (testResultPart.getStatus().equals(TestStatus.PASSED)) {\r
+ log.info(msg);\r
+ } else if (testResultPart.getStatus().equals(TestStatus.FAILED)) {\r
+ log.warn(msg);\r
+ } else if (testResultPart.getStatus().equals(TestStatus.ERROR)) {\r
+ if (logExceptionMessages)\r
+ msg = msg + "\n" + testResultPart.getExceptionMessage();\r
+\r
+ log.error(msg);\r
+\r
+ if (!logExceptionMessages || log.isDebugEnabled())\r
+ log.debug(testResultPart.getExceptionMessage());\r
+\r
+ } else {\r
+ log.error("Unknow test status: " + msg);\r
+ }\r
+ }\r
+\r
+ public void close(TreeTestResult testResult) {\r
+ log.info("Test result " + testResult.getUuid() + " closed.");\r
+ }\r
+\r
+ public void setLogExceptionMessages(Boolean logExceptionMessages) {\r
+ this.logExceptionMessages = logExceptionMessages;\r
+ }\r
+\r
+}\r