Class CommonsDataLoader
java.lang.Object
eu.europa.esig.dss.service.http.commons.CommonsDataLoader
- All Implemented Interfaces:
DataLoader,Serializable
- Direct Known Subclasses:
OCSPDataLoader,TimestampDataLoader
public class CommonsDataLoader extends Object implements DataLoader
Implementation of DataLoader for any protocol.
HTTP and HTTPS: using HttpClient which is more flexible for HTTPS without
having to add the certificate to the JVM TrustStore. It takes into account a
proxy management through ProxyPreferenceManager. The authentication
is also supported.
- See Also:
- Serialized Form
-
Nested Class Summary
Nested classes/interfaces inherited from interface eu.europa.esig.dss.spi.client.http.DataLoader
DataLoader.DataAndUrl -
Field Summary
Fields Modifier and Type Field Description protected StringcontentType -
Constructor Summary
Constructors Constructor Description CommonsDataLoader()The default constructor for CommonsDataLoader.CommonsDataLoader(String contentType)The constructor for CommonsDataLoader with defined content-type. -
Method Summary
Modifier and Type Method Description CommonsDataLoaderaddAuthentication(String host, int port, String scheme, String login, String password)protected voidcloseQuietly(org.apache.http.client.methods.HttpRequestBase httpRequest, org.apache.http.client.methods.CloseableHttpResponse httpResponse, org.apache.http.impl.client.CloseableHttpClient client)protected byte[]fileGet(String urlString)protected byte[]ftpGet(String urlString)This method retrieves data using FTP protocol .byte[]get(String urlString)Execute a HTTP GET operation.byte[]get(String url, boolean refresh)This method is useful only with the cache handling implementation of theDataLoader.DataLoader.DataAndUrlget(List<String> urlStrings)Execute a HTTP GET operation.List<Integer>getAcceptedHttpStatus()intgetConnectionsMaxPerRoute()Used when theHttpClientis created.intgetConnectionsMaxTotal()Used when theHttpClientis created.protected byte[]getContent(org.apache.http.HttpEntity responseEntity)StringgetContentType()HostnameVerifiergetHostnameVerifier()protected org.apache.http.impl.client.CloseableHttpClientgetHttpClient(String url)protected org.apache.http.impl.client.HttpClientBuildergetHttpClientBuilder(String url)protected org.apache.http.protocol.HttpContextgetHttpContext(org.apache.http.HttpHost targetHost)protected org.apache.http.HttpHostgetHttpHost(org.apache.http.client.methods.HttpUriRequest httpRequest)protected org.apache.http.client.methods.HttpGetgetHttpRequest(String url)protected org.apache.http.client.methods.CloseableHttpResponsegetHttpResponse(org.apache.http.impl.client.CloseableHttpClient client, org.apache.http.client.methods.HttpUriRequest httpRequest)ProxyConfiggetProxyConfig()protected KeyStoregetSSLKeyStore()protected KeyStoregetSSLTrustStore()String[]getSupportedSSLCipherSuites()String[]getSupportedSSLProtocols()intgetTimeoutConnection()Used when theHttpClientis created.intgetTimeoutSocket()Used when theHttpClientis created.org.apache.http.conn.ssl.TrustStrategygetTrustStrategy()protected byte[]httpGet(String url)This method retrieves data using HTTP or HTTPS protocol and 'get' method.booleanisRedirectsEnabled()Used when theHttpClientis created.protected byte[]ldapGet(String urlString)This method retrieves data using LDAP protocol. - CRL from given LDAP url, e.g. ldap://ldap.infonotary.com/dc=identity-ca,dc=infonotary,dc=com - ex URL from AIA ldap://xadessrv.plugtests.net/CN=LevelBCAOK,OU=Plugtests_2015-2016,O=ETSI,C=FR?byte[]post(String url, byte[] content)Executes a HTTP POST operationvoidpropagateAuthentication(CommonsDataLoader commonsDataLoader)This method allows to propagate the authentication information from the current object.protected byte[]readHttpResponse(org.apache.http.client.methods.CloseableHttpResponse httpResponse)voidsetAcceptedHttpStatus(List<Integer> acceptedHttpStatus)This allows to set a list of accepted http status.voidsetConnectionsMaxPerRoute(int connectionsMaxPerRoute)Used when theHttpClientis created.voidsetConnectionsMaxTotal(int connectionsMaxTotal)Used when theHttpClientis created.voidsetContentType(String contentType)This allows to set the content type.voidsetHostnameVerifier(HostnameVerifier hostnameVerifier)voidsetKeyStoreAsTrustMaterial(boolean loadKeyStoreAsTrustMaterial)voidsetProxyConfig(ProxyConfig proxyConfig)voidsetRedirectsEnabled(boolean redirectsEnabled)Used when theHttpClientis created.voidsetRetryHandler(org.apache.http.client.HttpRequestRetryHandler retryHandler)voidsetServiceUnavailableRetryStrategy(org.apache.http.client.ServiceUnavailableRetryStrategy serviceUnavailableRetryStrategy)voidsetSslKeystore(DSSDocument sslKeyStore)voidsetSslKeystorePassword(String sslKeystorePassword)voidsetSslKeystoreType(String sslKeystoreType)voidsetSslProtocol(String sslProtocol)This method sets the SSL protocol to be used ('TLSv1.2' by default)voidsetSslTruststore(DSSDocument sslTrustStore)voidsetSslTruststorePassword(String sslTruststorePassword)voidsetSslTruststoreType(String sslTruststoreType)voidsetSupportedSSLCipherSuites(String[] supportedSSLCipherSuites)voidsetSupportedSSLProtocols(String[] supportedSSLProtocols)voidsetTimeoutConnection(int timeoutConnection)Used when theHttpClientis created.voidsetTimeoutSocket(int timeoutSocket)Used when theHttpClientis created.voidsetTrustStrategy(org.apache.http.conn.ssl.TrustStrategy trustStrategy)
-
Field Details
-
Constructor Details
-
CommonsDataLoader
public CommonsDataLoader()The default constructor for CommonsDataLoader. -
CommonsDataLoader
The constructor for CommonsDataLoader with defined content-type.- Parameters:
contentType- The content type of each request
-
-
Method Details
-
getSSLKeyStore
- Throws:
IOExceptionGeneralSecurityException
-
getSSLTrustStore
- Throws:
IOExceptionGeneralSecurityException
-
getHttpRequest
protected org.apache.http.client.methods.HttpGet getHttpRequest(String url) throws URISyntaxException- Throws:
URISyntaxException
-
getHttpClientBuilder
-
getHttpClient
-
get
Description copied from interface:DataLoaderExecute a HTTP GET operation.- Specified by:
getin interfaceDataLoader- Parameters:
urlString- the url to access- Returns:
bytearray of obtained data or null- Throws:
DSSException- in case of DataLoader error
-
get
Description copied from interface:DataLoaderExecute a HTTP GET operation. This method is used when many URls are available to access the same resource. The operation stops after the first successful download.- Specified by:
getin interfaceDataLoader- Parameters:
urlStrings-ListofStrings representing the URLs to be used in sequential way to obtain the data.- Returns:
DataAndUrlrepresenting the array of obtained data and used url, or null- Throws:
DSSException- in case of DataLoader error
-
get
This method is useful only with the cache handling implementation of theDataLoader.- Specified by:
getin interfaceDataLoader- Parameters:
url- to accessrefresh- if true indicates that the cached data should be refreshed- Returns:
bytearray of obtained data- Throws:
DSSException- in case of DataLoader error
-
ldapGet
This method retrieves data using LDAP protocol. - CRL from given LDAP url, e.g. ldap://ldap.infonotary.com/dc=identity-ca,dc=infonotary,dc=com - ex URL from AIA ldap://xadessrv.plugtests.net/CN=LevelBCAOK,OU=Plugtests_2015-2016,O=ETSI,C=FR?cACertificate;binary- Parameters:
urlString-- Returns:
- byte array
- Throws:
DSSException- in case of DataLoader error
-
ftpGet
This method retrieves data using FTP protocol .- Parameters:
urlString-Stringurl to retrieve data from- Returns:
- byte array
- Throws:
DSSException- in case of file download error
-
fileGet
- Throws:
DSSException
-
httpGet
This method retrieves data using HTTP or HTTPS protocol and 'get' method.- Parameters:
url- to access- Returns:
bytearray of obtained data or null- Throws:
DSSException
-
closeQuietly
protected void closeQuietly(org.apache.http.client.methods.HttpRequestBase httpRequest, org.apache.http.client.methods.CloseableHttpResponse httpResponse, org.apache.http.impl.client.CloseableHttpClient client) -
post
Description copied from interface:DataLoaderExecutes a HTTP POST operation- Specified by:
postin interfaceDataLoader- Parameters:
url- to accesscontent- the content to post- Returns:
bytearray of obtained data
-
getHttpResponse
protected org.apache.http.client.methods.CloseableHttpResponse getHttpResponse(org.apache.http.impl.client.CloseableHttpClient client, org.apache.http.client.methods.HttpUriRequest httpRequest) throws IOException- Throws:
IOException
-
getHttpHost
protected org.apache.http.HttpHost getHttpHost(org.apache.http.client.methods.HttpUriRequest httpRequest) -
getHttpContext
protected org.apache.http.protocol.HttpContext getHttpContext(org.apache.http.HttpHost targetHost) -
readHttpResponse
protected byte[] readHttpResponse(org.apache.http.client.methods.CloseableHttpResponse httpResponse) throws IOException- Throws:
IOException
-
getContent
- Throws:
IOException
-
getTimeoutConnection
public int getTimeoutConnection()Used when theHttpClientis created.- Returns:
- the value (millis)
-
setTimeoutConnection
public void setTimeoutConnection(int timeoutConnection)Used when theHttpClientis created.- Parameters:
timeoutConnection- the value (millis)
-
getTimeoutSocket
public int getTimeoutSocket()Used when theHttpClientis created.- Returns:
- the value (millis)
-
setTimeoutSocket
public void setTimeoutSocket(int timeoutSocket)Used when theHttpClientis created.- Parameters:
timeoutSocket- the value (millis)
-
getConnectionsMaxTotal
public int getConnectionsMaxTotal()Used when theHttpClientis created.- Returns:
- maximum number of connections
-
setConnectionsMaxTotal
public void setConnectionsMaxTotal(int connectionsMaxTotal)Used when theHttpClientis created.- Parameters:
connectionsMaxTotal- maximum number of connections
-
getConnectionsMaxPerRoute
public int getConnectionsMaxPerRoute()Used when theHttpClientis created.- Returns:
- maximum number of connections per one route
-
setConnectionsMaxPerRoute
public void setConnectionsMaxPerRoute(int connectionsMaxPerRoute)Used when theHttpClientis created.- Parameters:
connectionsMaxPerRoute- maximum number of connections per one route
-
isRedirectsEnabled
public boolean isRedirectsEnabled()Used when theHttpClientis created.- Returns:
- true if http redirects are allowed
-
setRedirectsEnabled
public void setRedirectsEnabled(boolean redirectsEnabled)Used when theHttpClientis created.- Parameters:
redirectsEnabled- true if http redirects are allowed
-
getContentType
- Returns:
- the contentType
-
setContentType
This allows to set the content type. Example: Content-Type "application/ocsp-request"- Specified by:
setContentTypein interfaceDataLoader- Parameters:
contentType-
-
getAcceptedHttpStatus
-
setAcceptedHttpStatus
This allows to set a list of accepted http status. Example: 200 (OK)- Parameters:
acceptedHttpStatus- a list of integer which correspond to the http status code
-
getProxyConfig
- Returns:
- associated
ProxyConfig
-
setProxyConfig
- Parameters:
proxyConfig- the proxyConfig to set
-
setSslProtocol
This method sets the SSL protocol to be used ('TLSv1.2' by default)- Parameters:
sslProtocol- the ssl protocol to be used
-
setSslKeystore
-
setKeyStoreAsTrustMaterial
public void setKeyStoreAsTrustMaterial(boolean loadKeyStoreAsTrustMaterial) -
setSslKeystoreType
-
setSslKeystorePassword
-
setSslTruststore
-
setSslTruststorePassword
-
setSslTruststoreType
-
addAuthentication
public CommonsDataLoader addAuthentication(String host, int port, String scheme, String login, String password)- Parameters:
host- hostport- portscheme- schemelogin- loginpassword- password- Returns:
- this for fluent addAuthentication
-
propagateAuthentication
This method allows to propagate the authentication information from the current object.- Parameters:
commonsDataLoader-CommonsDataLoaderto be initialized with authentication information
-
setRetryHandler
public void setRetryHandler(org.apache.http.client.HttpRequestRetryHandler retryHandler) -
setServiceUnavailableRetryStrategy
public void setServiceUnavailableRetryStrategy(org.apache.http.client.ServiceUnavailableRetryStrategy serviceUnavailableRetryStrategy) -
getSupportedSSLProtocols
-
setSupportedSSLProtocols
-
getSupportedSSLCipherSuites
-
setSupportedSSLCipherSuites
-
getHostnameVerifier
-
setHostnameVerifier
-
getTrustStrategy
public org.apache.http.conn.ssl.TrustStrategy getTrustStrategy() -
setTrustStrategy
public void setTrustStrategy(org.apache.http.conn.ssl.TrustStrategy trustStrategy)
-