2 * Copyright (C) 2007-2012 Mathieu Baudier
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.slc
.ws
.test
.tree
;
18 import org
.apache
.commons
.logging
.Log
;
19 import org
.apache
.commons
.logging
.LogFactory
;
20 import org
.argeo
.slc
.core
.test
.tree
.TreeTestResult
;
21 import org
.argeo
.slc
.msg
.test
.tree
.CloseTreeTestResultRequest
;
22 import org
.argeo
.slc
.msg
.test
.tree
.CreateTreeTestResultRequest
;
23 import org
.argeo
.slc
.msg
.test
.tree
.ResultPartRequest
;
24 import org
.argeo
.slc
.test
.TestResultListener
;
25 import org
.argeo
.slc
.test
.TestResultPart
;
26 import org
.argeo
.slc
.ws
.client
.WebServiceUtils
;
27 import org
.springframework
.ws
.client
.WebServiceIOException
;
28 import org
.springframework
.ws
.client
.core
.WebServiceTemplate
;
29 import org
.springframework
.ws
.soap
.client
.SoapFaultClientException
;
31 public class WebServiceTreeTestResultNotifier
implements
32 TestResultListener
<TreeTestResult
> {
33 private WebServiceTemplate template
;
34 private Boolean onlyOnClose
= false;
36 private Log log
= LogFactory
.getLog(getClass());
38 private Boolean cannotConnect
= false;
40 public void resultPartAdded(TreeTestResult testResult
,
41 TestResultPart testResultPart
) {
49 if (testResult
.getResultParts().size() == 1
50 && testResult
.getResultParts().values().iterator().next()
51 .getParts().size() == 1) {
52 CreateTreeTestResultRequest req
= new CreateTreeTestResultRequest(
55 if (log
.isDebugEnabled())
56 log
.debug("Send create result request for result "
57 + testResult
.getUuid());
59 WebServiceUtils
.marshalSendAndReceive(template
, req
);
61 ResultPartRequest req
= new ResultPartRequest(testResult
);
63 if (log
.isDebugEnabled())
64 log
.debug("Send result parts for result "
65 + testResult
.getUuid());
67 WebServiceUtils
.marshalSendAndReceive(template
, req
);
69 } catch (SoapFaultClientException e
) {
70 WebServiceUtils
.manageSoapException(e
);
72 } catch (WebServiceIOException e
) {
77 public void close(TreeTestResult testResult
) {
83 CreateTreeTestResultRequest req
= new CreateTreeTestResultRequest(
86 if (log
.isDebugEnabled())
87 log
.debug("Send create result request for result "
88 + testResult
.getUuid());
90 WebServiceUtils
.marshalSendAndReceive(template
, req
);
92 CloseTreeTestResultRequest req
= new CloseTreeTestResultRequest(
95 if (log
.isDebugEnabled())
96 log
.debug("Send close result request for result "
97 + testResult
.getUuid());
99 WebServiceUtils
.marshalSendAndReceive(template
, req
);
102 } catch (SoapFaultClientException e
) {
103 WebServiceUtils
.manageSoapException(e
);
104 } catch (WebServiceIOException e
) {
105 manageIoException(e
);
109 public void setTemplate(WebServiceTemplate template
) {
110 this.template
= template
;
113 public void setOnlyOnClose(Boolean onlyOnClose
) {
114 this.onlyOnClose
= onlyOnClose
;
117 protected void manageIoException(WebServiceIOException e
) {
118 if (!cannotConnect
) {
119 log
.error("Cannot connect to " + template
.getDefaultUri()
120 + ". Won't try again.", e
);
121 cannotConnect
= true;