Class AbstractSlingClient

  • All Implemented Interfaces:
    Closeable, AutoCloseable, org.apache.http.client.HttpClient
    Direct Known Subclasses:
    SlingClient

    @Contract(threading=IMMUTABLE)
    public class AbstractSlingClient
    extends Object
    implements org.apache.http.client.HttpClient, Closeable
    The abstract base client for all implementing integration test clients.
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      <T extends AbstractSlingClient>
      T
      adaptTo​(Class<T> clientClass)
      Returns an instance of any class extending the AbstractSlingClient.
      void addValue​(String key, String value)
      Adds the extra key, value to the generic values
      void close()  
      SlingHttpResponse doDelete​(String requestPath, List<org.apache.http.NameValuePair> parameters, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes a DELETE request and consumes the entity in the response.
      SlingHttpResponse doGet​(String requestPath, int... expectedStatus)
      Executes a GET request and consumes the entity in the response (so the connection is closed immediately) The content is cached and can be retrieved using response.getContent().
      SlingHttpResponse doGet​(String requestPath, List<org.apache.http.NameValuePair> parameters, int... expectedStatus)
      Executes a GET request and consumes the entity in the response (so the connection is closed immediately) The content is cached and can be retrieved using response.getContent().
      SlingHttpResponse doGet​(String requestPath, List<org.apache.http.NameValuePair> parameters, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes a GET request and consumes the entity in the response (so the connection is closed immediately) The content is cached and can be retrieved using response.getContent().
      SlingHttpResponse doHead​(String requestPath, List<org.apache.http.NameValuePair> parameters, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes a HEAD request
      SlingHttpResponse doPatch​(String requestPath, org.apache.http.HttpEntity entity, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes a PATCH request and consumes the entity in the response.
      SlingHttpResponse doPost​(String requestPath, org.apache.http.HttpEntity entity, int... expectedStatus)
      Executes a POST request and consumes the entity in the response.
      SlingHttpResponse doPost​(String requestPath, org.apache.http.HttpEntity entity, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes a POST request and consumes the entity in the response.
      SlingHttpResponse doPut​(String requestPath, org.apache.http.HttpEntity entity, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes a PUT request and consumes the entity in the response.
      SlingHttpResponse doRawRequest​(String method, String uri, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes a raw HTTP request, WITHOUT consuming the entity in the response.
      SlingHttpResponse doRequest​(org.apache.http.client.methods.HttpUriRequest request, List<org.apache.http.Header> headers, int... expectedStatus)
      Execute an HTTP request and consumes the entity in the response.
      SlingHttpResponse doStreamGet​(String requestPath, List<org.apache.http.NameValuePair> parameters, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes a GET request WITHOUT consuming the entity in the response.
      SlingHttpResponse doStreamPost​(String requestPath, org.apache.http.HttpEntity entity, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes a POST request WITHOUT consuming the entity in the response.
      SlingHttpResponse doStreamRequest​(org.apache.http.client.methods.HttpUriRequest request, List<org.apache.http.Header> headers, int... expectedStatus)
      Executes an HTTP request, WITHOUT consuming the entity in the response.
      org.apache.http.HttpResponse execute​(org.apache.http.client.methods.HttpUriRequest request)  
      <T> T execute​(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler)  
      <T> T execute​(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context)  
      org.apache.http.client.methods.CloseableHttpResponse execute​(org.apache.http.client.methods.HttpUriRequest request, org.apache.http.protocol.HttpContext context)  
      org.apache.http.HttpResponse execute​(org.apache.http.HttpHost target, org.apache.http.HttpRequest request)  
      <T> T execute​(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler)  
      <T> T execute​(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.client.ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context)  
      org.apache.http.client.methods.CloseableHttpResponse execute​(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.protocol.HttpContext context)  
      protected String getClientId()
      Returns the unique id for this client, generated automatically during instantiation.
      org.apache.http.conn.ClientConnectionManager getConnectionManager()
      Deprecated.
      org.apache.http.client.CookieStore getCookieStore()  
      org.apache.http.client.CredentialsProvider getCredentialsProvider()  
      org.apache.http.params.HttpParams getParams()
      Deprecated.
      String getPassword()
      Returns the password of the user that will be used to authenticate the requests (by basic auth, if not replaced).
      URI getPath​(String url)
      Extracts the relative sling path (to server url) from an url.
      URI getPath​(URI url)
      Transforms an external url into a sling path, by subtracting the server url (incl.
      URI getUrl()
      Base HTTP URI of the server under test.
      URI getUrl​(String path)
      Gets the full URL for a given path.
      URI getUrl​(String path, List<org.apache.http.NameValuePair> parameters)
      Creates a full URL for a given path with additional parameters.
      String getUser()
      Returns the name of the user that will be used to authenticate the requests (by basic auth, if not replaced).
      String getValue​(String key)
      Gets the value for key from the generic values
      Map<String,​String> getValues()
      Returns the extra values map
      boolean hasValue​(String key)
      Checks whether the handler has the given generic value
    • Method Detail

      • getClientId

        protected String getClientId()
        Returns the unique id for this client, generated automatically during instantiation.
        Returns:
        client's unique id
      • getUrl

        public URI getUrl()

        Base HTTP URI of the server under test. It includes the context path, if present, and always ends with a slash

        Example: http://localhost:8080/a/

        Returns:
        the server's URL
      • getUser

        public String getUser()
        Returns the name of the user that will be used to authenticate the requests (by basic auth, if not replaced).
        Returns:
        user's name
      • getPassword

        public String getPassword()
        Returns the password of the user that will be used to authenticate the requests (by basic auth, if not replaced).
        Returns:
        user's password
      • getUrl

        public URI getUrl​(String path)

        Gets the full URL for a given path.

        The input path is considered relative to server url path ("/" or context path), even though it starts with a slash. The path is relativized and appended to the server url.

        Note: in the case of a server url with context path - the input path should not contain the context path, otherwise it will be duplicated in the resulting url

        Parameters:
        path - the relative path
        Returns:
        the absolute URI
        Throws:
        IllegalArgumentException - if path cannot be parsed into an URI
        NullPointerException - if path is null
      • getUrl

        public URI getUrl​(String path,
                          List<org.apache.http.NameValuePair> parameters)
        Creates a full URL for a given path with additional parameters. Same as getUrl(String), but adds the parameters in the URI.
        Parameters:
        path - path relative to server url; can start with / but should not include the server context path
        parameters - url parameters to be added to the url. If the given argument is null, nothing will be added to the url. If the given argument is an empty array, it will force a "?" at the end of the url.
        Returns:
        full url as URI
        Throws:
        IllegalArgumentException - if path or parameters cannot be parsed into an URI
        NullPointerException - if path is null
      • getPath

        public URI getPath​(URI url)

        Transforms an external url into a sling path, by subtracting the server url (incl. contextPath). The returned path will not contain the context path, so it can be used with getUrl(String)

        The url can be absolute (incl. hostname) or relative to root (starts with "/").

        If the server url is not a prefix of the given url, it returns the given url

        If the url is just a path, it returns the path (with leading slash if not already present)

        Parameters:
        url - full url
        Returns:
        sling path
      • getPath

        public URI getPath​(String url)
        Extracts the relative sling path (to server url) from an url. Identical to getPath(URI), except that it also parses the String int URI
        Parameters:
        url - string containing the full url
        Returns:
        relative path as URI
        Throws:
        IllegalArgumentException - if the parameter cannot be parsed
        NullPointerException - if url is null
      • adaptTo

        public <T extends AbstractSlingClient> T adaptTo​(Class<T> clientClass)
                                                  throws TestingValidationException

        Returns an instance of any class extending the AbstractSlingClient. The new client will use the the same HttpClient and SlingClientConfig

        Type Parameters:
        T - any class extending the AbstractSlingClient
        Parameters:
        clientClass - the type of client requested, identified by its Class
        Returns:
        instance of a class extending the AbstractSlingClient
        Throws:
        TestingValidationException - if client can't be instantiated
      • getValue

        public String getValue​(String key)
        Gets the value for key from the generic values
        Parameters:
        key - the key
        Returns:
        the value
      • addValue

        public void addValue​(String key,
                             String value)
        Adds the extra key, value to the generic values
        Parameters:
        key - the key for witch to add a value
        value - the value
      • hasValue

        public boolean hasValue​(String key)
        Checks whether the handler has the given generic value
        Parameters:
        key - the key
        Returns:
        true if the value was found
      • getValues

        public Map<String,​String> getValues()
        Returns the extra values map
        Returns:
        the map of values
      • getCookieStore

        public org.apache.http.client.CookieStore getCookieStore()
        Returns:
        the cookie store reference
      • getCredentialsProvider

        public org.apache.http.client.CredentialsProvider getCredentialsProvider()
        Returns:
        the credentials provider
      • doStreamRequest

        public SlingHttpResponse doStreamRequest​(org.apache.http.client.methods.HttpUriRequest request,
                                                 List<org.apache.http.Header> headers,
                                                 int... expectedStatus)
                                          throws ClientException

        Executes an HTTP request, WITHOUT consuming the entity in the response. The caller is responsible for consuming the entity or closing the response's InputStream in order to release the connection. Otherwise, the client might run out of connections and will block

        Use this with caution and only if necessary for streaming, otherwise use the safe method doRequest(HttpUriRequest, List, int...)

        Adds the headers and checks the response against expected status

        Parameters:
        request - the request to be executed
        headers - optional headers to be added to the request
        expectedStatus - if passed, the response status is checked against it/them, and has to match at least one of them
        Returns:
        the response, with the entity not consumed
        Throws:
        ClientException - if the request could not be executed
      • doRawRequest

        public SlingHttpResponse doRawRequest​(String method,
                                              String uri,
                                              List<org.apache.http.Header> headers,
                                              int... expectedStatus)
                                       throws ClientException

        Executes a raw HTTP request, WITHOUT consuming the entity in the response. The caller is responsible for consuming the entity or closing the response's InputStream in order to release the connection. Otherwise, the client might run out of connections and will block

        Use this with caution and only if necessary for custom methods or for paths that must not be encoded, otherwise use the safe method doRequest(HttpUriRequest, List, int...)

        It behaves as doStreamRequest(HttpUriRequest, List, int...), so the entity is not consumed.

        Adds the headers and checks the response against expected status

        Parameters:
        method - the request to be executed
        uri - the uri to be sent as it is (will not prepend the context path)
        headers - optional headers to be added to the request
        expectedStatus - if passed, the response status is checked against it/them, and has to match at least one of them
        Returns:
        the response, with the entity not consumed
        Throws:
        ClientException - if the request could not be executed
      • doStreamGet

        public SlingHttpResponse doStreamGet​(String requestPath,
                                             List<org.apache.http.NameValuePair> parameters,
                                             List<org.apache.http.Header> headers,
                                             int... expectedStatus)
                                      throws ClientException

        Executes a GET request WITHOUT consuming the entity in the response. The caller is responsible to close the connection. Otherwise, the client might run out of connections and will block

        Use this with caution and only if necessary for streaming, otherwise use the safe method doGet(String, List, List, int...)

        Adds the given parameters and headers and checks the response against expected status

        Parameters:
        requestPath - path relative to client url
        parameters - optional url parameters to be added
        headers - optional headers to be added
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity not consumed
        Throws:
        ClientException - if the request could not be executed
      • doStreamPost

        public SlingHttpResponse doStreamPost​(String requestPath,
                                              org.apache.http.HttpEntity entity,
                                              List<org.apache.http.Header> headers,
                                              int... expectedStatus)
                                       throws ClientException

        Executes a POST request WITHOUT consuming the entity in the response. The caller is responsible to close the connection

        Use this with caution and only if necessary for streaming, otherwise use the safe method doPost(String, HttpEntity, List, int...)

        Adds the headers and checks the response against expected status

        Parameters:
        requestPath - path relative to client url
        entity - http entity to be sent by POST
        headers - optional headers to be added
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity not consumed
        Throws:
        ClientException - if the request could not be executed
      • doRequest

        public SlingHttpResponse doRequest​(org.apache.http.client.methods.HttpUriRequest request,
                                           List<org.apache.http.Header> headers,
                                           int... expectedStatus)
                                    throws ClientException

        Execute an HTTP request and consumes the entity in the response. The content is cached and can be retrieved using response.getContent(). This method is safe to use because it closes the entity so the caller has no responsibility.

        This means the response entity SHOULD NOT BE USED to read the content, e.g. response.getEntity().getContent()

        Parameters:
        request - the request to be executed
        headers - optional headers to be added to the request
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity consumed and the content cached
        Throws:
        ClientException - if the request could not be executed
      • doGet

        public SlingHttpResponse doGet​(String requestPath,
                                       List<org.apache.http.NameValuePair> parameters,
                                       List<org.apache.http.Header> headers,
                                       int... expectedStatus)
                                throws ClientException

        Executes a GET request and consumes the entity in the response (so the connection is closed immediately) The content is cached and can be retrieved using response.getContent().

        Adds the passed parameters and headers and checks the expected status

        Parameters:
        requestPath - path relative to client url
        parameters - optional url parameters to be added
        headers - optional headers to be added
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity consumed amd the content cached
        Throws:
        ClientException - if the request could not be executed
      • doGet

        public SlingHttpResponse doGet​(String requestPath,
                                       List<org.apache.http.NameValuePair> parameters,
                                       int... expectedStatus)
                                throws ClientException

        Executes a GET request and consumes the entity in the response (so the connection is closed immediately) The content is cached and can be retrieved using response.getContent().

        Adds the passed parameters and checks the expected status

        Parameters:
        requestPath - path relative to client url
        parameters - optional url parameters to be added
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity consumed amd the content cached
        Throws:
        ClientException - if the request could not be executed
      • doGet

        public SlingHttpResponse doGet​(String requestPath,
                                       int... expectedStatus)
                                throws ClientException

        Executes a GET request and consumes the entity in the response (so the connection is closed immediately) The content is cached and can be retrieved using response.getContent().

        Parameters:
        requestPath - path relative to client url
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity consumed amd the content cached
        Throws:
        ClientException - if the request could not be executed
      • doHead

        public SlingHttpResponse doHead​(String requestPath,
                                        List<org.apache.http.NameValuePair> parameters,
                                        List<org.apache.http.Header> headers,
                                        int... expectedStatus)
                                 throws ClientException

        Executes a HEAD request

        Adds the passed parameters and headers and checks the expected status

        Parameters:
        requestPath - path relative to client url
        parameters - optional url parameters to be added
        headers - optional headers to be added
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response
        Throws:
        ClientException - if the request could not be executed
      • doPost

        public SlingHttpResponse doPost​(String requestPath,
                                        org.apache.http.HttpEntity entity,
                                        List<org.apache.http.Header> headers,
                                        int... expectedStatus)
                                 throws ClientException

        Executes a POST request and consumes the entity in the response. The content is cached and be retrieved by calling response.getContent()

        Adds the passed entity and headers and checks the expected status

        Parameters:
        requestPath - path relative to client url
        entity - the entity to be added to request
        headers - optional headers to be added
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity consumed and the content cached
        Throws:
        ClientException - if the request could not be executed
      • doPost

        public SlingHttpResponse doPost​(String requestPath,
                                        org.apache.http.HttpEntity entity,
                                        int... expectedStatus)
                                 throws ClientException

        Executes a POST request and consumes the entity in the response. The content is cached and be retrieved by calling response.getContent()

        Adds the passed entity and checks the expected status

        Parameters:
        requestPath - path relative to client url
        entity - the entity to be added to request
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity consumed and the content cached
        Throws:
        ClientException - if the request could not be executed
      • doPut

        public SlingHttpResponse doPut​(String requestPath,
                                       org.apache.http.HttpEntity entity,
                                       List<org.apache.http.Header> headers,
                                       int... expectedStatus)
                                throws ClientException

        Executes a PUT request and consumes the entity in the response. The content is cached and be retrieved by calling response.getContent()

        Adds the passed entity and headers and checks the expected status

        Parameters:
        requestPath - path relative to client url
        entity - the entity to be added to request
        headers - optional url parameters to be added
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity consumed and the content cached
        Throws:
        ClientException - if the request could not be executed
      • doPatch

        public SlingHttpResponse doPatch​(String requestPath,
                                         org.apache.http.HttpEntity entity,
                                         List<org.apache.http.Header> headers,
                                         int... expectedStatus)
                                  throws ClientException

        Executes a PATCH request and consumes the entity in the response. The content is cached and be retrieved by calling response.getContent()

        Adds the passed entity and headers and checks the expected status

        Parameters:
        requestPath - path relative to client url
        entity - the entity to be added to request
        headers - optional url parameters to be added
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity consumed and the content cached
        Throws:
        ClientException - if the request could not be executed
      • doDelete

        public SlingHttpResponse doDelete​(String requestPath,
                                          List<org.apache.http.NameValuePair> parameters,
                                          List<org.apache.http.Header> headers,
                                          int... expectedStatus)
                                   throws ClientException

        Executes a DELETE request and consumes the entity in the response. The content is cached and be retrieved by calling response.getContent()

        Adds the passed parameters and headers and checks the expected status

        Parameters:
        requestPath - path relative to client url
        parameters - optional url parameters to be added
        headers - optional url parameters to be added
        expectedStatus - if passed, the response status will have to match one of them
        Returns:
        the response with the entity consumed and the content cached
        Throws:
        ClientException - if the request could not be executed
      • getParams

        @Deprecated
        public org.apache.http.params.HttpParams getParams()
        Deprecated.
        Specified by:
        getParams in interface org.apache.http.client.HttpClient
      • getConnectionManager

        @Deprecated
        public org.apache.http.conn.ClientConnectionManager getConnectionManager()
        Deprecated.
        Specified by:
        getConnectionManager in interface org.apache.http.client.HttpClient
      • execute

        public org.apache.http.HttpResponse execute​(org.apache.http.client.methods.HttpUriRequest request)
                                             throws IOException,
                                                    org.apache.http.client.ClientProtocolException
        Specified by:
        execute in interface org.apache.http.client.HttpClient
        Throws:
        IOException
        org.apache.http.client.ClientProtocolException
      • execute

        public org.apache.http.client.methods.CloseableHttpResponse execute​(org.apache.http.client.methods.HttpUriRequest request,
                                                                            org.apache.http.protocol.HttpContext context)
                                                                     throws IOException,
                                                                            org.apache.http.client.ClientProtocolException
        Specified by:
        execute in interface org.apache.http.client.HttpClient
        Throws:
        IOException
        org.apache.http.client.ClientProtocolException
      • execute

        public org.apache.http.HttpResponse execute​(org.apache.http.HttpHost target,
                                                    org.apache.http.HttpRequest request)
                                             throws IOException,
                                                    org.apache.http.client.ClientProtocolException
        Specified by:
        execute in interface org.apache.http.client.HttpClient
        Throws:
        IOException
        org.apache.http.client.ClientProtocolException
      • execute

        public org.apache.http.client.methods.CloseableHttpResponse execute​(org.apache.http.HttpHost target,
                                                                            org.apache.http.HttpRequest request,
                                                                            org.apache.http.protocol.HttpContext context)
                                                                     throws IOException,
                                                                            org.apache.http.client.ClientProtocolException
        Specified by:
        execute in interface org.apache.http.client.HttpClient
        Throws:
        IOException
        org.apache.http.client.ClientProtocolException
      • execute

        public <T> T execute​(org.apache.http.client.methods.HttpUriRequest request,
                             org.apache.http.client.ResponseHandler<? extends T> responseHandler)
                      throws IOException,
                             org.apache.http.client.ClientProtocolException
        Specified by:
        execute in interface org.apache.http.client.HttpClient
        Throws:
        IOException
        org.apache.http.client.ClientProtocolException
      • execute

        public <T> T execute​(org.apache.http.client.methods.HttpUriRequest request,
                             org.apache.http.client.ResponseHandler<? extends T> responseHandler,
                             org.apache.http.protocol.HttpContext context)
                      throws IOException,
                             org.apache.http.client.ClientProtocolException
        Specified by:
        execute in interface org.apache.http.client.HttpClient
        Throws:
        IOException
        org.apache.http.client.ClientProtocolException
      • execute

        public <T> T execute​(org.apache.http.HttpHost target,
                             org.apache.http.HttpRequest request,
                             org.apache.http.client.ResponseHandler<? extends T> responseHandler)
                      throws IOException,
                             org.apache.http.client.ClientProtocolException
        Specified by:
        execute in interface org.apache.http.client.HttpClient
        Throws:
        IOException
        org.apache.http.client.ClientProtocolException
      • execute

        public <T> T execute​(org.apache.http.HttpHost target,
                             org.apache.http.HttpRequest request,
                             org.apache.http.client.ResponseHandler<? extends T> responseHandler,
                             org.apache.http.protocol.HttpContext context)
                      throws IOException,
                             org.apache.http.client.ClientProtocolException
        Specified by:
        execute in interface org.apache.http.client.HttpClient
        Throws:
        IOException
        org.apache.http.client.ClientProtocolException