com.holonplatform.async.http

## Interface AsyncRestClient.AsyncInvocation

- All Superinterfaces:
    RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>
  All Known Subinterfaces:
    AsyncRestClient.AsyncRequestDefinition
  All Known Implementing Classes:
    DefaultAsyncRequestDefinition
  Enclosing interface:
    AsyncRestClient

      public static interface AsyncRestClient.AsyncInvocation
      extends RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>

  Invocation operations

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `default CompletionStage<ResponseEntity<Void>>` | `delete()` Invoke the request using `DELETE` method and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `delete(Class<T> responseType)` Invoke the request asynchronously using the `DELETE` method and receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `delete(ResponseType<T> responseType)` Invoke the request using `DELETE` method and asynchronously receive a response back.
    `default <T> CompletionStage<Optional<T>>` | `deleteForEntity(Class<T> responseType)` Invoke the request using `DELETE` method and asynchronously receive the response entity payload back.
    `default <T> CompletionStage<Optional<T>>` | `deleteForEntity(ResponseType<T> responseType)` Invoke the request using `DELETE` method and asynchronously receive the response entity payload of given generic type back.
    `default CompletionStage<Void>` | `deleteOrFail()` Invoke the request asynchronously using the `DELETE` method.
    `default <T> CompletionStage<ResponseEntity<T>>` | `get(Class<T> responseType)` Invoke the request using `GET` method and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `get(ResponseType<T> responseType)` Invoke the request using `GET` method and asynchronously receive a response back.
    `default <T> CompletionStage<List<T>>` | `getAsList(Class<T> responseType)` Convenience method to invoke the request using `GET` method and asynchronously receive a response entity payload of `List` type back.
    `default <T> CompletionStage<Optional<T>>` | `getForEntity(Class<T> responseType)` Invoke the request using `GET` method and asynchronously receive the response entity payload back.
    `default <T> CompletionStage<Optional<T>>` | `getForEntity(ResponseType<T> responseType)` Invoke the request using `GET` method and asynchronously receive the response entity payload of given generic type back.
    `default CompletionStage<InputStream>` | `getForStream()` Invoke the request using `GET` method and asynchronously receive the response entity `InputStream` back.
    `default CompletionStage<ResponseEntity<Void>>` | `head()` Invoke the request using `HEAD` method and asynchronously receive a response back.
    `<T,R> CompletionStage<ResponseEntity<T>>` | `invoke(HttpMethod method, RequestEntity<R> requestEntity, ResponseType<T> responseType)` Invoke the request and asynchronously receive a response back.
    `<T,R> CompletionStage<Optional<T>>` | `invokeForEntity(HttpMethod method, RequestEntity<R> requestEntity, ResponseType<T> responseType)` Invoke the request and asynchronously receive back the response content entity.
    `<T,R> CompletionStage<ResponseEntity<T>>` | `invokeForSuccess(HttpMethod method, RequestEntity<R> requestEntity, ResponseType<T> responseType)` Invoke the request and asynchronously receive a response back only if the response has a success (`2xx`) status code.
    `default CompletionStage<ResponseEntity<Void>>` | `options()` Invoke the request using `OPTIONS` method and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `options(Class<T> responseType)` Invoke the request using `OPTIONS` method and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `options(ResponseType<T> responseType)` Invoke the request using `OPTIONS` method and asynchronously receive a response back.
    `default <T> CompletionStage<Optional<T>>` | `optionsForEntity(Class<T> responseType)` Invoke the request using `OPTIONS` method and asynchronously receive the response entity payload back.
    `default <T> CompletionStage<Optional<T>>` | `optionsForEntity(ResponseType<T> responseType)` Invoke the request using `OPTIONS` method and asynchronously receive the response entity payload of given generic type back.
    `default CompletionStage<ResponseEntity<Void>>` | `patch(RequestEntity<?> entity)` Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `patch(RequestEntity<?> entity, Class<T> responseType)` Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `patch(RequestEntity<?> entity, ResponseType<T> responseType)` Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive a response back.
    `default <T> CompletionStage<Optional<T>>` | `patchForEntity(RequestEntity<?> entity, Class<T> responseType)` Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive the response entity payload back.
    `default <T> CompletionStage<Optional<T>>` | `patchForEntity(RequestEntity<?> entity, ResponseType<T> responseType)` Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive the response entity payload back.
    `default CompletionStage<ResponseEntity<Void>>` | `post(RequestEntity<?> entity)` Invoke the request using `POST` method with given `entity` request payload and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `post(RequestEntity<?> entity, Class<T> responseType)` Invoke the request using `POST` method with given `entity` request payload and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `post(RequestEntity<?> entity, ResponseType<T> responseType)` Invoke the request using `POST` method with given `entity` request payload and asynchronously receive a response back.
    `default <T> CompletionStage<Optional<T>>` | `postForEntity(RequestEntity<?> entity, Class<T> responseType)` Invoke the request using `POST` method with given `entity` request payload and asynchronously receive the response payload back.
    `default <T> CompletionStage<Optional<T>>` | `postForEntity(RequestEntity<?> entity, ResponseType<T> responseType)` Invoke the request using `POST` method with given `entity` request payload and asynchronously receive the response payload back.
    `default CompletionStage<Optional<URI>>` | `postForLocation(RequestEntity<?> entity)` Invoke the request using `POST` method with given `entity` request payload and asynchronously receive the value of the `LOCATION` header back, if present.
    `default CompletionStage<ResponseEntity<Void>>` | `put(RequestEntity<?> entity)` Invoke the request using `PUT` method with given `entity` request payload and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `put(RequestEntity<?> entity, Class<T> responseType)` Invoke the request using `PUT` method with given `entity` request payload and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `put(RequestEntity<?> entity, ResponseType<T> responseType)` Invoke the request using `PUT` method with given `entity` request payload and asynchronously receive a response back.
    `default <T> CompletionStage<Optional<T>>` | `putForEntity(RequestEntity<?> entity, Class<T> responseType)` Invoke the request using `PUT` method with given `entity` request payload and asynchronously receive the response entity payload back.
    `default <T> CompletionStage<Optional<T>>` | `putForEntity(RequestEntity<?> entity, ResponseType<T> responseType)` Invoke the request using `PUT` method with given `entity` request entity payload and asynchronously receive the response payload back.
    `default CompletionStage<ResponseEntity<Void>>` | `trace()` Invoke the request using `TRACE` method and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `trace(Class<T> responseType)` Invoke the request using `TRACE` method and asynchronously receive a response back.
    `default <T> CompletionStage<ResponseEntity<T>>` | `trace(ResponseType<T> responseType)` Invoke the request using `TRACE` method and asynchronously receive a response back.
    `default <T> CompletionStage<Optional<T>>` | `traceForEntity(Class<T> responseType)` Invoke the request using `TRACE` method and asynchronously receive the response entity payload back.
    `default <T> CompletionStage<Optional<T>>` | `traceForEntity(ResponseType<T> responseType)` Invoke the request using `TRACE` method and asynchronously receive the response entity payload of given generic type back.

