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
  • Field Details

  • Constructor Details

    • CommonsDataLoader

      public CommonsDataLoader()
      The default constructor for CommonsDataLoader.
    • CommonsDataLoader

      public CommonsDataLoader​(String contentType)
      The constructor for CommonsDataLoader with defined content-type.
      Parameters:
      contentType - The content type of each request
  • Method Details

    • getSSLKeyStore

      protected KeyStore getSSLKeyStore() throws IOException, GeneralSecurityException
      Throws:
      IOException
      GeneralSecurityException
    • getSSLTrustStore

      protected KeyStore getSSLTrustStore() throws IOException, GeneralSecurityException
      Throws:
      IOException
      GeneralSecurityException
    • getHttpClientBuilder

      protected org.apache.http.impl.client.HttpClientBuilder getHttpClientBuilder()
    • getHttpClient

      protected org.apache.http.impl.client.CloseableHttpClient getHttpClient​(String url)
    • get

      public byte[] get​(String urlString) throws DSSException
      Description copied from interface: DataLoader
      Execute a HTTP GET operation.
      Specified by:
      get in interface DataLoader
      Parameters:
      urlString - the url to access
      Returns:
      byte array of obtained data or null
      Throws:
      DSSException - in case of DataLoader error
    • get

      public DataLoader.DataAndUrl get​(List<String> urlStrings) throws DSSException
      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 interface DataLoader
      Parameters:
      urlStrings - List of Strings 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

      public byte[] get​(String url, boolean refresh) throws DSSException
      This method is useful only with the cache handling implementation of the DataLoader.
      Specified by:
      get in interface DataLoader
      Parameters:
      url - to access
      refresh - if true indicates that the cached data should be refreshed
      Returns:
      byte array of obtained data
      Throws:
      DSSException - in case of DataLoader error
    • ldapGet

      protected byte[] ldapGet​(String urlString) throws DSSException
      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

      protected byte[] ftpGet​(String urlString) throws DSSException
      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

      protected byte[] fileGet​(String urlString) throws DSSException
      Throws:
      DSSException
    • httpGet

      protected byte[] httpGet​(String url) throws DSSException
      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
    • post

      public byte[] post​(String url, byte[] content)
      Description copied from interface: DataLoader
      Executes a HTTP POST operation
      Specified by:
      post in interface DataLoader
      Parameters:
      url - to access
      content - 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 IOException
      Throws:
      IOException
    • readHttpResponse

      protected byte[] readHttpResponse​(org.apache.http.client.methods.CloseableHttpResponse httpResponse) throws IOException
      Throws:
      IOException
    • getContent

      protected byte[] getContent​(org.apache.http.HttpEntity responseEntity) throws IOException
      Throws:
      IOException
    • getTimeoutConnection

      public int getTimeoutConnection()
      Used when the HttpClient is created.
      Returns:
      the value (millis)
    • setTimeoutConnection

      public void setTimeoutConnection​(int timeoutConnection)
      Used when the HttpClient is created.
      Parameters:
      timeoutConnection - the value (millis)
    • getTimeoutSocket

      public int getTimeoutSocket()
      Used when the HttpClient is created.
      Returns:
      the value (millis)
    • setTimeoutSocket

      public void setTimeoutSocket​(int timeoutSocket)
      Used when the HttpClient is created.
      Parameters:
      timeoutSocket - the value (millis)
    • getConnectionsMaxTotal

      public int getConnectionsMaxTotal()
      Used when the HttpClient is created.
      Returns:
      maximum number of connections
    • setConnectionsMaxTotal

      public void setConnectionsMaxTotal​(int connectionsMaxTotal)
      Used when the HttpClient is created.
      Parameters:
      connectionsMaxTotal - maximum number of connections
    • getConnectionsMaxPerRoute

      public int getConnectionsMaxPerRoute()
      Used when the HttpClient is created.
      Returns:
      maximum number of connections per one route
    • setConnectionsMaxPerRoute

      public void setConnectionsMaxPerRoute​(int connectionsMaxPerRoute)
      Used when the HttpClient is created.
      Parameters:
      connectionsMaxPerRoute - maximum number of connections per one route
    • isRedirectsEnabled

      public boolean isRedirectsEnabled()
      Used when the HttpClient is created.
      Returns:
      true if http redirects are allowed
    • setRedirectsEnabled

      public void setRedirectsEnabled​(boolean redirectsEnabled)
      Used when the HttpClient is created.
      Parameters:
      redirectsEnabled - true if http redirects are allowed
    • getContentType

      public String getContentType()
      Returns:
      the contentType
    • setContentType

      public void setContentType​(String contentType)
      This allows to set the content type. Example: Content-Type "application/ocsp-request"
      Specified by:
      setContentType in interface DataLoader
      Parameters:
      contentType -
    • getAcceptedHttpStatus

      public List<Integer> getAcceptedHttpStatus()
    • setAcceptedHttpStatus

      public void setAcceptedHttpStatus​(List<Integer> acceptedHttpStatus)
      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

      public ProxyConfig getProxyConfig()
      Returns:
      associated ProxyConfig
    • setProxyConfig

      public void setProxyConfig​(ProxyConfig proxyConfig)
      Parameters:
      proxyConfig - the proxyConfig to set
    • setSslProtocol

      public void setSslProtocol​(String sslProtocol)
      This method sets the SSL protocol to be used ('TLSv1.2' by default)
      Parameters:
      sslProtocol - the ssl protocol to be used
    • setSslKeystore

      public void setSslKeystore​(DSSDocument sslKeyStore)
    • setKeyStoreAsTrustMaterial

      public void setKeyStoreAsTrustMaterial​(boolean loadKeyStoreAsTrustMaterial)
    • setSslKeystoreType

      public void setSslKeystoreType​(String sslKeystoreType)
    • setSslKeystorePassword

      public void setSslKeystorePassword​(String sslKeystorePassword)
    • setSslTruststore

      public void setSslTruststore​(DSSDocument sslTrustStore)
    • setSslTruststorePassword

      public void setSslTruststorePassword​(String sslTruststorePassword)
    • setSslTruststoreType

      public void setSslTruststoreType​(String sslTruststoreType)
    • addAuthentication

      public CommonsDataLoader addAuthentication​(String host, int port, String scheme, String login, String password)
      Parameters:
      host - host
      port - port
      scheme - scheme
      login - login
      password - password
      Returns:
      this for fluent addAuthentication
    • propagateAuthentication

      public void propagateAuthentication​(CommonsDataLoader commonsDataLoader)
      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)
    • setServiceUnavailableRetryStrategy

      public void setServiceUnavailableRetryStrategy​(org.apache.http.client.ServiceUnavailableRetryStrategy serviceUnavailableRetryStrategy)
    • getSupportedSSLProtocols

      public String[] getSupportedSSLProtocols()
    • setSupportedSSLProtocols

      public void setSupportedSSLProtocols​(String[] supportedSSLProtocols)
    • getSupportedSSLCipherSuites

      public String[] getSupportedSSLCipherSuites()
    • setSupportedSSLCipherSuites

      public void setSupportedSSLCipherSuites​(String[] supportedSSLCipherSuites)
    • getHostnameVerifier

      public HostnameVerifier getHostnameVerifier()
    • setHostnameVerifier

      public void setHostnameVerifier​(HostnameVerifier hostnameVerifier)
    • getTrustStrategy

      public org.apache.http.conn.ssl.TrustStrategy getTrustStrategy()
    • setTrustStrategy

      public void setTrustStrategy​(org.apache.http.conn.ssl.TrustStrategy trustStrategy)