Class AbstractValidatingInterceptor
java.lang.Object
org.springframework.xml.transform.TransformerObjectSupport
org.springframework.ws.client.support.interceptor.AbstractValidatingInterceptor
- All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean
,ClientInterceptor
- Direct Known Subclasses:
PayloadValidatingInterceptor
public abstract class AbstractValidatingInterceptor
extends org.springframework.xml.transform.TransformerObjectSupport
implements ClientInterceptor, org.springframework.beans.factory.InitializingBean
Abstract base class for
ClientInterceptor
implementations that validate part of the message using a schema.
The exact message part is determined by the getValidationRequestSource(WebServiceMessage)
and
getValidationResponseSource(WebServiceMessage)
template methods.
By default, only the request message is validated, but this behaviour can be changed using the
validateRequest
and validateResponse
properties.
- Since:
- 1.5.4
- Author:
- Arjen Poutsma
- See Also:
-
Field Summary
Fields inherited from class org.springframework.xml.transform.TransformerObjectSupport
logger
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
afterCompletion
(MessageContext messageContext, Exception ex) Does nothing by default.void
org.springframework.core.io.Resource[]
Returns the schema resources to use for validation.protected abstract Source
Abstract template method that returns the part of the request message that is to be validated.protected abstract Source
getValidationResponseSource
(WebServiceMessage response) Abstract template method that returns the part of the response message that is to be validated.boolean
handleFault
(MessageContext messageContext) Does nothing by default.boolean
handleRequest
(MessageContext messageContext) Validates the request message in the given message context.protected boolean
handleRequestValidationErrors
(MessageContext messageContext, SAXParseException[] errors) Template method that is called when the request message contains validation errors.boolean
handleResponse
(MessageContext messageContext) Validates the response message in the given message context.protected boolean
handleResponseValidationErrors
(MessageContext messageContext, SAXParseException[] errors) Template method that is called when the response message contains validation errors.void
setSchema
(org.springframework.core.io.Resource schema) Sets the schema resource to use for validation.void
setSchemaLanguage
(String schemaLanguage) Sets the schema language.void
setSchemas
(org.springframework.core.io.Resource... schemas) Sets the schema resources to use for validation.void
setValidateRequest
(boolean validateRequest) Indicates whether the request should be validated against the schema.void
setValidateResponse
(boolean validateResponse) Indicates whether the response should be validated against the schema.void
setXsdSchema
(org.springframework.xml.xsd.XsdSchema schema) Sets theXsdSchema
to use for validation.void
setXsdSchemaCollection
(org.springframework.xml.xsd.XsdSchemaCollection schemaCollection) Sets theXsdSchemaCollection
to use for validation.Methods inherited from class org.springframework.xml.transform.TransformerObjectSupport
createTransformer, getTransformerFactory, newTransformerFactory, setTransformerFactoryClass, transform
-
Constructor Details
-
AbstractValidatingInterceptor
public AbstractValidatingInterceptor()
-
-
Method Details
-
getSchemaLanguage
-
setSchemaLanguage
Sets the schema language. Default is the W3C XML Schema:http://www.w3.org/2001/XMLSchema"
.- See Also:
-
XmlValidatorFactory.SCHEMA_W3C_XML
XmlValidatorFactory.SCHEMA_RELAX_NG
-
getSchemas
public org.springframework.core.io.Resource[] getSchemas()Returns the schema resources to use for validation. -
setSchema
public void setSchema(org.springframework.core.io.Resource schema) Sets the schema resource to use for validation. Setting this property,xsdSchemaCollection
,schema
, orschemas
is required. -
setSchemas
public void setSchemas(org.springframework.core.io.Resource... schemas) Sets the schema resources to use for validation. Setting this property,xsdSchemaCollection
,schema
, orschemas
is required. -
setXsdSchema
Sets theXsdSchema
to use for validation. Setting this property,xsdSchemaCollection
,schema
, orschemas
is required.- Parameters:
schema
- the xsd schema to use- Throws:
IOException
- in case of I/O errors
-
setXsdSchemaCollection
public void setXsdSchemaCollection(org.springframework.xml.xsd.XsdSchemaCollection schemaCollection) throws IOException Sets theXsdSchemaCollection
to use for validation. Setting this property,xsdSchema
,schema
, orschemas
is required.- Parameters:
schemaCollection
- the xsd schema collection to use- Throws:
IOException
- in case of I/O errors
-
setValidateRequest
public void setValidateRequest(boolean validateRequest) Indicates whether the request should be validated against the schema. Default istrue
. -
setValidateResponse
public void setValidateResponse(boolean validateResponse) Indicates whether the response should be validated against the schema. Default isfalse
. -
afterPropertiesSet
- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
- Throws:
Exception
-
handleRequest
Validates the request message in the given message context. Validation only occurs ifvalidateRequest
is set totrue
, which is the default.Returns
true
if the request is valid, orfalse
if it isn't.- Specified by:
handleRequest
in interfaceClientInterceptor
- Parameters:
messageContext
- the message context- Returns:
true
if the message is valid;false
otherwise- Throws:
WebServiceClientException
- in case of errors- See Also:
-
handleRequestValidationErrors
protected boolean handleRequestValidationErrors(MessageContext messageContext, SAXParseException[] errors) Template method that is called when the request message contains validation errors.Default implementation logs all errors, and throws a
WebServiceValidationException
. Subclasses can override this method to customize this behavior.- Parameters:
messageContext
- the message contexterrors
- the validation errors- Returns:
true
to continue processing the request,false
otherwise
-
handleResponse
Validates the response message in the given message context. Validation only occurs ifvalidateResponse
is set totrue
, which is not the default.Returns
true
if the request is valid, orfalse
if it isn't.- Specified by:
handleResponse
in interfaceClientInterceptor
- Parameters:
messageContext
- the message context.- Returns:
true
if the response is valid;false
otherwise- Throws:
WebServiceClientException
- in case of errors- See Also:
-
handleResponseValidationErrors
protected boolean handleResponseValidationErrors(MessageContext messageContext, SAXParseException[] errors) throws WebServiceValidationException Template method that is called when the response message contains validation errors.Default implementation logs all errors, and returns
false
, i.e. do not cot continue to process the respone interceptor chain.- Parameters:
messageContext
- the message contexterrors
- the validation errors- Returns:
true
to continue the reponse interceptor chain,false
(the default) otherwise- Throws:
WebServiceValidationException
-
handleFault
Does nothing by default. Faults are not validated.- Specified by:
handleFault
in interfaceClientInterceptor
- Parameters:
messageContext
- contains the outgoing request message- Returns:
true
to continue processing of the request interceptors;false
to indicate blocking of the request endpoint chain- Throws:
WebServiceClientException
- in case of errors- See Also:
-
afterCompletion
public void afterCompletion(MessageContext messageContext, Exception ex) throws WebServiceClientException Does nothing by default.- Specified by:
afterCompletion
in interfaceClientInterceptor
- Parameters:
messageContext
- contains both request and response messages, the response should contains a Faultex
- exception thrown on handler execution, if any- Throws:
WebServiceClientException
- in case of errors
-
getValidationRequestSource
Abstract template method that returns the part of the request message that is to be validated.- Parameters:
request
- the request message- Returns:
- the part of the message that is to validated, or
null
not to validate anything
-
getValidationResponseSource
Abstract template method that returns the part of the response message that is to be validated.- Parameters:
response
- the response message- Returns:
- the part of the message that is to validated, or
null
not to validate anything
-