org.springframework.web.client

## Interface AsyncRestOperations

- All Known Implementing Classes:
    AsyncRestTemplate

  Deprecated.
  as of Spring 5.0, in favor of `WebClient`

      @Deprecated
      public interface AsyncRestOperations

  Interface specifying a basic set of asynchronous RESTful operations. Implemented by `AsyncRestTemplate`. Not often used directly, but a useful option to enhance testability, as it can easily be mocked or stubbed.
  Since:
    4.0
  Author:
    Arjen Poutsma
  See Also:
    `AsyncRestTemplate`, `RestOperations`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `ListenableFuture<?>` | `delete(String url, Map<String,?> uriVariables)` Deprecated. Asynchronously delete the resources at the specified URI.
    `ListenableFuture<?>` | `delete(String url, Object... uriVariables)` Deprecated. Asynchronously delete the resources at the specified URI.
    `ListenableFuture<?>` | `delete(URI url)` Deprecated. Asynchronously delete the resources at the specified URI.
    `<T> ListenableFuture<ResponseEntity<T>>` | `exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Map<String,?> uriVariables)` Deprecated. Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`.
    `<T> ListenableFuture<ResponseEntity<T>>` | `exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables)` Deprecated. Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`.
    `<T> ListenableFuture<ResponseEntity<T>>` | `exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Map<String,?> uriVariables)` Deprecated. Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`.
    `<T> ListenableFuture<ResponseEntity<T>>` | `exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables)` Deprecated. Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`.
    `<T> ListenableFuture<ResponseEntity<T>>` | `exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType)` Deprecated. Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`.
    `<T> ListenableFuture<ResponseEntity<T>>` | `exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType)` Deprecated. Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`.
    `<T> ListenableFuture<T>` | `execute(String url, HttpMethod method, AsyncRequestCallback requestCallback, ResponseExtractor<T> responseExtractor, Map<String,?> uriVariables)` Deprecated. Asynchronously execute the HTTP method to the given URI template, preparing the request with the `AsyncRequestCallback`, and reading the response with a `ResponseExtractor`.
    `<T> ListenableFuture<T>` | `execute(String url, HttpMethod method, AsyncRequestCallback requestCallback, ResponseExtractor<T> responseExtractor, Object... uriVariables)` Deprecated. Asynchronously execute the HTTP method to the given URI template, preparing the request with the `AsyncRequestCallback`, and reading the response with a `ResponseExtractor`.
    `<T> ListenableFuture<T>` | `execute(URI url, HttpMethod method, AsyncRequestCallback requestCallback, ResponseExtractor<T> responseExtractor)` Deprecated. Asynchronously execute the HTTP method to the given URL, preparing the request with the `AsyncRequestCallback`, and reading the response with a `ResponseExtractor`.
    `<T> ListenableFuture<ResponseEntity<T>>` | `getForEntity(String url, Class<T> responseType, Map<String,?> uriVariables)` Deprecated. Asynchronously retrieve a representation by doing a GET on the URI template.
    `<T> ListenableFuture<ResponseEntity<T>>` | `getForEntity(String url, Class<T> responseType, Object... uriVariables)` Deprecated. Asynchronously retrieve an entity by doing a GET on the specified URL.
    `<T> ListenableFuture<ResponseEntity<T>>` | `getForEntity(URI url, Class<T> responseType)` Deprecated. Asynchronously retrieve a representation by doing a GET on the URL.
    `RestOperations` | `getRestOperations()` Deprecated. Expose the synchronous Spring RestTemplate to allow synchronous invocation.
    `ListenableFuture<HttpHeaders>` | `headForHeaders(String url, Map<String,?> uriVariables)` Deprecated. Asynchronously retrieve all headers of the resource specified by the URI template.
    `ListenableFuture<HttpHeaders>` | `headForHeaders(String url, Object... uriVariables)` Deprecated. Asynchronously retrieve all headers of the resource specified by the URI template.
    `ListenableFuture<HttpHeaders>` | `headForHeaders(URI url)` Deprecated. Asynchronously retrieve all headers of the resource specified by the URL.
    `ListenableFuture<Set<HttpMethod>>` | `optionsForAllow(String url, Map<String,?> uriVariables)` Deprecated. Asynchronously return the value of the Allow header for the given URI.
    `ListenableFuture<Set<HttpMethod>>` | `optionsForAllow(String url, Object... uriVariables)` Deprecated. Asynchronously return the value of the Allow header for the given URI.
    `ListenableFuture<Set<HttpMethod>>` | `optionsForAllow(URI url)` Deprecated. Asynchronously return the value of the Allow header for the given URL.
    `<T> ListenableFuture<ResponseEntity<T>>` | `postForEntity(String url, HttpEntity<?> request, Class<T> responseType, Map<String,?> uriVariables)` Deprecated. Create a new resource by POSTing the given object to the URI template, and asynchronously returns the response as `ResponseEntity`.
    `<T> ListenableFuture<ResponseEntity<T>>` | `postForEntity(String url, HttpEntity<?> request, Class<T> responseType, Object... uriVariables)` Deprecated. Create a new resource by POSTing the given object to the URI template, and asynchronously returns the response as `ResponseEntity`.
    `<T> ListenableFuture<ResponseEntity<T>>` | `postForEntity(URI url, HttpEntity<?> request, Class<T> responseType)` Deprecated. Create a new resource by POSTing the given object to the URL, and asynchronously returns the response as `ResponseEntity`.
    `ListenableFuture<URI>` | `postForLocation(String url, HttpEntity<?> request, Map<String,?> uriVariables)` Deprecated. Create a new resource by POSTing the given object to the URI template, and asynchronously returns the value of the `Location` header.
    `ListenableFuture<URI>` | `postForLocation(String url, HttpEntity<?> request, Object... uriVariables)` Deprecated. Create a new resource by POSTing the given object to the URI template, and asynchronously returns the value of the `Location` header.
    `ListenableFuture<URI>` | `postForLocation(URI url, HttpEntity<?> request)` Deprecated. Create a new resource by POSTing the given object to the URL, and asynchronously returns the value of the `Location` header.
    `ListenableFuture<?>` | `put(String url, HttpEntity<?> request, Map<String,?> uriVariables)` Deprecated. Creates a new resource by PUTting the given object to URI template.
    `ListenableFuture<?>` | `put(String url, HttpEntity<?> request, Object... uriVariables)` Deprecated. Create or update a resource by PUTting the given object to the URI.
    `ListenableFuture<?>` | `put(URI url, HttpEntity<?> request)` Deprecated. Creates a new resource by PUTting the given object to URL.

