Class HTTPSOAP11Encoder

All Implemented Interfaces:
Component, DestructableComponent, InitializableComponent, UnmodifiableComponent, MessageEncoder, HttpServletResponseMessageEncoder
Direct Known Subclasses:
HTTPSOAP11Encoder, HTTPSOAP11Encoder

public class HTTPSOAP11Encoder extends BaseHttpServletResponseXMLMessageEncoder
Basic SOAP 1.1 encoder for HTTP transport.
  • Field Details

  • Constructor Details

    • HTTPSOAP11Encoder

      public HTTPSOAP11Encoder()
      Constructor.
  • Method Details

    • prepareContext

      public void prepareContext() throws MessageEncodingException
      This method should prepare the message context by creating and populating any binding-specific data structures required in the MessageContext, prior to actually encoding.

      This method should be called after the MessageContext has been set, and before any binding-specific Handler or HandlerChains are invoked.

      Example: For a SOAP encoder, this method would create and store the basic SOAP Envelope structure in the message context, so that Handlers that are invoked have a place to which to add headers.

      This method may be a no-op if not required by the binding, or if the message type of the context implies that the binding-specific structures have already been created elsewhere (e.g. message-oriented code where the calling code already knows its SOAP, and is operating on the raw SOAP envelope anyway).

      . Default implementation is a no-op.
      Specified by:
      prepareContext in interface MessageEncoder
      Overrides:
      prepareContext in class AbstractMessageEncoder
      Throws:
      MessageEncodingException - if there is a problem preparing the message context for encoding
    • doEncode

      protected void doEncode() throws MessageEncodingException
      Performs the encoding logic. By the time this is called, this encoder has already been initialized and checked to ensure that it has not been destroyed.
      Specified by:
      doEncode in class AbstractMessageEncoder
      Throws:
      MessageEncodingException - thrown if there is a problem encoding the message
    • storeSOAPEnvelope

      protected void storeSOAPEnvelope(Envelope envelope)
      Store the constructed SOAP envelope in the message context for later encoding.
      Parameters:
      envelope - the SOAP envelope
    • getSOAPEnvelope

      protected Envelope getSOAPEnvelope()
      Retrieve the previously stored SOAP envelope from the message context.
      Returns:
      the previously stored SOAP envelope
    • buildAndStoreSOAPMessage

      protected void buildAndStoreSOAPMessage(@Nonnull XMLObject payload)
      Builds the SOAP message to be encoded.
      Parameters:
      payload - body of the SOAP message
    • prepareHttpServletResponse

      protected void prepareHttpServletResponse() throws MessageEncodingException

      This implementation performs the following actions on the context's HttpServletResponse:

      1. Adds the HTTP header: "Cache-control: no-cache, no-store"
      2. Adds the HTTP header: "Pragma: no-cache"
      3. Sets the character encoding to: "UTF-8"
      4. Sets the content type to: "text/xml"
      5. Sets the SOAPAction HTTP header the value returned by getSOAPAction(), if that returns non-null.

      Subclasses should NOT set the SOAPAction HTTP header in this method. Instead, they should override the method getSOAPAction().

      Throws:
      MessageEncodingException - thrown if there is a problem preprocessing the transport
    • getSOAPAction

      protected String getSOAPAction()
      Determine the value of the SOAPAction HTTP header to send.

      The default behavior is to return the value of the SOAP Envelope's WS-Addressing Action header, if present.

      Returns:
      a SOAPAction HTTP header URI value
    • getHTTPResponseStatusCode

      protected int getHTTPResponseStatusCode()
      Get the HTTP response status code to return.
      Returns:
      the HTTP response status code
    • getMessageToLog

      protected XMLObject getMessageToLog()
      Get the XMLObject which will be logged as the protocol message.
      Overrides:
      getMessageToLog in class BaseHttpServletResponseXMLMessageEncoder
      Returns:
      the XMLObject message considered to be the protocol message for logging purposes