Package org.opensaml.soap.client.http
Class HttpSOAPClient
- java.lang.Object
-
- net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
-
- org.opensaml.soap.client.http.HttpSOAPClient
-
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,SOAPClient
@ThreadSafe public class HttpSOAPClient extends AbstractInitializableComponent implements SOAPClient
SOAP client that uses HTTP as the underlying transport and POST as the binding.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.opensaml.soap.client.SOAPClient
SOAPClient.SOAPRequestParameters
-
-
Field Summary
Fields Modifier and Type Field Description private org.apache.http.client.HttpClienthttpClientHTTP client used to send requests and receive responses.private org.slf4j.LoggerlogClass logger.private ParserPoolparserPoolPool of XML parsers used to parser incoming responses.private Function<MessageContext,SOAP11Context>soap11ContextLookupStrategyStrategy used to look up theSOAP11Contextassociated with the outbound message context.private Function<MessageContext,SOAPClientContext>soapClientContextLookupStrategyStrategy used to look up theSOAPClientContextassociated with the outbound message context.
-
Constructor Summary
Constructors Constructor Description HttpSOAPClient()Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.apache.http.client.methods.HttpPostcreatePostMethod(String endpoint, HttpSOAPRequestParameters requestParams, Envelope message)Create the post method used to send the SOAP request.protected org.apache.http.HttpEntitycreateRequestEntity(Envelope message, Charset charset)Create the request entity that makes up the POST message body.protected voiddoInitialize()protected voidevaluateSecurityPolicy(SOAPClientContext messageContext)Evaluates the security policy associated with the given message context.Function<MessageContext,SOAP11Context>getSOAP11ContextLookupStrategy()Get the strategy used to look up theSOAP11Contextassociated with the outbound message context.Function<MessageContext,SOAPClientContext>getSOAPClientContextLookupStrategy()Get the strategy used to look up theSOAPClientContextassociated with the outbound message context.protected voidprocessFaultResponse(org.apache.http.HttpResponse httpResponse, InOutOperationContext context)Process a SOAP fault, as determined by an HTTP 500 status code, response.protected voidprocessSuccessfulResponse(org.apache.http.HttpResponse httpResponse, InOutOperationContext context)Process a successful, as determined by an HTTP 200 status code, response.voidsend(String endpoint, InOutOperationContext context)Sends a message and waits for a response.voidsetHttpClient(org.apache.http.client.HttpClient client)Set the client used to make outbound HTTP requests.voidsetParserPool(ParserPool parser)Set the pool of XML parsers used to parse incoming responses.voidsetSOAP11ContextLookupStrategy(Function<MessageContext,SOAP11Context> strategy)Set the strategy used to look up theSOAP11Contextassociated with the outbound message context.voidsetSOAPClientContextLookupStrategy(Function<MessageContext,SOAPClientContext> strategy)Set the strategy used to look up theSOAPClientContextassociated with the outbound message context.protected EnvelopeunmarshallResponse(InputStream responseStream)Unmarshall the incoming response from a POST request.-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, initialize, isDestroyed, isInitialized
-
-
-
-
Field Detail
-
log
@Nonnull private final org.slf4j.Logger log
Class logger.
-
httpClient
@NonnullAfterInit private org.apache.http.client.HttpClient httpClient
HTTP client used to send requests and receive responses.
-
parserPool
@NonnullAfterInit private ParserPool parserPool
Pool of XML parsers used to parser incoming responses.
-
soapClientContextLookupStrategy
@Nonnull private Function<MessageContext,SOAPClientContext> soapClientContextLookupStrategy
Strategy used to look up theSOAPClientContextassociated with the outbound message context.
-
soap11ContextLookupStrategy
@Nonnull private Function<MessageContext,SOAP11Context> soap11ContextLookupStrategy
Strategy used to look up theSOAP11Contextassociated with the outbound message context.
-
-
Method Detail
-
doInitialize
protected void doInitialize() throws ComponentInitializationException- Overrides:
doInitializein classAbstractInitializableComponent- Throws:
ComponentInitializationException
-
setHttpClient
public void setHttpClient(@Nonnull org.apache.http.client.HttpClient client)Set the client used to make outbound HTTP requests.This client SHOULD employ a thread-safe
HttpClientand may be shared with other objects.- Parameters:
client- client object
-
setParserPool
public void setParserPool(@Nonnull ParserPool parser)Set the pool of XML parsers used to parse incoming responses.- Parameters:
parser- parser pool
-
getSOAPClientContextLookupStrategy
@Nonnull public Function<MessageContext,SOAPClientContext> getSOAPClientContextLookupStrategy()
Get the strategy used to look up theSOAPClientContextassociated with the outbound message context.- Returns:
- strategy used to look up the
SOAPClientContextassociated with the outbound message context
-
setSOAPClientContextLookupStrategy
public void setSOAPClientContextLookupStrategy(@Nonnull Function<MessageContext,SOAPClientContext> strategy)Set the strategy used to look up theSOAPClientContextassociated with the outbound message context.- Parameters:
strategy- strategy used to look up theSOAPClientContextassociated with the outbound message context
-
getSOAP11ContextLookupStrategy
@Nonnull public Function<MessageContext,SOAP11Context> getSOAP11ContextLookupStrategy()
Get the strategy used to look up theSOAP11Contextassociated with the outbound message context.- Returns:
- strategy used to look up the
SOAP11Contextassociated with the outbound message context
-
setSOAP11ContextLookupStrategy
public void setSOAP11ContextLookupStrategy(@Nonnull Function<MessageContext,SOAP11Context> strategy)Set the strategy used to look up theSOAP11Contextassociated with the outbound message context.- Parameters:
strategy- strategy used to look up theSOAP11Contextassociated with the outbound message context
-
send
public void send(@Nonnull @NotEmpty String endpoint, @Nonnull InOutOperationContext context) throws SOAPException, SecurityException
Sends a message and waits for a response.- Specified by:
sendin interfaceSOAPClient- Parameters:
endpoint- the endpoint to which to send the messagecontext- the operation context containing the outbound SOAP message- Throws:
SOAPException- thrown if there is a problem sending the message or receiving the response or if the response is a SOAP faultSecurityException- thrown if the response does not meet any security policy associated with the message context
-
createPostMethod
protected org.apache.http.client.methods.HttpPost createPostMethod(@Nonnull @NotEmpty String endpoint, @Nullable HttpSOAPRequestParameters requestParams, @Nonnull Envelope message) throws SOAPClientException
Create the post method used to send the SOAP request.- Parameters:
endpoint- endpoint to which the message is sentrequestParams- HTTP request parametersmessage- message to be sent- Returns:
- the post method to be used to send this message
- Throws:
SOAPClientException- thrown if the message could not be marshalled
-
createRequestEntity
protected org.apache.http.HttpEntity createRequestEntity(@Nonnull Envelope message, @Nullable Charset charset) throws SOAPClientExceptionCreate 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:
SOAPClientException- thrown if the message could not be marshalled
-
processSuccessfulResponse
protected void processSuccessfulResponse(@Nonnull org.apache.http.HttpResponse httpResponse, @Nonnull InOutOperationContext context) throws SOAPClientExceptionProcess a successful, as determined by an HTTP 200 status code, response.- Parameters:
httpResponse- the HTTP responsecontext- current operation context- Throws:
SOAPClientException- thrown if there is a problem reading the response from theHttpPost
-
processFaultResponse
protected void processFaultResponse(@Nonnull org.apache.http.HttpResponse httpResponse, @Nonnull InOutOperationContext context) throws SOAPClientException, SOAPFaultExceptionProcess a SOAP fault, as determined by an HTTP 500 status code, response.- Parameters:
httpResponse- the HTTP responsecontext- current operation context- Throws:
SOAPClientException- thrown if the response can not be read from theHttpPostSOAPFaultException- an exception containing the SOAP fault
-
unmarshallResponse
protected Envelope unmarshallResponse(@Nonnull InputStream responseStream) throws SOAPClientException
Unmarshall the incoming response from a POST request.- Parameters:
responseStream- input stream bearing the response- Returns:
- the response
- Throws:
SOAPClientException- thrown if the incoming response can not be unmarshalled into anEnvelope
-
evaluateSecurityPolicy
protected void evaluateSecurityPolicy(SOAPClientContext messageContext) throws SOAPClientException
Evaluates the security policy associated with the given message context. If no policy resolver is registered or no policy is located during the resolution process then no policy is evaluated. Note that neither the inbound or outbound message transport is available.- Parameters:
messageContext- current message context- Throws:
SOAPClientException- thrown if there is a problem resolving or evaluating a security policy
-
-