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 String
contentType
The content type value -
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 CommonsDataLoader
addAuthentication(String host, int port, String scheme, String login, String password)
Addz authentication credentialsprotected void
closeQuietly(org.apache.http.client.methods.HttpRequestBase httpRequest, org.apache.http.client.methods.CloseableHttpResponse httpResponse, org.apache.http.impl.client.CloseableHttpClient client)
Closes all the parameters quietlyprotected byte[]
fileGet(String urlString)
Gets the file content by its URLprotected 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.DataAndUrl
get(List<String> urlStrings)
Execute a HTTP GET operation.List<Integer>
getAcceptedHttpStatus()
Returns a list of accepted HTTP status numbersint
getConnectionsMaxPerRoute()
Used when theHttpClient
is created.int
getConnectionsMaxTotal()
Used when theHttpClient
is created.protected byte[]
getContent(org.apache.http.HttpEntity responseEntity)
Gets content of the responseString
getContentType()
HostnameVerifier
getHostnameVerifier()
Gets the hostname verifierprotected org.apache.http.impl.client.CloseableHttpClient
getHttpClient(String url)
Gets the HTTP clientprotected org.apache.http.impl.client.HttpClientBuilder
getHttpClientBuilder(String url)
Gets theHttpClientBuilder
for the urlprotected org.apache.http.protocol.HttpContext
getHttpContext(org.apache.http.HttpHost targetHost)
Gets theHttpContext
protected org.apache.http.HttpHost
getHttpHost(org.apache.http.client.methods.HttpUriRequest httpRequest)
Gets theHttpHost
protected org.apache.http.client.methods.HttpGet
getHttpRequest(String url)
Gets the HTTP requestprotected org.apache.http.client.methods.CloseableHttpResponse
getHttpResponse(org.apache.http.impl.client.CloseableHttpClient client, org.apache.http.client.methods.HttpUriRequest httpRequest)
ProcesseshttpRequest
and returns theCloseableHttpResponse
ProxyConfig
getProxyConfig()
protected KeyStore
getSSLKeyStore()
Gets the SSL KeyStoreprotected KeyStore
getSSLTrustStore()
Gets the SSL Trusted KeyStoreString[]
getSupportedSSLCipherSuites()
Gets supported SSL Cipher SuitesString[]
getSupportedSSLProtocols()
Gets supported SSL protocolsint
getTimeoutConnection()
Used when theHttpClient
is created.int
getTimeoutSocket()
Used when theHttpClient
is created.org.apache.http.conn.ssl.TrustStrategy
getTrustStrategy()
Gets the TrustStrategyprotected byte[]
httpGet(String url)
This method retrieves data using HTTP or HTTPS protocol and 'get' method.boolean
isRedirectsEnabled()
Used when theHttpClient
is created.boolean
isUseSystemProperties()
Gets if the default system network properties shall be usedprotected 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 operationvoid
propagateAuthentication(CommonsDataLoader commonsDataLoader)
This method allows to propagate the authentication information from the current object.protected byte[]
readHttpResponse(org.apache.http.client.methods.CloseableHttpResponse httpResponse)
Reads the HTTP responsevoid
setAcceptedHttpStatus(List<Integer> acceptedHttpStatus)
This allows to set a list of accepted http status.void
setConnectionsMaxPerRoute(int connectionsMaxPerRoute)
Used when theHttpClient
is created.void
setConnectionsMaxTotal(int connectionsMaxTotal)
Used when theHttpClient
is created.void
setContentType(String contentType)
This allows to set the content type.void
setHostnameVerifier(HostnameVerifier hostnameVerifier)
Sets a customHostnameVerifier
void
setKeyStoreAsTrustMaterial(boolean loadKeyStoreAsTrustMaterial)
Sets if the KeyStore shall be considered as a trust material (used for SSL connection)void
setProxyConfig(ProxyConfig proxyConfig)
void
setRedirectsEnabled(boolean redirectsEnabled)
Used when theHttpClient
is created.void
setRetryHandler(org.apache.http.client.HttpRequestRetryHandler retryHandler)
Sets a custom retry handlervoid
setServiceUnavailableRetryStrategy(org.apache.http.client.ServiceUnavailableRetryStrategy serviceUnavailableRetryStrategy)
Sets customServiceUnavailableRetryStrategy
void
setSslKeystore(DSSDocument sslKeyStore)
Sets the SSL KeyStorevoid
setSslKeystorePassword(String sslKeystorePassword)
Sets the KeyStore passwordvoid
setSslKeystoreType(String sslKeystoreType)
Sets the SSL KeyStore typevoid
setSslProtocol(String sslProtocol)
This method sets the SSL protocol to be used ('TLSv1.2' by default)void
setSslTruststore(DSSDocument sslTrustStore)
Sets the SSL trust store NOTE: different from KeyStore!void
setSslTruststorePassword(String sslTruststorePassword)
Sets the password for SSL truststorevoid
setSslTruststoreType(String sslTruststoreType)
Sets the SSL TrustStore typevoid
setSupportedSSLCipherSuites(String[] supportedSSLCipherSuites)
Sets supported SSL Cipher Suitesvoid
setSupportedSSLProtocols(String[] supportedSSLProtocols)
Sets supported SSL protocolsvoid
setTimeoutConnection(int timeoutConnection)
Used when theHttpClient
is created.void
setTimeoutSocket(int timeoutSocket)
Used when theHttpClient
is created.void
setTrustStrategy(org.apache.http.conn.ssl.TrustStrategy trustStrategy)
Sets theTrustStrategy
void
setUseSystemProperties(boolean useSystemProperties)
Sets if the default system network properties shall be used Default: FALSE (system properties are not used) NOTE: all other configured property may override the default behavior!
-
Field Details
-
contentType
The content type value
-
-
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
Gets the SSL KeyStore- Returns:
KeyStore
- Throws:
IOException
- if IOException occursGeneralSecurityException
- if GeneralSecurityException occurs
-
getSSLTrustStore
Gets the SSL Trusted KeyStore- Returns:
KeyStore
- Throws:
IOException
- if IOException occursGeneralSecurityException
- if GeneralSecurityException occurs
-
getHttpRequest
protected org.apache.http.client.methods.HttpGet getHttpRequest(String url) throws URISyntaxExceptionGets the HTTP request- Parameters:
url
-String
request url- Returns:
HttpGet
- Throws:
URISyntaxException
- if an exception occurs
-
getHttpClientBuilder
Gets theHttpClientBuilder
for the url- Parameters:
url
-String
request url- Returns:
HttpClientBuilder
-
getHttpClient
Gets the HTTP client- Parameters:
url
-String
request url- Returns:
CloseableHttpClient
-
get
Description copied from interface:DataLoader
Execute a HTTP GET operation.- Specified by:
get
in interfaceDataLoader
- Parameters:
urlString
- the url to access- Returns:
byte
array of obtained data or null- Throws:
DSSException
- in case of DataLoader error
-
get
Description copied from interface:DataLoader
Execute 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:
get
in interfaceDataLoader
- Parameters:
urlStrings
-List
ofString
s representing the URLs to be used in sequential way to obtain the data.- Returns:
DataAndUrl
representing 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:
get
in interfaceDataLoader
- Parameters:
url
- to accessrefresh
- if true indicates that the cached data should be refreshed- Returns:
byte
array 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
-String
- Returns:
- byte array
- Throws:
DSSException
- in case of DataLoader error
-
ftpGet
This method retrieves data using FTP protocol .- Parameters:
urlString
-String
url to retrieve data from- Returns:
- byte array
- Throws:
DSSException
- in case of file download error
-
fileGet
Gets the file content by its URL- Parameters:
urlString
-String
to the file- Returns:
- byte array of the file content
-
httpGet
This method retrieves data using HTTP or HTTPS protocol and 'get' method.- Parameters:
url
- to access- Returns:
byte
array 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)Closes all the parameters quietly- Parameters:
httpRequest
-HttpRequestBase
httpResponse
-CloseableHttpResponse
client
-CloseableHttpClient
-
post
Description copied from interface:DataLoader
Executes a HTTP POST operation- Specified by:
post
in interfaceDataLoader
- Parameters:
url
- to accesscontent
- the content to post- Returns:
byte
array 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 IOExceptionProcesseshttpRequest
and returns theCloseableHttpResponse
- Parameters:
client
-CloseableHttpClient
httpRequest
-HttpUriRequest
- Returns:
CloseableHttpResponse
- Throws:
IOException
- if an exception occurs
-
getHttpHost
protected org.apache.http.HttpHost getHttpHost(org.apache.http.client.methods.HttpUriRequest httpRequest)Gets theHttpHost
- Parameters:
httpRequest
-HttpUriRequest
- Returns:
HttpHost
-
getHttpContext
protected org.apache.http.protocol.HttpContext getHttpContext(org.apache.http.HttpHost targetHost)Gets theHttpContext
- Parameters:
targetHost
-HttpHost
- Returns:
HttpContext
-
readHttpResponse
protected byte[] readHttpResponse(org.apache.http.client.methods.CloseableHttpResponse httpResponse) throws IOExceptionReads the HTTP response- Parameters:
httpResponse
-CloseableHttpResponse
- Returns:
- the response's content
- Throws:
IOException
- if an exception occurs
-
getContent
Gets content of the response- Parameters:
responseEntity
-HttpEntity
- Returns:
- byte array
- Throws:
IOException
- if an exception occurs
-
getTimeoutConnection
public int getTimeoutConnection()Used when theHttpClient
is created.- Returns:
- the value (millis)
-
setTimeoutConnection
public void setTimeoutConnection(int timeoutConnection)Used when theHttpClient
is created.- Parameters:
timeoutConnection
- the value (millis)
-
getTimeoutSocket
public int getTimeoutSocket()Used when theHttpClient
is created.- Returns:
- the value (millis)
-
setTimeoutSocket
public void setTimeoutSocket(int timeoutSocket)Used when theHttpClient
is created.- Parameters:
timeoutSocket
- the value (millis)
-
getConnectionsMaxTotal
public int getConnectionsMaxTotal()Used when theHttpClient
is created.- Returns:
- maximum number of connections
-
setConnectionsMaxTotal
public void setConnectionsMaxTotal(int connectionsMaxTotal)Used when theHttpClient
is created.- Parameters:
connectionsMaxTotal
- maximum number of connections
-
getConnectionsMaxPerRoute
public int getConnectionsMaxPerRoute()Used when theHttpClient
is created.- Returns:
- maximum number of connections per one route
-
setConnectionsMaxPerRoute
public void setConnectionsMaxPerRoute(int connectionsMaxPerRoute)Used when theHttpClient
is created.- Parameters:
connectionsMaxPerRoute
- maximum number of connections per one route
-
isRedirectsEnabled
public boolean isRedirectsEnabled()Used when theHttpClient
is created.- Returns:
- true if http redirects are allowed
-
setRedirectsEnabled
public void setRedirectsEnabled(boolean redirectsEnabled)Used when theHttpClient
is created.- Parameters:
redirectsEnabled
- true if http redirects are allowed
-
isUseSystemProperties
public boolean isUseSystemProperties()Gets if the default system network properties shall be used- Returns:
- TRUE if the default system network properties shall be used, FALSE otherwise
-
setUseSystemProperties
public void setUseSystemProperties(boolean useSystemProperties)Sets if the default system network properties shall be used Default: FALSE (system properties are not used) NOTE: all other configured property may override the default behavior!- Parameters:
useSystemProperties
- if the default system network properties shall be used
-
getContentType
- Returns:
- the contentType
-
setContentType
This allows to set the content type. Example: Content-Type "application/ocsp-request"- Specified by:
setContentType
in interfaceDataLoader
- Parameters:
contentType
-String
-
getAcceptedHttpStatus
Returns a list of accepted HTTP status numbers- Returns:
- a list of accepted HTTP status numbers
-
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
Sets the SSL KeyStore- Parameters:
sslKeyStore
-DSSDocument
-
setKeyStoreAsTrustMaterial
public void setKeyStoreAsTrustMaterial(boolean loadKeyStoreAsTrustMaterial)Sets if the KeyStore shall be considered as a trust material (used for SSL connection)- Parameters:
loadKeyStoreAsTrustMaterial
- if the KeyStore shall be considered as a trust material
-
setSslKeystoreType
Sets the SSL KeyStore type- Parameters:
sslKeystoreType
-String
-
setSslKeystorePassword
Sets the KeyStore password- Parameters:
sslKeystorePassword
-String
-
setSslTruststore
Sets the SSL trust store NOTE: different from KeyStore!- Parameters:
sslTrustStore
-DSSDocument
-
setSslTruststorePassword
Sets the password for SSL truststore- Parameters:
sslTruststorePassword
-String
-
setSslTruststoreType
Sets the SSL TrustStore type- Parameters:
sslTruststoreType
-String
-
addAuthentication
public CommonsDataLoader addAuthentication(String host, int port, String scheme, String login, String password)Addz authentication credentials- 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
-CommonsDataLoader
to be initialized with authentication information
-
setRetryHandler
public void setRetryHandler(org.apache.http.client.HttpRequestRetryHandler retryHandler)Sets a custom retry handler- Parameters:
retryHandler
-HttpRequestRetryHandler
-
getSupportedSSLProtocols
Gets supported SSL protocols- Returns:
- an array if
String
s
-
setSupportedSSLProtocols
Sets supported SSL protocols- Parameters:
supportedSSLProtocols
- an array ifString
s
-
getSupportedSSLCipherSuites
Gets supported SSL Cipher Suites- Returns:
- an array if
String
s
-
setSupportedSSLCipherSuites
Sets supported SSL Cipher Suites- Parameters:
supportedSSLCipherSuites
- an array ifString
s
-
getHostnameVerifier
Gets the hostname verifier- Returns:
HostnameVerifier
-
setHostnameVerifier
Sets a customHostnameVerifier
- Parameters:
hostnameVerifier
-HostnameVerifier
-
getTrustStrategy
public org.apache.http.conn.ssl.TrustStrategy getTrustStrategy()Gets the TrustStrategy- Returns:
TrustStrategy
-
setTrustStrategy
public void setTrustStrategy(org.apache.http.conn.ssl.TrustStrategy trustStrategy)Sets theTrustStrategy
- Parameters:
trustStrategy
-TrustStrategy
-