+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.List;\r
+\r
+import org.springframework.ws.client.core.WebServiceTemplate;\r
+import org.springframework.ws.soap.client.SoapFaultClientException;\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.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.msg.process.SlcExecutionRequest;\r
+import org.argeo.slc.msg.process.SlcExecutionStepsRequest;\r
+import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;\r
+import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;\r
+import org.argeo.slc.msg.test.tree.ResultPartRequest;\r
+import org.argeo.slc.ws.client.WebServiceUtils;\r
+\r
+public class WebServiceSlcExecutionNotifier implements\r
+ TestResultListener<TreeTestResult> {\r
+ private WebServiceTemplate template;\r
+ private Boolean onlyOnClose = false;\r
+\r
+ private Log log = LogFactory.getLog(getClass());\r
+\r
+ public void resultPartAdded(TreeTestResult testResult,\r
+ TestResultPart testResultPart) {\r
+ try {\r
+ if (testResult.getResultParts().size() == 1) {\r
+ CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
+ testResult);\r
+\r
+ if (log.isDebugEnabled())\r
+ log.debug("Send create result request for result "\r
+ + testResult.getUuid());\r
+\r
+ WebServiceUtils.marshalSendAndReceive(template, req);\r
+ } else {\r
+ ResultPartRequest req = new ResultPartRequest(testResult);\r
+\r
+ if (log.isDebugEnabled())\r
+ log.debug("Send result parts for result "\r
+ + testResult.getUuid());\r
+\r
+ WebServiceUtils.marshalSendAndReceive(template, req);\r
+ }\r
+ } catch (SoapFaultClientException e) {\r
+ WebServiceUtils.manageSoapException(e);\r
+ }\r
+ }\r
+\r
+ public void close(TreeTestResult testResult) {\r
+ try {\r
+ if (onlyOnClose) {\r
+ CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
+ testResult);\r
+\r
+ if (log.isDebugEnabled())\r
+ log.debug("Send create result request for result "\r
+ + testResult.getUuid());\r
+\r
+ WebServiceUtils.marshalSendAndReceive(template, req);\r
+ } else {\r
+ CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(\r
+ testResult);\r
+\r
+ if (log.isDebugEnabled())\r
+ log.debug("Send close result request for result "\r
+ + testResult.getUuid());\r
+\r
+ WebServiceUtils.marshalSendAndReceive(template, req);\r
+\r
+ }\r
+ } catch (SoapFaultClientException e) {\r
+ WebServiceUtils.manageSoapException(e);\r
+ }\r
+\r
+ }\r
+\r
+ public void setTemplate(WebServiceTemplate template) {\r
+ this.template = template;\r
+ }\r
+\r
+ public void setOnlyOnClose(Boolean onlyOnClose) {\r
+ this.onlyOnClose = onlyOnClose;\r
+ }\r
+}\r