Class AbstractPipelineHttpSOAPClient
- java.lang.Object
-
- net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
-
- org.opensaml.soap.client.http.AbstractPipelineHttpSOAPClient
-
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,SOAPClient
- Direct Known Subclasses:
PipelineFactoryHttpSOAPClient
@ThreadSafe public abstract class AbstractPipelineHttpSOAPClient extends AbstractInitializableComponent implements SOAPClient
SOAP client that is based onHttpClientMessagePipeline.
-
-
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 HttpClientSecurityParametershttpClientSecurityParametersHTTP client security parameters.private org.slf4j.LoggerlogClass logger.private Function<InOutOperationContext,CriteriaSet>tlsCriteriaSetStrategyStrategy for building the criteria set which is input to the TLS trust engine.
-
Constructor Summary
Constructors Constructor Description AbstractPipelineHttpSOAPClient()Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected org.apache.http.client.protocol.HttpClientContextbuildHttpContext(org.apache.http.client.methods.HttpUriRequest request, InOutOperationContext operationContext)Build theHttpClientContextinstance to be used by the HttpClient.protected org.apache.http.client.methods.HttpUriRequestbuildHttpRequest(String endpoint, InOutOperationContext operationContext)Build theHttpUriRequestinstance to be executed by the HttpClient.protected CriteriaSetbuildTLSCriteriaSet(org.apache.http.client.methods.HttpUriRequest request, InOutOperationContext operationContext)Build the dynamicCriteriaSetinstance to be used for TLS trust evaluation.protected voiddoDestroy()protected voiddoInitialize()org.apache.http.client.HttpClientgetHttpClient()Get the client used to make outbound HTTP requests.HttpClientSecurityParametersgetHttpClientSecurityParameters()Get the optional client security parameters.Function<InOutOperationContext,CriteriaSet>getTLSCriteriaSetStrategy()Get the strategy function which builds the dynamically-populated criteria set which is input to the TLS TrustEngine, if no static criteria set is supplied either via context or locally-configuredHttpClientSecurityParameters.protected abstract HttpClientMessagePipelinenewPipeline()Get a new instance of theHttpClientMessagePipelineto be processed.protected org.apache.http.client.protocol.HttpClientContextresolveClientContext(InOutOperationContext operationContext)Resolve the effectiveHttpClientContextinstance to use for the current request.protected HttpClientSecurityParametersresolveContextSecurityParameters(InOutOperationContext operationContext)Resolve theHttpClientSecurityParametersinstance present in the current operation context.protected HttpClientMessagePipelineresolvePipeline(InOutOperationContext operationContext)Resolve and return a new instance of theHttpClientMessagePipelineto be processed.voidsend(String endpoint, InOutOperationContext operationContext)Sends a message and waits for a response.voidsetHttpClient(org.apache.http.client.HttpClient client)Set the client used to make outbound HTTP requests.voidsetHttpClientSecurityParameters(HttpClientSecurityParameters params)Set the optional client security parameters.voidsetTLSCriteriaSetStrategy(Function<InOutOperationContext,CriteriaSet> function)Set the strategy function which builds the dynamically-populated criteria set which is input to the TLS TrustEngine, if no static criteria set is supplied either via context or locally-configuredHttpClientSecurityParameters.-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, 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.
-
httpClientSecurityParameters
@Nullable private HttpClientSecurityParameters httpClientSecurityParameters
HTTP client security parameters.
-
tlsCriteriaSetStrategy
@Nullable private Function<InOutOperationContext,CriteriaSet> tlsCriteriaSetStrategy
Strategy for building the criteria set which is input to the TLS trust engine.
-
-
Method Detail
-
doInitialize
protected void doInitialize() throws ComponentInitializationException- Overrides:
doInitializein classAbstractInitializableComponent- Throws:
ComponentInitializationException
-
doDestroy
protected void doDestroy()
- Overrides:
doDestroyin classAbstractInitializableComponent
-
getHttpClient
@Nonnull public org.apache.http.client.HttpClient getHttpClient()
Get the client used to make outbound HTTP requests.- Returns:
- the client instance
-
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
-
getHttpClientSecurityParameters
@Nullable public HttpClientSecurityParameters getHttpClientSecurityParameters()
Get the optional client security parameters.- Returns:
- the client security parameters, or null
-
setHttpClientSecurityParameters
public void setHttpClientSecurityParameters(@Nullable HttpClientSecurityParameters params)Set the optional client security parameters.- Parameters:
params- the new client security parameters
-
getTLSCriteriaSetStrategy
@Nullable public Function<InOutOperationContext,CriteriaSet> getTLSCriteriaSetStrategy()
Get the strategy function which builds the dynamically-populated criteria set which is input to the TLS TrustEngine, if no static criteria set is supplied either via context or locally-configuredHttpClientSecurityParameters.- Returns:
- the strategy function, or null
-
setTLSCriteriaSetStrategy
public void setTLSCriteriaSetStrategy(@Nullable Function<InOutOperationContext,CriteriaSet> function)Set the strategy function which builds the dynamically-populated criteria set which is input to the TLS TrustEngine, if no static criteria set is supplied either via context or locally-configuredHttpClientSecurityParameters.- Parameters:
function- the strategy function, or null
-
send
public void send(@Nonnull @NotEmpty String endpoint, @Nonnull InOutOperationContext operationContext) throws SOAPException, SecurityException
Sends a message and waits for a response.- Specified by:
sendin interfaceSOAPClient- Parameters:
endpoint- the endpoint to which to send the messageoperationContext- 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
-
resolvePipeline
@Nonnull protected HttpClientMessagePipeline resolvePipeline(@Nonnull InOutOperationContext operationContext) throws SOAPException
Resolve and return a new instance of theHttpClientMessagePipelineto be processed.Each call to this (factory) method MUST produce a new instance of the pipeline.
The default behavior is to simply call
newPipeline().- Parameters:
operationContext- the current operation context- Returns:
- a new pipeline instance
- Throws:
SOAPException- if there is an error obtaining a new pipeline instance
-
newPipeline
@Nonnull protected abstract HttpClientMessagePipeline newPipeline() throws SOAPException
Get a new instance of theHttpClientMessagePipelineto be processed.Each call to this (factory) method MUST produce a new instance of the pipeline.
- Returns:
- the new pipeline instance
- Throws:
SOAPException- if there is an error obtaining a new pipeline instance
-
buildHttpRequest
@Nonnull protected org.apache.http.client.methods.HttpUriRequest buildHttpRequest(@Nonnull @NotEmpty String endpoint, @Nonnull InOutOperationContext operationContext)
Build theHttpUriRequestinstance to be executed by the HttpClient.- Parameters:
endpoint- the endpoint to which the message will be sentoperationContext- the current operation context- Returns:
- the HTTP request to be executed
-
buildHttpContext
@Nonnull protected org.apache.http.client.protocol.HttpClientContext buildHttpContext(@Nonnull org.apache.http.client.methods.HttpUriRequest request, @Nonnull InOutOperationContext operationContext)Build theHttpClientContextinstance to be used by the HttpClient.- Parameters:
request- the HTTP client requestoperationContext- the current operation context- Returns:
- the client context instance
-
resolveContextSecurityParameters
protected HttpClientSecurityParameters resolveContextSecurityParameters(@Nonnull InOutOperationContext operationContext)
Resolve theHttpClientSecurityParametersinstance present in the current operation context.The default implementation returns the outbound subcontext value
HttpClientSecurityContext.getSecurityParameters().Note that any values supplied via this instance will override those supplied locally via
setHttpClientSecurityParameters(HttpClientSecurityParameters).- Parameters:
operationContext- the current operation context- Returns:
- the client security parameters resolved from the current operation context, or null
-
resolveClientContext
@Nonnull protected org.apache.http.client.protocol.HttpClientContext resolveClientContext(@Nonnull InOutOperationContext operationContext)Resolve the effectiveHttpClientContextinstance to use for the current request.The default implementation first attempts to resolve the outbound subcontext value
HttpClientRequestContext.getHttpClientContext(). If no context value is present, a new empty context instance will be returned viaHttpClientContext.create().Note that any security-related attributes supplied directly the client context returned here will override the corresponding values supplied via both operation context and locally-configured instances of
HttpClientSecurityParameters.- Parameters:
operationContext- the current operation context- Returns:
- the effective client context instance to use
-
buildTLSCriteriaSet
@Nonnull protected CriteriaSet buildTLSCriteriaSet(@Nonnull org.apache.http.client.methods.HttpUriRequest request, @Nonnull InOutOperationContext operationContext)
Build the dynamicCriteriaSetinstance to be used for TLS trust evaluation.- Parameters:
request- the HTTP client requestoperationContext- the current operation context- Returns:
- the new criteria set instance
-
-