Class HttpClientRequestSOAP11Encoder
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,UnmodifiableComponent,HttpClientRequestMessageEncoder,MessageEncoder
- Direct Known Subclasses:
HttpClientRequestSOAP11Encoder,HttpClientRequestSOAP11Encoder
ClassicHttpRequest.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate SOAPObjectBuilder<Body>SOAP Body builder.private SOAPObjectBuilder<Envelope>SOAP Envelope builder.private final org.slf4j.LoggerClass logger.Fields inherited from class org.opensaml.messaging.encoder.AbstractMessageEncoder
BASE_PROTOCOL_MESSAGE_LOGGER_CATEGORY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidbuildAndStoreSOAPMessage(XMLObject payload) Builds the SOAP message to be encoded.protected org.apache.hc.core5.http.HttpEntitycreateRequestEntity(Envelope message, Charset charset) Create the request entity that makes up the POST message body.protected voiddoEncode()Performs the encoding logic.org.apache.hc.client5.http.classic.methods.HttpPostGet the HTTP client request on which to operate.protected XMLObjectGet the XMLObject which will be logged as the protocol message.protected StringDetermine the value of the SOAPAction HTTP header to send.protected EnvelopeRetrieve the previously stored SOAP envelope from the message context.voidThis method should prepare the message context by creating and populating any binding-specific data structures required in the MessageContext, prior to actually encoding.protected voidThis implementation performs the following actions on the context'sClassicHttpRequest:voidsetHttpRequest(org.apache.hc.core5.http.ClassicHttpRequest httpRequest) Set the HTTP client request on which to operate.protected voidstoreSOAPEnvelope(Envelope envelope) Store the constructed SOAP envelope in the message context for later encoding.Methods inherited from class org.opensaml.messaging.encoder.httpclient.BaseHttpClientRequestXMLMessageEncoder
encode, marshallMessage, serializeMessageForLoggingMethods inherited from class org.opensaml.messaging.encoder.httpclient.AbstractHttpClientRequestMessageEncoder
doInitializeMethods inherited from class org.opensaml.messaging.encoder.AbstractMessageEncoder
getMessageContext, getProtocolMessageLogger, getProtocolMessageLoggerSubCategory, logEncodedMessage, setMessageContext, setProtocolMessageLoggerSubCategoryMethods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent
checkComponentActive, checkSetterPreconditions, destroy, doDestroy, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException, initialize, isDestroyed, isInitializedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.shibboleth.shared.component.DestructableComponent
destroy, isDestroyedMethods inherited from interface net.shibboleth.shared.component.InitializableComponent
initialize, isInitializedMethods inherited from interface org.opensaml.messaging.encoder.MessageEncoder
setMessageContext
-
Field Details
-
log
@Nonnull private final org.slf4j.Logger logClass logger. -
envBuilder
SOAP Envelope builder. -
bodyBuilder
SOAP Body builder.
-
-
Constructor Details
-
HttpClientRequestSOAP11Encoder
public HttpClientRequestSOAP11Encoder()Constructor.
-
-
Method Details
-
getHttpRequest
Get the HTTP client request on which to operate.This encoder implementation only operates on instances of
HttpPost.- Specified by:
getHttpRequestin interfaceHttpClientRequestMessageEncoder- Overrides:
getHttpRequestin classAbstractHttpClientRequestMessageEncoder- Returns:
- the HTTP client request
-
setHttpRequest
public void setHttpRequest(@Nullable org.apache.hc.core5.http.ClassicHttpRequest httpRequest) Set the HTTP client request on which to operate.This encoder implementation only operates on instances of
HttpPost.- Specified by:
setHttpRequestin interfaceHttpClientRequestMessageEncoder- Overrides:
setHttpRequestin classAbstractHttpClientRequestMessageEncoder- Parameters:
httpRequest- the HTTP client request
-
prepareContext
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:
prepareContextin interfaceMessageEncoder- Overrides:
prepareContextin classAbstractMessageEncoder- Throws:
MessageEncodingException- if there is a problem preparing the message context for encoding
-
doEncode
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:
doEncodein classAbstractMessageEncoder- Throws:
MessageEncodingException- thrown if there is a problem encoding the message
-
createRequestEntity
protected org.apache.hc.core5.http.HttpEntity createRequestEntity(@Nonnull Envelope message, @Nonnull Charset charset) throws MessageEncodingException Create the request entity that makes up the POST message body.- Parameters:
message- message to be sentcharset- character set used for the message- Returns:
- request entity that makes up the POST message body
- Throws:
MessageEncodingException- thrown if the message could not be marshalled
-
storeSOAPEnvelope
Store the constructed SOAP envelope in the message context for later encoding.- Parameters:
envelope- the SOAP envelope
-
getSOAPEnvelope
Retrieve the previously stored SOAP envelope from the message context.- Returns:
- the previously stored SOAP envelope
-
buildAndStoreSOAPMessage
Builds the SOAP message to be encoded.- Parameters:
payload- body of the SOAP message
-
prepareHttpRequest
This implementation performs the following actions on the context's
ClassicHttpRequest:- 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
- Sets the SOAPAction HTTP header the value returned by
-
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
-
getMessageToLog
Get the XMLObject which will be logged as the protocol message.- Overrides:
getMessageToLogin classAbstractMessageEncoder- Returns:
- the XMLObject message considered to be the protocol message for logging purposes
-