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 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:
  • Constructor Details

    • AbstractValidatingInterceptor

      public AbstractValidatingInterceptor()
  • Method Details

    • getSchemaLanguage

      public String getSchemaLanguage()
    • setSchemaLanguage

      public void setSchemaLanguage(String schemaLanguage)
      Sets the schema language. Default is the W3C XML Schema: http://www.w3.org/2001/XMLSchema".
      See Also:
    • 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, or schemas 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, or schemas is required.
    • setXsdSchema

      public void setXsdSchema(XsdSchema schema) throws IOException
      Sets the XsdSchema to use for validation. Setting this property, xsdSchemaCollection, schema, or schemas is required.
      Parameters:
      schema - the xsd schema to use
      Throws:
      IOException - in case of I/O errors
    • setXsdSchemaCollection

      public void setXsdSchemaCollection(XsdSchemaCollection schemaCollection) throws IOException
      Sets the XsdSchemaCollection to use for validation. Setting this property, xsdSchema, schema, or schemas 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 is true.
    • setValidateResponse

      public void setValidateResponse(boolean validateResponse)
      Indicates whether the response should be validated against the schema. Default is false.
    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception
    • handleRequest

      public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException
      Validates the request message in the given message context. Validation only occurs if validateRequest is set to true, which is the default.

      Returns true if the request is valid, or false if it isn't.

      Specified by:
      handleRequest in interface ClientInterceptor
      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 context
      errors - the validation errors
      Returns:
      true to continue processing the request, false otherwise
    • handleResponse

      public boolean handleResponse(MessageContext messageContext) throws WebServiceClientException
      Validates the response message in the given message context. Validation only occurs if validateResponse is set to true, which is not the default.

      Returns true if the request is valid, or false if it isn't.

      Specified by:
      handleResponse in interface ClientInterceptor
      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 context
      errors - the validation errors
      Returns:
      true to continue the reponse interceptor chain, false (the default) otherwise
      Throws:
      WebServiceValidationException
    • handleFault

      public boolean handleFault(MessageContext messageContext) throws WebServiceClientException
      Does nothing by default. Faults are not validated.
      Specified by:
      handleFault in interface ClientInterceptor
      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 interface ClientInterceptor
      Parameters:
      messageContext - contains both request and response messages, the response should contains a Fault
      ex - exception thrown on handler execution, if any
      Throws:
      WebServiceClientException - in case of errors
    • getValidationRequestSource

      protected abstract Source getValidationRequestSource(WebServiceMessage request)
      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

      protected abstract Source getValidationResponseSource(WebServiceMessage response)
      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