Class WebClient

  • All Implemented Interfaces:
    Client

    public class WebClient
    extends AbstractClient
    Http-centric web client
    • Field Detail

      • USE_CONFIGURATION_REFERENCE_WHEN_COPY

        public static final String USE_CONFIGURATION_REFERENCE_WHEN_COPY
        See Also:
        Constant Field Values
    • Constructor Detail

      • WebClient

        protected WebClient​(String baseAddress)
      • WebClient

        protected WebClient​(URI baseURI)
      • WebClient

        protected WebClient​(ClientState state)
    • Method Detail

      • create

        public static WebClient create​(String baseAddress)
        Creates WebClient
        Parameters:
        baseAddress - baseAddress
      • create

        public static WebClient create​(String baseAddress,
                                       Map<String,​Object> properties)
        Creates WebClient
        Parameters:
        baseAddress - baseAddress
      • create

        public static WebClient create​(URI baseURI)
        Creates WebClient
        Parameters:
        baseURI - baseURI
      • create

        public static WebClient create​(String baseURI,
                                       boolean threadSafe)
        Creates WebClient
        Parameters:
        baseURI - baseURI
      • create

        public static WebClient create​(String baseAddress,
                                       List<?> providers)
        Creates WebClient
        Parameters:
        baseAddress - baseURI
        providers - list of providers
      • create

        public static WebClient create​(String baseAddress,
                                       List<?> providers,
                                       boolean threadSafe)
        Creates WebClient
        Parameters:
        baseAddress - baseURI
        providers - list of providers
        threadSafe - if true ThreadLocalClientState is used
      • create

        public static WebClient create​(String baseAddress,
                                       List<?> providers,
                                       Map<String,​Object> properties,
                                       boolean threadSafe)
        Creates WebClient
        Parameters:
        baseAddress - baseURI
        providers - list of providers
        threadSafe - if true ThreadLocalClientState is used
        properties - additional properties
      • create

        public static WebClient create​(String baseAddress,
                                       List<?> providers,
                                       long timeToKeepState)
        Creates a thread safe WebClient
        Parameters:
        baseAddress - baseURI
        providers - list of providers
        timeToKeepState - time to keep this thread safe state.
      • create

        public static WebClient create​(String baseAddress,
                                       List<?> providers,
                                       String configLocation)
        Creates WebClient
        Parameters:
        baseAddress - baseAddress
        providers - list of providers
        configLocation - classpath location of the configuration resource, can be null
        Returns:
        WebClient instance
      • create

        public static WebClient create​(String baseAddress,
                                       List<?> providers,
                                       List<? extends org.apache.cxf.feature.Feature> features,
                                       String configLocation)
        Creates WebClient with a list of custom features
        Parameters:
        baseAddress - baseAddress
        providers - list of providers
        features - the features which will be applied to the client
        configLocation - classpath location of the configuration resource, can be null
        Returns:
        WebClient instance
      • create

        public static WebClient create​(String baseAddress,
                                       String configLocation)
        Creates WebClient
        Parameters:
        baseAddress - baseAddress
        configLocation - classpath location of the configuration resource, can be null
        Returns:
        WebClient instance
      • create

        public static WebClient create​(String baseAddress,
                                       String username,
                                       String password,
                                       String configLocation)
        Creates WebClient which will do basic authentication
        Parameters:
        baseAddress - baseAddress
        username - username
        password - password
        configLocation - classpath location of the configuration resource, can be null
        Returns:
        WebClient instance
      • create

        public static WebClient create​(String baseAddress,
                                       List<?> providers,
                                       String username,
                                       String password,
                                       String configLocation)
        Creates WebClient which will do basic authentication
        Parameters:
        baseAddress - baseAddress
        providers - list of providers
        username - username
        password - password
        configLocation - classpath location of the configuration resource, can be null
        Returns:
        WebClient instance
      • fromClientObject

        public static WebClient fromClientObject​(Object object)
        Creates WebClient, baseURI will be set to Client currentURI
        Parameters:
        object - existing client object
      • fromClient

        public static WebClient fromClient​(Client client)
        Creates WebClient, baseURI will be set to Client currentURI
        Parameters:
        client - existing client
      • fromClient

        public static WebClient fromClient​(Client client,
                                           boolean inheritHeaders)
        Creates WebClient, baseURI will be set to Client currentURI
        Parameters:
        client - existing client
        inheritHeaders - if existing Client headers can be inherited by new client
      • client

        public static Client client​(Object object)
        Converts object to Client
        Parameters:
        object - the object
        Returns:
        Client object converted to Client
      • getConfig

        public static ClientConfiguration getConfig​(Object client)
        Retrieves ClientConfiguration
        Parameters:
        client - proxy or http-centric Client
        Returns:
        underlying ClientConfiguration instance
      • invoke

        public javax.ws.rs.core.Response invoke​(String httpMethod,
                                                Object body)
        Does HTTP invocation
        Parameters:
        httpMethod - HTTP method
        body - request body, can be null
        Returns:
        JAXRS Response, entity may hold a string representaion of error message if client or server error occured
      • post

        public javax.ws.rs.core.Response post​(Object body)
        Does HTTP POST invocation
        Parameters:
        body - request body, can be null
        Returns:
        JAXRS Response
      • put

        public javax.ws.rs.core.Response put​(Object body)
        Does HTTP PUT invocation
        Parameters:
        body - request body, can be null
        Returns:
        JAXRS Response
      • get

        public javax.ws.rs.core.Response get()
        Does HTTP GET invocation
        Returns:
        JAXRS Response
      • head

        public javax.ws.rs.core.Response head()
        Does HTTP HEAD invocation
        Returns:
        JAXRS Response
      • options

        public javax.ws.rs.core.Response options()
        Does HTTP OPTIONS invocation
        Returns:
        JAXRS Response
      • delete

        public javax.ws.rs.core.Response delete()
        Does HTTP DELETE invocation
        Returns:
        JAXRS Response
      • form

        public javax.ws.rs.core.Response form​(Map<String,​List<Object>> values)
        Posts form data
        Parameters:
        values - form values
        Returns:
        JAXRS Response
      • form

        public javax.ws.rs.core.Response form​(javax.ws.rs.core.Form form)
        Posts form data
        Parameters:
        form - form values
        Returns:
        JAXRS Response
      • invoke

        public <T> T invoke​(String httpMethod,
                            Object body,
                            javax.ws.rs.core.GenericType<T> responseType)
        Does HTTP invocation and returns types response object
        Parameters:
        httpMethod - HTTP method
        body - request body, can be null
        responseType - generic response type
        Returns:
        typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
      • invoke

        public <T> T invoke​(String httpMethod,
                            Object body,
                            Class<T> responseClass)
        Does HTTP invocation and returns types response object
        Parameters:
        httpMethod - HTTP method
        body - request body, can be null
        responseClass - expected type of response object
        Returns:
        typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
      • invoke

        public <T> T invoke​(String httpMethod,
                            Object body,
                            Class<?> requestClass,
                            Class<T> responseClass)
        Does HTTP invocation and returns types response object
        Parameters:
        httpMethod - HTTP method
        body - request body, can be null
        requestClass - request body class
        responseClass - expected type of response object
        Returns:
        typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
      • post

        public <T> T post​(Object body,
                          Class<T> responseClass)
        Does HTTP POST invocation and returns typed response object
        Parameters:
        body - request body, can be null
        responseClass - expected type of response object
        Returns:
        typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
      • post

        public <T> T post​(Object body,
                          javax.ws.rs.core.GenericType<T> responseType)
        Does HTTP POST invocation and returns typed response object
        Parameters:
        body - request body, can be null
        responseType - generic response type
        Returns:
        typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
      • post

        public <T> Future<T> post​(Object body,
                                  javax.ws.rs.client.InvocationCallback<T> callback)
        Does HTTP Async POST invocation and returns Future. Shortcut for async().post(Entity, InvocationCallback)
        Parameters:
        callback - invocation callback
        Returns:
        the future
      • put

        public <T> T put​(Object body,
                         Class<T> responseClass)
        Does HTTP PUT invocation and returns typed response object
        Parameters:
        body - request body, can be null
        responseClass - expected type of response object
        Returns:
        typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
      • put

        public <T> T put​(Object body,
                         javax.ws.rs.core.GenericType<T> responseType)
        Does HTTP PUT invocation and returns typed response object
        Parameters:
        body - request body, can be null
        responseType - generic response type
        Returns:
        typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
      • put

        public <T> Future<T> put​(Object body,
                                 javax.ws.rs.client.InvocationCallback<T> callback)
        Does HTTP Async PUT invocation and returns Future. Shortcut for async().put(Entity, InvocationCallback)
        Parameters:
        callback - invocation callback
        Returns:
        the future
      • invokeAndGetCollection

        public <T> Collection<? extends T> invokeAndGetCollection​(String httpMethod,
                                                                  Object body,
                                                                  Class<T> memberClass)
        Does HTTP invocation and returns a collection of typed objects
        Parameters:
        httpMethod - HTTP method
        body - request body, can be null
        memberClass - expected type of collection member class
        Returns:
        typed collection
      • postCollection

        public <T> javax.ws.rs.core.Response postCollection​(Object collection,
                                                            Class<T> memberClass)
        Posts a collection of typed objects
        Parameters:
        collection - request body
        memberClass - type of collection member class
        Returns:
        JAX-RS Response
      • postCollection

        public <T1,​T2> T2 postCollection​(Object collection,
                                               Class<T1> memberClass,
                                               Class<T2> responseClass)
        Posts a collection of typed objects
        Parameters:
        collection - request body
        memberClass - type of collection member class
        responseClass - expected type of response object
        Returns:
        JAX-RS Response
      • postAndGetCollection

        public <T1,​T2> Collection<? extends T2> postAndGetCollection​(Object collection,
                                                                           Class<T1> memberClass,
                                                                           Class<T2> responseClass)
        Posts collection of typed objects and returns a collection of typed objects
        Parameters:
        collection - request body
        memberClass - type of collection member class
        responseClass - expected type of response object
        Returns:
        JAX-RS Response
      • postObjectGetCollection

        public <T> Collection<? extends T> postObjectGetCollection​(Object body,
                                                                   Class<T> responseClass)
        Posts the object and returns a collection of typed objects
        Parameters:
        body - request body
        responseClass - expected type of response object
        Returns:
        JAX-RS Response
      • postAndGetCollection

        public <T> Collection<? extends T> postAndGetCollection​(Object body,
                                                                Class<T> memberClass)
        Posts request body and returns a collection of typed objects
        Parameters:
        body - request body, can be null
        memberClass - expected type of collection member class
        Returns:
        typed collection
      • getCollection

        public <T> Collection<? extends T> getCollection​(Class<T> memberClass)
        Does HTTP GET invocation and returns a collection of typed objects
        Parameters:
        memberClass - expected type of collection member class
        Returns:
        typed collection
      • get

        public <T> T get​(Class<T> responseClass)
        Does HTTP GET invocation and returns typed response object
        Parameters:
        responseClass - expected type of response object
        Returns:
        typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
      • get

        public <T> T get​(javax.ws.rs.core.GenericType<T> responseType)
        Does HTTP GET invocation and returns typed response object
        Parameters:
        responseType - generic response type
        Returns:
        typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
      • get

        public <T> Future<T> get​(javax.ws.rs.client.InvocationCallback<T> callback)
        Does HTTP Async GET invocation and returns Future. Shortcut for async().get(InvocationCallback)
        Parameters:
        callback - invocation callback
        Returns:
        the future
      • path

        public WebClient path​(Object path)
        Updates the current URI path
        Parameters:
        path - new relative path segment
        Returns:
        updated WebClient
      • path

        public WebClient path​(String path,
                              Object... values)
        Updates the current URI path with path segment which may contain template variables
        Parameters:
        path - new relative path segment
        values - template variable values
        Returns:
        updated WebClient
      • matrix

        public WebClient matrix​(String name,
                                Object... values)
        Updates the current URI matrix parameters
        Parameters:
        name - matrix name
        values - matrix values
        Returns:
        updated WebClient
      • fragment

        public WebClient fragment​(String name)
        Updates the current URI fragment
        Parameters:
        name - fragment name
        Returns:
        updated WebClient
      • to

        public WebClient to​(String newAddress,
                            boolean forward)
        Moves WebClient to a new baseURI or forwards to new currentURI
        Parameters:
        newAddress - new URI
        forward - if true then currentURI will be based on baseURI
        Returns:
        updated WebClient
      • back

        public WebClient back​(boolean fast)
        Goes back
        Parameters:
        fast - if true then goes back to baseURI otherwise to a previous path segment
        Returns:
        updated WebClient
      • replacePath

        public WebClient replacePath​(String path)
        Replaces the current path with the new value.
        Parameters:
        path - new path value. If it starts from "/" then all the current path starting from the base URI will be replaced, otherwise only the last path segment will be replaced. Providing a null value is equivalent to calling back(true)
        Returns:
        updated WebClient
      • resetQuery

        public WebClient resetQuery()
        Resets the current query
        Returns:
        updated WebClient
      • replaceQuery

        public WebClient replaceQuery​(String queryString)
        Replaces the current query with the new value.
        Parameters:
        queryString - the new value, providing a null is equivalent to calling resetQuery().
        Returns:
        updated WebClient
      • replaceHeader

        public WebClient replaceHeader​(String headerName,
                                       Object value)
        Replaces the header value with the new values.
        Parameters:
        headerName - headerValues
        value - new values, null is equivalent to removing the header
        Returns:
        updated WebClient
      • replaceQueryParam

        public WebClient replaceQueryParam​(String queryParam,
                                           Object... value)
        Replaces the current query with the new value.
        Parameters:
        queryParam - query param name
        value - the new value, providing a null is equivalent to calling resetQuery().
        Returns:
        updated WebClient
      • type

        public WebClient type​(javax.ws.rs.core.MediaType ct)
        Description copied from class: AbstractClient
        Set HTTP Content-Type header
        Specified by:
        type in interface Client
        Overrides:
        type in class AbstractClient
        Parameters:
        ct - JAXRS MediaType representing Content-Type value
        Returns:
        the updated Client
      • accept

        public WebClient accept​(javax.ws.rs.core.MediaType... types)
        Description copied from class: AbstractClient
        Set HTTP Accept header
        Specified by:
        accept in interface Client
        Overrides:
        accept in class AbstractClient
        Parameters:
        types - list of JAXRS MediaTypes representing Accept header values
        Returns:
        the updated Client
      • match

        public WebClient match​(javax.ws.rs.core.EntityTag tag,
                               boolean ifNot)
        Description copied from class: AbstractClient
        Set HTTP If-Match or If-None-Match header
        Specified by:
        match in interface Client
        Overrides:
        match in class AbstractClient
        Parameters:
        tag - ETag value
        ifNot - if true then If-None-Match is set, If-Match otherwise
        Returns:
        the updated Client
      • modified

        public WebClient modified​(Date date,
                                  boolean ifNot)
        Description copied from class: AbstractClient
        Set HTTP If-Modified-Since or If-Unmodified-Since header
        Specified by:
        modified in interface Client
        Overrides:
        modified in class AbstractClient
        Parameters:
        date - Date value, will be formated as "EEE, dd MMM yyyy HH:mm:ss zzz"
        ifNot - if true then If-Unmodified-Since is set, If-Modified-Since otherwise
        Returns:
        the updated Client
      • cookie

        public WebClient cookie​(javax.ws.rs.core.Cookie cookie)
        Description copied from class: AbstractClient
        Set HTTP Cookie header
        Specified by:
        cookie in interface Client
        Overrides:
        cookie in class AbstractClient
        Parameters:
        cookie - Cookie value
        Returns:
        the updated Client
      • doInvoke

        protected javax.ws.rs.core.Response doInvoke​(String httpMethod,
                                                     Object body,
                                                     Type inGenericType,
                                                     Class<?> responseClass,
                                                     Type outGenericType)
      • doInvoke

        protected javax.ws.rs.core.Response doInvoke​(String httpMethod,
                                                     Object body,
                                                     Class<?> requestClass,
                                                     Type inGenericType,
                                                     Class<?> responseClass,
                                                     Type outGenericType)
      • doInvokeAsyncCallback

        protected <T> Future<T> doInvokeAsyncCallback​(String httpMethod,
                                                      Object body,
                                                      Class<?> requestClass,
                                                      Type inType,
                                                      javax.ws.rs.client.InvocationCallback<T> callback)
      • doInvokeAsync

        protected <T> Future<T> doInvokeAsync​(String httpMethod,
                                              Object body,
                                              Class<?> requestClass,
                                              Type inType,
                                              Class<?> respClass,
                                              Type outType,
                                              javax.ws.rs.client.InvocationCallback<T> callback)
      • doChainedInvocation

        protected javax.ws.rs.core.Response doChainedInvocation​(String httpMethod,
                                                                javax.ws.rs.core.MultivaluedMap<String,​String> headers,
                                                                Object body,
                                                                Class<?> requestClass,
                                                                Type inType,
                                                                Annotation[] inAnns,
                                                                Class<?> respClass,
                                                                Type outType,
                                                                org.apache.cxf.message.Exchange exchange,
                                                                Map<String,​Object> invContext)
      • doResponse

        protected javax.ws.rs.core.Response doResponse​(org.apache.cxf.message.Message m,
                                                       Class<?> responseClass,
                                                       Type outGenericType)
      • handleResponse

        protected javax.ws.rs.core.Response handleResponse​(org.apache.cxf.message.Message outMessage,
                                                           Class<?> responseClass,
                                                           Type genericType)
      • async

        public javax.ws.rs.client.AsyncInvoker async()
      • sync

        public javax.ws.rs.client.SyncInvoker sync()
      • rx

        public javax.ws.rs.client.CompletionStageRxInvoker rx()
      • rx

        public javax.ws.rs.client.CompletionStageRxInvoker rx​(ExecutorService ex)
      • rx

        public <T extends javax.ws.rs.client.RxInvoker> T rx​(Class<T> rxCls)
      • rx

        public <T extends javax.ws.rs.client.RxInvoker> T rx​(Class<T> rxCls,
                                                             ExecutorService executorService)