]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/ValidatingClientInterceptor.java
Various fixes so that SLC example works again
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / ws / client / ValidatingClientInterceptor.java
1 package org.argeo.slc.ws.client;
2
3 import java.io.IOException;
4
5 import javax.xml.transform.Source;
6
7 import junit.framework.TestCase;
8
9 import org.springframework.ws.client.WebServiceClientException;
10 import org.springframework.ws.client.WebServiceIOException;
11 import org.springframework.ws.client.support.interceptor.ClientInterceptor;
12 import org.springframework.ws.context.MessageContext;
13 import org.springframework.xml.validation.XmlValidator;
14 import org.xml.sax.SAXParseException;
15
16 import org.apache.commons.logging.Log;
17 import org.apache.commons.logging.LogFactory;
18
19 public class ValidatingClientInterceptor implements ClientInterceptor {
20 private final static Log log = LogFactory
21 .getLog(ValidatingClientInterceptor.class);
22
23 private Boolean validateRequest = true;
24 private Boolean validateResponse = false;
25 private XmlValidator validator = null;
26
27 public boolean handleFault(MessageContext messageContext)
28 throws WebServiceClientException {
29 return true;
30 }
31
32 public boolean handleRequest(MessageContext messageContext)
33 throws WebServiceClientException {
34 if (validateRequest) {
35 if (messageContext.getRequest() == null)
36 return true;
37
38 Source source = messageContext.getRequest().getPayloadSource();
39 try {
40 return validate(source);
41 } catch (IOException e) {
42 throw new WebServiceIOException("Cannot validate request", e);
43 }
44 } else {
45 return true;
46 }
47 }
48
49 public boolean handleResponse(MessageContext messageContext)
50 throws WebServiceClientException {
51 if (validateResponse) {
52 if (messageContext.getResponse() == null)
53 return true;
54
55 Source source = messageContext.getResponse().getPayloadSource();
56 try {
57 return validate(source);
58 } catch (IOException e) {
59 throw new WebServiceIOException("Cannot validate response", e);
60 }
61 } else {
62 return true;
63 }
64 }
65
66 protected boolean validate(Source source) throws IOException {
67 SAXParseException[] exceptions = validator.validate(source);
68 if (exceptions.length != 0) {
69 for (SAXParseException ex : exceptions) {
70 log.error(ex.getMessage());
71 }
72 return false;
73 } else {
74 return true;
75 }
76 }
77
78 public void setValidateRequest(Boolean validateRequest) {
79 this.validateRequest = validateRequest;
80 }
81
82 public void setValidateResponse(Boolean validateResponse) {
83 this.validateResponse = validateResponse;
84 }
85
86 public void setValidator(XmlValidator validator) {
87 this.validator = validator;
88 }
89
90 }