- - ### Method Detail

    - #### getRestOperations

          RestOperations getRestOperations()

      Deprecated.
      Expose the synchronous Spring RestTemplate to allow synchronous invocation.

    - #### getForEntity

          <T> ListenableFuture<ResponseEntity<T>> getForEntity(String url,
                                                               Class<T> responseType,
                                                               Object... uriVariables)
                                                        throws RestClientException

      Deprecated.
      Asynchronously retrieve an entity by doing a GET on the specified URL. The response is converted and stored in an `ResponseEntity`.

      URI Template variables are expanded using the given URI variables, if any.

      Parameters:
        `url` - the URL
        `responseType` - the type of the return value
        `uriVariables` - the variables to expand the template
      Returns:
        the entity wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### getForEntity

          <T> ListenableFuture<ResponseEntity<T>> getForEntity(String url,
                                                               Class<T> responseType,
                                                               Map<String,?> uriVariables)
                                                        throws RestClientException

      Deprecated.
      Asynchronously retrieve a representation by doing a GET on the URI template. The response is converted and stored in an `ResponseEntity`.

      URI Template variables are expanded using the given map.

      Parameters:
        `url` - the URL
        `responseType` - the type of the return value
        `uriVariables` - the map containing variables for the URI template
      Returns:
        the entity wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### getForEntity

          <T> ListenableFuture<ResponseEntity<T>> getForEntity(URI url,
                                                               Class<T> responseType)
                                                        throws RestClientException

      Deprecated.
      Asynchronously retrieve a representation by doing a GET on the URL. The response is converted and stored in an `ResponseEntity`.
      Parameters:
        `url` - the URL
        `responseType` - the type of the return value
      Returns:
        the entity wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### headForHeaders

          ListenableFuture<HttpHeaders> headForHeaders(String url,
                                                       Object... uriVariables)
                                                throws RestClientException

      Deprecated.
      Asynchronously retrieve all headers of the resource specified by the URI template.

      URI Template variables are expanded using the given URI variables, if any.

      Parameters:
        `url` - the URL
        `uriVariables` - the variables to expand the template
      Returns:
        all HTTP headers of that resource wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### headForHeaders

          ListenableFuture<HttpHeaders> headForHeaders(String url,
                                                       Map<String,?> uriVariables)
                                                throws RestClientException

      Deprecated.
      Asynchronously retrieve all headers of the resource specified by the URI template.

      URI Template variables are expanded using the given map.

      Parameters:
        `url` - the URL
        `uriVariables` - the map containing variables for the URI template
      Returns:
        all HTTP headers of that resource wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### headForHeaders

          ListenableFuture<HttpHeaders> headForHeaders(URI url)
                                                throws RestClientException

      Deprecated.
      Asynchronously retrieve all headers of the resource specified by the URL.
      Parameters:
        `url` - the URL
      Returns:
        all HTTP headers of that resource wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### postForLocation

          ListenableFuture<URI> postForLocation(String url,
                                                @Nullable
                                                HttpEntity<?> request,
                                                Object... uriVariables)
                                         throws RestClientException

      Deprecated.
      Create a new resource by POSTing the given object to the URI template, and asynchronously returns the value of the `Location` header. This header typically indicates where the new resource is stored.

      URI Template variables are expanded using the given URI variables, if any.

      Parameters:
        `url` - the URL
        `request` - the Object to be POSTed (may be `null`)
        `uriVariables` - the variables to expand the template
      Returns:
        the value for the `Location` header wrapped in a `Future`
      Throws:
        `RestClientException`
      See Also:
        `HttpEntity`

    - #### postForLocation

          ListenableFuture<URI> postForLocation(String url,
                                                @Nullable
                                                HttpEntity<?> request,
                                                Map<String,?> uriVariables)
                                         throws RestClientException

      Deprecated.
      Create a new resource by POSTing the given object to the URI template, and asynchronously returns the value of the `Location` header. This header typically indicates where the new resource is stored.

      URI Template variables are expanded using the given map.

      Parameters:
        `url` - the URL
        `request` - the Object to be POSTed (may be `null`)
        `uriVariables` - the variables to expand the template
      Returns:
        the value for the `Location` header wrapped in a `Future`
      Throws:
        `RestClientException`
      See Also:
        `HttpEntity`

    - #### postForLocation

          ListenableFuture<URI> postForLocation(URI url,
                                                @Nullable
                                                HttpEntity<?> request)
                                         throws RestClientException

      Deprecated.
      Create a new resource by POSTing the given object to the URL, and asynchronously returns the value of the `Location` header. This header typically indicates where the new resource is stored.
      Parameters:
        `url` - the URL
        `request` - the Object to be POSTed (may be `null`)
      Returns:
        the value for the `Location` header wrapped in a `Future`
      Throws:
        `RestClientException`
      See Also:
        `HttpEntity`

    - #### postForEntity

          <T> ListenableFuture<ResponseEntity<T>> postForEntity(String url,
                                                                @Nullable
                                                                HttpEntity<?> request,
                                                                Class<T> responseType,
                                                                Object... uriVariables)
                                                         throws RestClientException

      Deprecated.
      Create a new resource by POSTing the given object to the URI template, and asynchronously returns the response as `ResponseEntity`.

      URI Template variables are expanded using the given URI variables, if any.

      Parameters:
        `url` - the URL
        `request` - the Object to be POSTed (may be `null`)
        `uriVariables` - the variables to expand the template
      Returns:
        the entity wrapped in a `Future`
      Throws:
        `RestClientException`
      See Also:
        `HttpEntity`

    - #### postForEntity

          <T> ListenableFuture<ResponseEntity<T>> postForEntity(String url,
                                                                @Nullable
                                                                HttpEntity<?> request,
                                                                Class<T> responseType,
                                                                Map<String,?> uriVariables)
                                                         throws RestClientException

      Deprecated.
      Create a new resource by POSTing the given object to the URI template, and asynchronously returns the response as `ResponseEntity`.

      URI Template variables are expanded using the given map.

      Parameters:
        `url` - the URL
        `request` - the Object to be POSTed (may be `null`)
        `uriVariables` - the variables to expand the template
      Returns:
        the entity wrapped in a `Future`
      Throws:
        `RestClientException`
      See Also:
        `HttpEntity`

    - #### postForEntity

          <T> ListenableFuture<ResponseEntity<T>> postForEntity(URI url,
                                                                @Nullable
                                                                HttpEntity<?> request,
                                                                Class<T> responseType)
                                                         throws RestClientException

      Deprecated.
      Create a new resource by POSTing the given object to the URL, and asynchronously returns the response as `ResponseEntity`.
      Parameters:
        `url` - the URL
        `request` - the Object to be POSTed (may be `null`)
      Returns:
        the entity wrapped in a `Future`
      Throws:
        `RestClientException`
      See Also:
        `HttpEntity`

    - #### put

          ListenableFuture<?> put(String url,
                                  @Nullable
                                  HttpEntity<?> request,
                                  Object... uriVariables)
                           throws RestClientException

      Deprecated.
      Create or update a resource by PUTting the given object to the URI.

      URI Template variables are expanded using the given URI variables, if any.

      The Future will return a `null` result upon completion.

      Parameters:
        `url` - the URL
        `request` - the Object to be PUT (may be `null`)
        `uriVariables` - the variables to expand the template
      Throws:
        `RestClientException`
      See Also:
        `HttpEntity`

    - #### put

          ListenableFuture<?> put(String url,
                                  @Nullable
                                  HttpEntity<?> request,
                                  Map<String,?> uriVariables)
                           throws RestClientException

      Deprecated.
      Creates a new resource by PUTting the given object to URI template.

      URI Template variables are expanded using the given map.

      The Future will return a `null` result upon completion.

      Parameters:
        `url` - the URL
        `request` - the Object to be PUT (may be `null`)
        `uriVariables` - the variables to expand the template
      Throws:
        `RestClientException`
      See Also:
        `HttpEntity`

    - #### put

          ListenableFuture<?> put(URI url,
                                  @Nullable
                                  HttpEntity<?> request)
                           throws RestClientException

      Deprecated.
      Creates a new resource by PUTting the given object to URL.

      The Future will return a `null` result upon completion.

      Parameters:
        `url` - the URL
        `request` - the Object to be PUT (may be `null`)
      Throws:
        `RestClientException`
      See Also:
        `HttpEntity`

    - #### delete

          ListenableFuture<?> delete(String url,
                                     Object... uriVariables)
                              throws RestClientException

      Deprecated.
      Asynchronously delete the resources at the specified URI.

      URI Template variables are expanded using the given URI variables, if any.

      The Future will return a `null` result upon completion.

      Parameters:
        `url` - the URL
        `uriVariables` - the variables to expand in the template
      Throws:
        `RestClientException`

    - #### delete

          ListenableFuture<?> delete(String url,
                                     Map<String,?> uriVariables)
                              throws RestClientException

      Deprecated.
      Asynchronously delete the resources at the specified URI.

      URI Template variables are expanded using the given URI variables, if any.

      The Future will return a `null` result upon completion.

      Parameters:
        `url` - the URL
        `uriVariables` - the variables to expand in the template
      Throws:
        `RestClientException`

    - #### delete

          ListenableFuture<?> delete(URI url)
                              throws RestClientException

      Deprecated.
      Asynchronously delete the resources at the specified URI.

      URI Template variables are expanded using the given URI variables, if any.

      The Future will return a `null` result upon completion.

      Parameters:
        `url` - the URL
      Throws:
        `RestClientException`

    - #### optionsForAllow

          ListenableFuture<Set<HttpMethod>> optionsForAllow(String url,
                                                            Object... uriVariables)
                                                     throws RestClientException

      Deprecated.
      Asynchronously return the value of the Allow header for the given URI.

      URI Template variables are expanded using the given URI variables, if any.

      Parameters:
        `url` - the URL
        `uriVariables` - the variables to expand in the template
      Returns:
        the value of the allow header wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### optionsForAllow

          ListenableFuture<Set<HttpMethod>> optionsForAllow(String url,
                                                            Map<String,?> uriVariables)
                                                     throws RestClientException

      Deprecated.
      Asynchronously return the value of the Allow header for the given URI.

      URI Template variables are expanded using the given map.

      Parameters:
        `url` - the URL
        `uriVariables` - the variables to expand in the template
      Returns:
        the value of the allow header wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### optionsForAllow

          ListenableFuture<Set<HttpMethod>> optionsForAllow(URI url)
                                                     throws RestClientException

      Deprecated.
      Asynchronously return the value of the Allow header for the given URL.
      Parameters:
        `url` - the URL
      Returns:
        the value of the allow header wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### exchange

          <T> ListenableFuture<ResponseEntity<T>> exchange(String url,
                                                           HttpMethod method,
                                                           @Nullable
                                                           HttpEntity<?> requestEntity,
                                                           Class<T> responseType,
                                                           Object... uriVariables)
                                                    throws RestClientException

      Deprecated.
      Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`.

      URI Template variables are expanded using the given URI variables, if any.

      Parameters:
        `url` - the URL
        `method` - the HTTP method (GET, POST, etc)
        `requestEntity` - the entity (headers and/or body) to write to the request (may be `null`)
        `responseType` - the type of the return value
        `uriVariables` - the variables to expand in the template
      Returns:
        the response as entity wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### exchange

          <T> ListenableFuture<ResponseEntity<T>> exchange(String url,
                                                           HttpMethod method,
                                                           @Nullable
                                                           HttpEntity<?> requestEntity,
                                                           Class<T> responseType,
                                                           Map<String,?> uriVariables)
                                                    throws RestClientException

      Deprecated.
      Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`.

      URI Template variables are expanded using the given URI variables, if any.

      Parameters:
        `url` - the URL
        `method` - the HTTP method (GET, POST, etc)
        `requestEntity` - the entity (headers and/or body) to write to the request (may be `null`)
        `responseType` - the type of the return value
        `uriVariables` - the variables to expand in the template
      Returns:
        the response as entity wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### exchange

          <T> ListenableFuture<ResponseEntity<T>> exchange(URI url,
                                                           HttpMethod method,
                                                           @Nullable
                                                           HttpEntity<?> requestEntity,
                                                           Class<T> responseType)
                                                    throws RestClientException

      Deprecated.
      Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`.
      Parameters:
        `url` - the URL
        `method` - the HTTP method (GET, POST, etc)
        `requestEntity` - the entity (headers and/or body) to write to the request (may be `null`)
        `responseType` - the type of the return value
      Returns:
        the response as entity wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### exchange

          <T> ListenableFuture<ResponseEntity<T>> exchange(String url,
                                                           HttpMethod method,
                                                           @Nullable
                                                           HttpEntity<?> requestEntity,
                                                           ParameterizedTypeReference<T> responseType,
                                                           Object... uriVariables)
                                                    throws RestClientException

      Deprecated.
      Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`. The given `ParameterizedTypeReference` is used to pass generic type information:

           ParameterizedTypeReference<List<MyBean>> myBean =
               new ParameterizedTypeReference<List<MyBean>>() {};

           ResponseEntity<List<MyBean>> response =
               template.exchange("https://example.com",HttpMethod.GET, null, myBean);

      Parameters:
        `url` - the URL
        `method` - the HTTP method (GET, POST, etc)
        `requestEntity` - the entity (headers and/or body) to write to the request (may be `null`)
        `responseType` - the type of the return value
        `uriVariables` - the variables to expand in the template
      Returns:
        the response as entity wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### exchange

          <T> ListenableFuture<ResponseEntity<T>> exchange(String url,
                                                           HttpMethod method,
                                                           @Nullable
                                                           HttpEntity<?> requestEntity,
                                                           ParameterizedTypeReference<T> responseType,
                                                           Map<String,?> uriVariables)
                                                    throws RestClientException

      Deprecated.
      Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`. The given `ParameterizedTypeReference` is used to pass generic type information:

           ParameterizedTypeReference<List<MyBean>> myBean =
               new ParameterizedTypeReference<List<MyBean>>() {};

           ResponseEntity<List<MyBean>> response =
               template.exchange("https://example.com",HttpMethod.GET, null, myBean);

      Parameters:
        `url` - the URL
        `method` - the HTTP method (GET, POST, etc)
        `requestEntity` - the entity (headers and/or body) to write to the request (may be `null`)
        `responseType` - the type of the return value
        `uriVariables` - the variables to expand in the template
      Returns:
        the response as entity wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### exchange

          <T> ListenableFuture<ResponseEntity<T>> exchange(URI url,
                                                           HttpMethod method,
                                                           @Nullable
                                                           HttpEntity<?> requestEntity,
                                                           ParameterizedTypeReference<T> responseType)
                                                    throws RestClientException

      Deprecated.
      Asynchronously execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as `ResponseEntity`. The given `ParameterizedTypeReference` is used to pass generic type information:

           ParameterizedTypeReference<List<MyBean>> myBean =
               new ParameterizedTypeReference<List<MyBean>>() {};

           ResponseEntity<List<MyBean>> response =
               template.exchange("https://example.com",HttpMethod.GET, null, myBean);

      Parameters:
        `url` - the URL
        `method` - the HTTP method (GET, POST, etc)
        `requestEntity` - the entity (headers and/or body) to write to the request (may be `null`)
        `responseType` - the type of the return value
      Returns:
        the response as entity wrapped in a `Future`
      Throws:
        `RestClientException`

    - #### execute

          <T> ListenableFuture<T> execute(String url,
                                          HttpMethod method,
                                          @Nullable
                                          AsyncRequestCallback requestCallback,
                                          @Nullable
                                          ResponseExtractor<T> responseExtractor,
                                          Object... uriVariables)
                                   throws RestClientException

      Deprecated.
      Asynchronously execute the HTTP method to the given URI template, preparing the request with the `AsyncRequestCallback`, and reading the response with a `ResponseExtractor`.

      URI Template variables are expanded using the given URI variables, if any.

      Parameters:
        `url` - the URL
        `method` - the HTTP method (GET, POST, etc)
        `requestCallback` - object that prepares the request
        `responseExtractor` - object that extracts the return value from the response
        `uriVariables` - the variables to expand in the template
      Returns:
        an arbitrary object, as returned by the `ResponseExtractor`
      Throws:
        `RestClientException`

    - #### execute

          <T> ListenableFuture<T> execute(String url,
                                          HttpMethod method,
                                          @Nullable
                                          AsyncRequestCallback requestCallback,
                                          @Nullable
                                          ResponseExtractor<T> responseExtractor,
                                          Map<String,?> uriVariables)
                                   throws RestClientException

      Deprecated.
      Asynchronously execute the HTTP method to the given URI template, preparing the request with the `AsyncRequestCallback`, and reading the response with a `ResponseExtractor`.

      URI Template variables are expanded using the given URI variables map.

      Parameters:
        `url` - the URL
        `method` - the HTTP method (GET, POST, etc)
        `requestCallback` - object that prepares the request
        `responseExtractor` - object that extracts the return value from the response
        `uriVariables` - the variables to expand in the template
      Returns:
        an arbitrary object, as returned by the `ResponseExtractor`
      Throws:
        `RestClientException`

    - #### execute

          <T> ListenableFuture<T> execute(URI url,
                                          HttpMethod method,
                                          @Nullable
                                          AsyncRequestCallback requestCallback,
                                          @Nullable
                                          ResponseExtractor<T> responseExtractor)
                                   throws RestClientException

      Deprecated.
      Asynchronously execute the HTTP method to the given URL, preparing the request with the `AsyncRequestCallback`, and reading the response with a `ResponseExtractor`.
      Parameters:
        `url` - the URL
        `method` - the HTTP method (GET, POST, etc)
        `requestCallback` - object that prepares the request
        `responseExtractor` - object that extracts the return value from the response
      Returns:
        an arbitrary object, as returned by the `ResponseExtractor`
      Throws:
        `RestClientException`