]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceSlcExecutionNotifier.java
Add web service notification of results.
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / core / test / tree / WebServiceSlcExecutionNotifier.java
1 package org.argeo.slc.core.test.tree;
2
3 import java.util.List;
4
5 import org.springframework.ws.client.core.WebServiceTemplate;
6 import org.springframework.ws.soap.client.SoapFaultClientException;
7
8 import org.apache.commons.logging.Log;
9 import org.apache.commons.logging.LogFactory;
10
11 import org.argeo.slc.core.test.TestResultListener;
12 import org.argeo.slc.core.test.TestResultPart;
13 import org.argeo.slc.dao.test.tree.TreeTestResultDao;
14 import org.argeo.slc.msg.process.SlcExecutionRequest;
15 import org.argeo.slc.msg.process.SlcExecutionStepsRequest;
16 import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
17 import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
18 import org.argeo.slc.msg.test.tree.ResultPartRequest;
19 import org.argeo.slc.ws.client.WebServiceUtils;
20
21 public class WebServiceSlcExecutionNotifier implements
22 TestResultListener<TreeTestResult> {
23 private WebServiceTemplate template;
24 private Boolean onlyOnClose = false;
25
26 private Log log = LogFactory.getLog(getClass());
27
28 public void resultPartAdded(TreeTestResult testResult,
29 TestResultPart testResultPart) {
30 try {
31 if (testResult.getResultParts().size() == 1) {
32 CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
33 testResult);
34
35 if (log.isDebugEnabled())
36 log.debug("Send create result request for result "
37 + testResult.getUuid());
38
39 WebServiceUtils.marshalSendAndReceive(template, req);
40 } else {
41 ResultPartRequest req = new ResultPartRequest(testResult);
42
43 if (log.isDebugEnabled())
44 log.debug("Send result parts for result "
45 + testResult.getUuid());
46
47 WebServiceUtils.marshalSendAndReceive(template, req);
48 }
49 } catch (SoapFaultClientException e) {
50 WebServiceUtils.manageSoapException(e);
51 }
52 }
53
54 public void close(TreeTestResult testResult) {
55 try {
56 if (onlyOnClose) {
57 CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
58 testResult);
59
60 if (log.isDebugEnabled())
61 log.debug("Send create result request for result "
62 + testResult.getUuid());
63
64 WebServiceUtils.marshalSendAndReceive(template, req);
65 } else {
66 CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(
67 testResult);
68
69 if (log.isDebugEnabled())
70 log.debug("Send close result request for result "
71 + testResult.getUuid());
72
73 WebServiceUtils.marshalSendAndReceive(template, req);
74
75 }
76 } catch (SoapFaultClientException e) {
77 WebServiceUtils.manageSoapException(e);
78 }
79
80 }
81
82 public void setTemplate(WebServiceTemplate template) {
83 this.template = template;
84 }
85
86 public void setOnlyOnClose(Boolean onlyOnClose) {
87 this.onlyOnClose = onlyOnClose;
88 }
89 }