]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceTreeTestResultNotifier.java
Improve SlcExecution notifications
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / core / test / tree / WebServiceTreeTestResultNotifier.java
1 package org.argeo.slc.core.test.tree;
2
3 import org.springframework.ws.client.core.WebServiceTemplate;
4 import org.springframework.ws.soap.client.SoapFaultClientException;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8
9 import org.argeo.slc.core.test.TestResultListener;
10 import org.argeo.slc.core.test.TestResultPart;
11 import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
12 import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
13 import org.argeo.slc.msg.test.tree.ResultPartRequest;
14 import org.argeo.slc.ws.client.WebServiceUtils;
15
16 public class WebServiceTreeTestResultNotifier implements
17 TestResultListener<TreeTestResult> {
18 private WebServiceTemplate template;
19 private Boolean onlyOnClose = false;
20
21 private Log log = LogFactory.getLog(getClass());
22
23 public void resultPartAdded(TreeTestResult testResult,
24 TestResultPart testResultPart) {
25 if (onlyOnClose)
26 return;
27
28 try {
29 if (testResult.getResultParts().size() == 1
30 && testResult.getResultParts().values().iterator().next()
31 .getParts().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 }