1 package org
.argeo
.slc
.core
.test
.tree
;
3 import org
.springframework
.ws
.client
.WebServiceIOException
;
4 import org
.springframework
.ws
.client
.core
.WebServiceTemplate
;
5 import org
.springframework
.ws
.soap
.client
.SoapFaultClientException
;
7 import org
.apache
.commons
.logging
.Log
;
8 import org
.apache
.commons
.logging
.LogFactory
;
10 import org
.argeo
.slc
.core
.test
.TestResultListener
;
11 import org
.argeo
.slc
.core
.test
.TestResultPart
;
12 import org
.argeo
.slc
.msg
.test
.tree
.CloseTreeTestResultRequest
;
13 import org
.argeo
.slc
.msg
.test
.tree
.CreateTreeTestResultRequest
;
14 import org
.argeo
.slc
.msg
.test
.tree
.ResultPartRequest
;
15 import org
.argeo
.slc
.ws
.client
.WebServiceUtils
;
17 public class WebServiceTreeTestResultNotifier
implements
18 TestResultListener
<TreeTestResult
> {
19 private WebServiceTemplate template
;
20 private Boolean onlyOnClose
= false;
22 private Log log
= LogFactory
.getLog(getClass());
24 private Boolean cannotConnect
= false;
26 public void resultPartAdded(TreeTestResult testResult
,
27 TestResultPart testResultPart
) {
35 if (testResult
.getResultParts().size() == 1
36 && testResult
.getResultParts().values().iterator().next()
37 .getParts().size() == 1) {
38 CreateTreeTestResultRequest req
= new CreateTreeTestResultRequest(
41 if (log
.isDebugEnabled())
42 log
.debug("Send create result request for result "
43 + testResult
.getUuid());
45 WebServiceUtils
.marshalSendAndReceive(template
, req
);
47 ResultPartRequest req
= new ResultPartRequest(testResult
);
49 if (log
.isDebugEnabled())
50 log
.debug("Send result parts for result "
51 + testResult
.getUuid());
53 WebServiceUtils
.marshalSendAndReceive(template
, req
);
55 } catch (SoapFaultClientException e
) {
56 WebServiceUtils
.manageSoapException(e
);
58 } catch (WebServiceIOException e
) {
63 public void close(TreeTestResult testResult
) {
69 CreateTreeTestResultRequest req
= new CreateTreeTestResultRequest(
72 if (log
.isDebugEnabled())
73 log
.debug("Send create result request for result "
74 + testResult
.getUuid());
76 WebServiceUtils
.marshalSendAndReceive(template
, req
);
78 CloseTreeTestResultRequest req
= new CloseTreeTestResultRequest(
81 if (log
.isDebugEnabled())
82 log
.debug("Send close result request for result "
83 + testResult
.getUuid());
85 WebServiceUtils
.marshalSendAndReceive(template
, req
);
88 } catch (SoapFaultClientException e
) {
89 WebServiceUtils
.manageSoapException(e
);
90 } catch (WebServiceIOException e
) {
95 public void setTemplate(WebServiceTemplate template
) {
96 this.template
= template
;
99 public void setOnlyOnClose(Boolean onlyOnClose
) {
100 this.onlyOnClose
= onlyOnClose
;
103 protected void manageIoException(WebServiceIOException e
) {
104 if (!cannotConnect
) {
105 log
.error("Cannot connect to " + template
.getDefaultUri()
106 + ". Won't try again.", e
);
107 cannotConnect
= true;