- - ### Method Detail

    - #### invoke

          <T,R> CompletionStage<ResponseEntity<T>> invoke(HttpMethod method,
                                                          RequestEntity<R> requestEntity,
                                                          ResponseType<T> responseType)

      Invoke the request and asynchronously receive a response back.

      The response payload is processed and possibly converted by concrete client implementation.

      Specified by:
        `invoke` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
        `R` - Request entity type
      Parameters:
        `method` - Request method
        `requestEntity` - Request entity
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as the result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### invokeForSuccess

          <T,R> CompletionStage<ResponseEntity<T>> invokeForSuccess(HttpMethod method,
                                                                    RequestEntity<R> requestEntity,
                                                                    ResponseType<T> responseType)

      Invoke the request and asynchronously receive a response back only if the response has a success (`2xx`) status code.
      Specified by:
        `invokeForSuccess` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
        `R` - Request entity type
      Parameters:
        `method` - Request method
        `requestEntity` - Request entity
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### invokeForEntity

          <T,R> CompletionStage<Optional<T>> invokeForEntity(HttpMethod method,
                                                             RequestEntity<R> requestEntity,
                                                             ResponseType<T> responseType)

      Invoke the request and asynchronously receive back the response content entity.
      Specified by:
        `invokeForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
        `R` - Request entity type
      Parameters:
        `method` - Request method
        `requestEntity` - Request entity
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### get

          default <T> CompletionStage<ResponseEntity<T>> get(Class<T> responseType)

      Invoke the request using `GET` method and asynchronously receive a response back.
      Specified by:
        `get` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### get

          default <T> CompletionStage<ResponseEntity<T>> get(ResponseType<T> responseType)

      Invoke the request using `GET` method and asynchronously receive a response back.
      Specified by:
        `get` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### getForEntity

          default <T> CompletionStage<Optional<T>> getForEntity(Class<T> responseType)

      Invoke the request using `GET` method and asynchronously receive the response entity payload back.
      Specified by:
        `getForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### getForEntity

          default <T> CompletionStage<Optional<T>> getForEntity(ResponseType<T> responseType)

      Invoke the request using `GET` method and asynchronously receive the response entity payload of given generic type back.
      Specified by:
        `getForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `responseType` - Response payload generic type representation
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### getForStream

          default CompletionStage<InputStream> getForStream()

      Invoke the request using `GET` method and asynchronously receive the response entity `InputStream` back.
      Specified by:
        `getForStream` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Returns:
        A `CompletionStage` to handle the response payload `InputStream`, or an empty stream for empty responses
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### getAsList

          default <T> CompletionStage<List<T>> getAsList(Class<T> responseType)

      Convenience method to invoke the request using `GET` method and asynchronously receive a response entity payload of `List` type back.
      Specified by:
        `getAsList` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `responseType` - Expected `List` response type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty List if not present
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### post

          default CompletionStage<ResponseEntity<Void>> post(RequestEntity<?> entity)

      Invoke the request using `POST` method with given `entity` request payload and asynchronously receive a response back.

      The response type is conventionally of `Void` type, because no response paylod is expected from this invocation. Refer to the other `post` methods to obtain a response payload.

      Specified by:
        `post` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Parameters:
        `entity` - Request payload
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### post

          default <T> CompletionStage<ResponseEntity<T>> post(RequestEntity<?> entity,
                                                              Class<T> responseType)

      Invoke the request using `POST` method with given `entity` request payload and asynchronously receive a response back.
      Specified by:
        `post` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### post

          default <T> CompletionStage<ResponseEntity<T>> post(RequestEntity<?> entity,
                                                              ResponseType<T> responseType)

      Invoke the request using `POST` method with given `entity` request payload and asynchronously receive a response back.
      Specified by:
        `post` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### postForEntity

          default <T> CompletionStage<Optional<T>> postForEntity(RequestEntity<?> entity,
                                                                 Class<T> responseType)

      Invoke the request using `POST` method with given `entity` request payload and asynchronously receive the response payload back.
      Specified by:
        `postForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### postForEntity

          default <T> CompletionStage<Optional<T>> postForEntity(RequestEntity<?> entity,
                                                                 ResponseType<T> responseType)

      Invoke the request using `POST` method with given `entity` request payload and asynchronously receive the response payload back.
      Specified by:
        `postForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### postForLocation

          default CompletionStage<Optional<URI>> postForLocation(RequestEntity<?> entity)

      Invoke the request using `POST` method with given `entity` request payload and asynchronously receive the value of the `LOCATION` header back, if present.
      Specified by:
        `postForLocation` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Parameters:
        `entity` - Request payload
      Returns:
        A `CompletionStage` to handle the value of the `LOCATION` header back, if present
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### put

          default CompletionStage<ResponseEntity<Void>> put(RequestEntity<?> entity)

      Invoke the request using `PUT` method with given `entity` request payload and asynchronously receive a response back.

      The response type is conventionally of `Void` type, because no response paylod is expected from this invocation. Refer to the other `post` methods to obtain a response payload.

      Specified by:
        `put` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Parameters:
        `entity` - Request payload
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### put

          default <T> CompletionStage<ResponseEntity<T>> put(RequestEntity<?> entity,
                                                             Class<T> responseType)

      Invoke the request using `PUT` method with given `entity` request payload and asynchronously receive a response back.
      Specified by:
        `put` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### put

          default <T> CompletionStage<ResponseEntity<T>> put(RequestEntity<?> entity,
                                                             ResponseType<T> responseType)

      Invoke the request using `PUT` method with given `entity` request payload and asynchronously receive a response back.
      Specified by:
        `put` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### putForEntity

          default <T> CompletionStage<Optional<T>> putForEntity(RequestEntity<?> entity,
                                                                Class<T> responseType)

      Invoke the request using `PUT` method with given `entity` request payload and asynchronously receive the response entity payload back.
      Specified by:
        `putForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### putForEntity

          default <T> CompletionStage<Optional<T>> putForEntity(RequestEntity<?> entity,
                                                                ResponseType<T> responseType)

      Invoke the request using `PUT` method with given `entity` request entity payload and asynchronously receive the response payload back.
      Specified by:
        `putForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### patch

          default CompletionStage<ResponseEntity<Void>> patch(RequestEntity<?> entity)

      Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive a response back.

      The response type is conventionally of `Void` type, because no response paylod is expected from this invocation. Refer to the other `post` methods to obtain a response payload.

      Specified by:
        `patch` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Parameters:
        `entity` - Request payload
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### patch

          default <T> CompletionStage<ResponseEntity<T>> patch(RequestEntity<?> entity,
                                                               Class<T> responseType)

      Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive a response back.
      Specified by:
        `patch` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### patch

          default <T> CompletionStage<ResponseEntity<T>> patch(RequestEntity<?> entity,
                                                               ResponseType<T> responseType)

      Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive a response back.
      Specified by:
        `patch` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### patchForEntity

          default <T> CompletionStage<Optional<T>> patchForEntity(RequestEntity<?> entity,
                                                                  Class<T> responseType)

      Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive the response entity payload back.
      Specified by:
        `patchForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### patchForEntity

          default <T> CompletionStage<Optional<T>> patchForEntity(RequestEntity<?> entity,
                                                                  ResponseType<T> responseType)

      Invoke the request using `PATCH` method with given `entity` request payload and asynchronously receive the response entity payload back.
      Specified by:
        `patchForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `entity` - Request payload
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### delete

          default CompletionStage<ResponseEntity<Void>> delete()

      Invoke the request using `DELETE` method and asynchronously receive a response back.

      The response type is conventionally of `Void` type, because no response paylod is expected from this invocation. Refer to the other `post` methods to obtain a response payload.

      Specified by:
        `delete` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel)

    - #### deleteOrFail

          default CompletionStage<Void> deleteOrFail()

      Invoke the request asynchronously using the `DELETE` method. If the returned response is not a success response (i.e. with a `2xx` status code), a `UnsuccessfulResponseException` is thrown.
      Returns:
        A `CompletionStage` to handle the response
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### delete

          default <T> CompletionStage<ResponseEntity<T>> delete(Class<T> responseType)

      Invoke the request asynchronously using the `DELETE` method and receive a response back.
      Specified by:
        `delete` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### delete

          default <T> CompletionStage<ResponseEntity<T>> delete(ResponseType<T> responseType)

      Invoke the request using `DELETE` method and asynchronously receive a response back.
      Specified by:
        `delete` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `responseType` - Response payload generic type representation
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### deleteForEntity

          default <T> CompletionStage<Optional<T>> deleteForEntity(Class<T> responseType)

      Invoke the request using `DELETE` method and asynchronously receive the response entity payload back.
      Specified by:
        `deleteForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### deleteForEntity

          default <T> CompletionStage<Optional<T>> deleteForEntity(ResponseType<T> responseType)

      Invoke the request using `DELETE` method and asynchronously receive the response entity payload of given generic type back.
      Specified by:
        `deleteForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `responseType` - Response payload generic type representation
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### options

          default CompletionStage<ResponseEntity<Void>> options()

      Invoke the request using `OPTIONS` method and asynchronously receive a response back.

      The response type is conventionally of `Void` type, because no response paylod is expected from this invocation. Refer to the other `post` methods to obtain a response payload.

      Specified by:
        `options` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel)

    - #### options

          default <T> CompletionStage<ResponseEntity<T>> options(Class<T> responseType)

      Invoke the request using `OPTIONS` method and asynchronously receive a response back.
      Specified by:
        `options` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### options

          default <T> CompletionStage<ResponseEntity<T>> options(ResponseType<T> responseType)

      Invoke the request using `OPTIONS` method and asynchronously receive a response back.
      Specified by:
        `options` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `responseType` - Response payload generic type representation
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### optionsForEntity

          default <T> CompletionStage<Optional<T>> optionsForEntity(Class<T> responseType)

      Invoke the request using `OPTIONS` method and asynchronously receive the response entity payload back.
      Specified by:
        `optionsForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### optionsForEntity

          default <T> CompletionStage<Optional<T>> optionsForEntity(ResponseType<T> responseType)

      Invoke the request using `OPTIONS` method and asynchronously receive the response entity payload of given generic type back.
      Specified by:
        `optionsForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `responseType` - Response payload generic type representation
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### trace

          default CompletionStage<ResponseEntity<Void>> trace()

      Invoke the request using `TRACE` method and asynchronously receive a response back.

      The response type is conventionally of `Void` type, because no response paylod is expected from this invocation. Refer to the other `post` methods to obtain a response payload.

      Specified by:
        `trace` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### trace

          default <T> CompletionStage<ResponseEntity<T>> trace(Class<T> responseType)

      Invoke the request using `TRACE` method and asynchronously receive a response back.
      Specified by:
        `trace` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### trace

          default <T> CompletionStage<ResponseEntity<T>> trace(ResponseType<T> responseType)

      Invoke the request using `TRACE` method and asynchronously receive a response back.
      Specified by:
        `trace` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response type
      Parameters:
        `responseType` - Response payload generic type representation
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

    - #### traceForEntity

          default <T> CompletionStage<Optional<T>> traceForEntity(Class<T> responseType)

      Invoke the request using `TRACE` method and asynchronously receive the response entity payload back.
      Specified by:
        `traceForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `responseType` - Expected response payload type
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### traceForEntity

          default <T> CompletionStage<Optional<T>> traceForEntity(ResponseType<T> responseType)

      Invoke the request using `TRACE` method and asynchronously receive the response entity payload of given generic type back.
      Specified by:
        `traceForEntity` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Type Parameters:
        `T` - Response entity type
      Parameters:
        `responseType` - Response payload generic type representation
      Returns:
        A `CompletionStage` to handle the response payload of expected type as the result of the request invocation, or an empty Optional if not present (empty response entity)
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)
        `UnsuccessfulResponseException` - In case the status code of the response returned by the server is not a successful type status code, i.e. it is not a `2xx` status code

    - #### head

          default CompletionStage<ResponseEntity<Void>> head()

      Invoke the request using `HEAD` method and asynchronously receive a response back.
      Specified by:
        `head` in interface `RestClientOperations.InvocationOperations<CompletionStage<?>,CompletionStage<?>,CompletionStage<InputStream>,CompletionStage<?>,CompletionStage<Optional<URI>>>`
      Returns:
        A `CompletionStage` to handle the `ResponseEntity` object as a result of the request invocation
      Throws:
        `HttpClientInvocationException` - Internal invocation failure (for example, an I/O error on communication channel or expected and actual payload type mismatch)

Copyright © 2019 The Holon Platform. All rights reserved.