]> 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 notifications to web services
[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 CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
31 testResult);
32
33 if (log.isDebugEnabled())
34 log.debug("Send create result request for result "
35 + testResult.getUuid());
36
37 WebServiceUtils.marshalSendAndReceive(template, req);
38 } else {
39 ResultPartRequest req = new ResultPartRequest(testResult);
40
41 if (log.isDebugEnabled())
42 log.debug("Send result parts for result "
43 + testResult.getUuid());
44
45 WebServiceUtils.marshalSendAndReceive(template, req);
46 }
47 } catch (SoapFaultClientException e) {
48 WebServiceUtils.manageSoapException(e);
49 }
50 }
51
52 public void close(TreeTestResult testResult) {
53 try {
54 if (onlyOnClose) {
55 CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
56 testResult);
57
58 if (log.isDebugEnabled())
59 log.debug("Send create result request for result "
60 + testResult.getUuid());
61
62 WebServiceUtils.marshalSendAndReceive(template, req);
63 } else {
64 CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(
65 testResult);
66
67 if (log.isDebugEnabled())
68 log.debug("Send close result request for result "
69 + testResult.getUuid());
70
71 WebServiceUtils.marshalSendAndReceive(template, req);
72
73 }
74 } catch (SoapFaultClientException e) {
75 WebServiceUtils.manageSoapException(e);
76 }
77
78 }
79
80 public void setTemplate(WebServiceTemplate template) {
81 this.template = template;
82 }
83
84 public void setOnlyOnClose(Boolean onlyOnClose) {
85 this.onlyOnClose = onlyOnClose;
86 }
87 }