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

    • log

      @Nonnull private final org.slf4j.Logger log
      Class logger.
    • envBuilder

      @Nonnull private SOAPObjectBuilder<Envelope> envBuilder
      SOAP Envelope builder.
    • bodyBuilder

      @Nonnull private SOAPObjectBuilder<Body> bodyBuilder
      SOAP Body builder.
  • 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(@Nullable Envelope envelope)
      Store the constructed SOAP envelope in the message context for later encoding.
      Parameters:
      envelope - the SOAP envelope
    • getSOAPEnvelope

      @Nullable 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

      @Nonnull protected HttpServletResponse 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().

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

      @Nullable 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

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