Class 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 Detail

      • contentType

        protected String contentType
    • Constructor Detail

      • 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 Detail

      • 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)
        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
      • get

        public DataLoader.DataAndUrl get​(List<String> urlStrings)
        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
      • get

        public byte[] get​(String url,
                          boolean refresh)
        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
      • ldapGet

        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?cACertificate;binary
        Parameters:
        urlString -
        Returns:
      • ftpGet

        protected byte[] ftpGet​(String urlString)
        This method retrieves data using FTP protocol .
        Parameters:
        urlString -
        Returns:
      • fileGet

        protected byte[] fileGet​(String urlString)
      • httpGet

        protected byte[] httpGet​(String url)
        This method retrieves data using HTTP or HTTPS protocol and 'get' method.
        Parameters:
        url - to access
        Returns:
        byte array of obtained data or null
      • 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
      • setSslKeystorePath

        public void setSslKeystorePath​(String sslKeystorePath)
      • setKeyStoreAsTrustMaterial

        public void setKeyStoreAsTrustMaterial​(boolean loadKeyStoreAsTrustMaterial)
      • setSslKeystoreType

        public void setSslKeystoreType​(String sslKeystoreType)
      • setSslKeystorePassword

        public void setSslKeystorePassword​(String sslKeystorePassword)
      • setSslTruststorePath

        public void setSslTruststorePath​(String sslTruststorePath)
      • 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)
      • 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)