1 package org
.argeo
.slc
.ws
.test
.tree
;
3 import org
.apache
.commons
.logging
.Log
;
4 import org
.apache
.commons
.logging
.LogFactory
;
5 import org
.argeo
.slc
.core
.test
.tree
.TreeTestResult
;
6 import org
.argeo
.slc
.msg
.test
.tree
.CloseTreeTestResultRequest
;
7 import org
.argeo
.slc
.msg
.test
.tree
.CreateTreeTestResultRequest
;
8 import org
.argeo
.slc
.msg
.test
.tree
.ResultPartRequest
;
9 import org
.argeo
.slc
.test
.TestResultListener
;
10 import org
.argeo
.slc
.test
.TestResultPart
;
11 import org
.argeo
.slc
.ws
.client
.WebServiceUtils
;
12 import org
.springframework
.ws
.client
.WebServiceIOException
;
13 import org
.springframework
.ws
.client
.core
.WebServiceTemplate
;
14 import org
.springframework
.ws
.soap
.client
.SoapFaultClientException
;
16 public class WebServiceTreeTestResultNotifier
implements
17 TestResultListener
<TreeTestResult
> {
18 private WebServiceTemplate template
;
19 private Boolean onlyOnClose
= false;
21 private Log log
= LogFactory
.getLog(getClass());
23 private Boolean cannotConnect
= false;
25 public void resultPartAdded(TreeTestResult testResult
,
26 TestResultPart testResultPart
) {
34 if (testResult
.getResultParts().size() == 1
35 && testResult
.getResultParts().values().iterator().next()
36 .getParts().size() == 1) {
37 CreateTreeTestResultRequest req
= new CreateTreeTestResultRequest(
40 if (log
.isDebugEnabled())
41 log
.debug("Send create result request for result "
42 + testResult
.getUuid());
44 WebServiceUtils
.marshalSendAndReceive(template
, req
);
46 ResultPartRequest req
= new ResultPartRequest(testResult
);
48 if (log
.isDebugEnabled())
49 log
.debug("Send result parts for result "
50 + testResult
.getUuid());
52 WebServiceUtils
.marshalSendAndReceive(template
, req
);
54 } catch (SoapFaultClientException e
) {
55 WebServiceUtils
.manageSoapException(e
);
57 } catch (WebServiceIOException e
) {
62 public void close(TreeTestResult testResult
) {
68 CreateTreeTestResultRequest req
= new CreateTreeTestResultRequest(
71 if (log
.isDebugEnabled())
72 log
.debug("Send create result request for result "
73 + testResult
.getUuid());
75 WebServiceUtils
.marshalSendAndReceive(template
, req
);
77 CloseTreeTestResultRequest req
= new CloseTreeTestResultRequest(
80 if (log
.isDebugEnabled())
81 log
.debug("Send close result request for result "
82 + testResult
.getUuid());
84 WebServiceUtils
.marshalSendAndReceive(template
, req
);
87 } catch (SoapFaultClientException e
) {
88 WebServiceUtils
.manageSoapException(e
);
89 } catch (WebServiceIOException e
) {
94 public void setTemplate(WebServiceTemplate template
) {
95 this.template
= template
;
98 public void setOnlyOnClose(Boolean onlyOnClose
) {
99 this.onlyOnClose
= onlyOnClose
;
102 protected void manageIoException(WebServiceIOException e
) {
103 if (!cannotConnect
) {
104 log
.error("Cannot connect to " + template
.getDefaultUri()
105 + ". Won't try again.", e
);
106 cannotConnect
= true;