Class RestClient


  • public class RestClient
    extends Object

    This client provides wrappers, helper-methods and exception-handling to facilitate requests to the REST API. It is initialized with a URL pointing to the base-location providing the services. After a successful login, a WebTarget-object can be retrieved that is then used to assemble and send requests; response-objects are returned from the server, containing the requested data and further information in the case of an error.

    The Rest API client builds upon an underlying Jersey-client: detailed information about the use of the WebTarget-object (base) to build requests can be found at http://jersey.java.net/ .

    • Constructor Summary

      Constructors 
      Constructor Description
      RestClient​(String baseUrl)
      Initializes the REST-API client with a given base-URL and sets the necessary cookies; prepares the client for a subsequent login
      RestClient​(java.util.function.Supplier<org.glassfish.jersey.client.JerseyClient> clientSupplier, String baseUrl)
      Initialize the REST-API client with a Jersey Client supplied by the given clientSupplier and the base URL.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void assertMatchingVersion()
      Checks if the version of the REST API on the server is the same that is used by the client; if there is a mismatch between the two versions, a RestException is thrown
      void assertResponse​(GenericResponse response)
      Analyzes the response of a finished request and asserts that it was executed without errors; if a problem occurred during the request, a specialized RestException is thrown
      User authenticate​(String sid, String sessionSecret)
      Authenticate with given sid and session secret
      javax.ws.rs.client.WebTarget base()
      Provides access to the WebTarget that is used as the base for all commands to the server
      List<org.apache.http.cookie.Cookie> getCookies()
      Get the cookies currently stored in the client
      javax.ws.rs.client.Client getJerseyClient()
      Get the underlying Jersey Client, used to define filters and configure advanced settings
      String getSid()
      Get the ID of the active session, as generated during login
      void login​(String username, String password)
      Logs the specified user into the system using the password given
      void logout()
      Logs out the current user
      void setSid​(String sid)
      Set the ID of the session that should be used.
      void ssologin()
      Performs login on an SSO system - before this works, necessary filters have to be defined
    • Constructor Detail

      • RestClient

        public RestClient​(String baseUrl)
        Initializes the REST-API client with a given base-URL and sets the necessary cookies; prepares the client for a subsequent login
        Parameters:
        baseUrl - An URL pointing to the base of the RESTful service provider (Example: http://[hostname]/CNPortletapp/rest/)
      • RestClient

        public RestClient​(java.util.function.Supplier<org.glassfish.jersey.client.JerseyClient> clientSupplier,
                          String baseUrl)
        Initialize the REST-API client with a Jersey Client supplied by the given clientSupplier and the base URL. The default Jersey Client is created like this:
         new RestClient(() -> {
                        ClientConfig clientConfig = new ClientConfig().connectorProvider(new HttpUrlConnectorProvider());
                        return JerseyClientBuilder.createClient(clientConfig).register(JacksonFeature.class).register(MultiPartFeature.class);
         }, "http://myhost/CNPortletapp/rest");
         
        Parameters:
        clientSupplier - supplier for the Jersey Client
        baseUrl - URL pointing to the base of the REST service provider (Example: http://[hostname]/CNPortletapp/rest/)
    • Method Detail

      • login

        public void login​(String username,
                          String password)
                   throws RestException
        Logs the specified user into the system using the password given
        Parameters:
        username - user name
        password - password
        Throws:
        RestException - If the login failed
      • ssologin

        public void ssologin()
                      throws RestException
        Performs login on an SSO system - before this works, necessary filters have to be defined
        Throws:
        RestException - If the login via SSO failed
      • authenticate

        public User authenticate​(String sid,
                                 String sessionSecret)
                          throws RestException
        Authenticate with given sid and session secret
        Parameters:
        sid - SID
        sessionSecret - session secret
        Returns:
        user
        Throws:
        RestException - if authentication fails
      • assertResponse

        public void assertResponse​(GenericResponse response)
                            throws RestException
        Analyzes the response of a finished request and asserts that it was executed without errors; if a problem occurred during the request, a specialized RestException is thrown
        Parameters:
        response - The response of the request that needs to be checked
        Throws:
        RestException - Thrown if the request was not successful, and contains further information of the reason of failure
      • assertMatchingVersion

        public void assertMatchingVersion()
                                   throws RestException
        Checks if the version of the REST API on the server is the same that is used by the client; if there is a mismatch between the two versions, a RestException is thrown
        Throws:
        RestException - Mismatch between the versions detected
      • base

        public javax.ws.rs.client.WebTarget base()
                                          throws RestException
        Provides access to the WebTarget that is used as the base for all commands to the server
        Returns:
        The base resource, with the active SID already set
        Throws:
        RestException - If no valid SID is registered with the client
      • getSid

        public String getSid()
        Get the ID of the active session, as generated during login
        Returns:
        session ID
      • setSid

        public void setSid​(String sid)
        Set the ID of the session that should be used.
      • getJerseyClient

        public javax.ws.rs.client.Client getJerseyClient()
        Get the underlying Jersey Client, used to define filters and configure advanced settings
        Returns:
        Jersey Client
      • getCookies

        public List<org.apache.http.cookie.Cookie> getCookies()
                                                       throws RestException
        Get the cookies currently stored in the client
        Returns:
        stored cookies
        Throws:
        RestException