@Override
public <T, R> Mono<ReactiveResponseEntity<T>> invoke(ReactiveRequestDefinition requestDefinition, HttpMethod method,
RequestEntity<R> requestEntity, ResponseType<T> responseType, boolean onlySuccessfulStatusCode) {
final Builder builder = JaxrsRestClientOperations.configure(getClient(), requestDefinition).request();
requestDefinition.getHeaders().forEach((n, v) -> builder.header(n, v));
final AsyncInvoker invoker = builder.async();
return Mono.<ReactiveResponseEntity<T>>create(sink -> {
Optional<Entity<?>> entity = JaxrsRestClientOperations.buildRequestEntity(requestEntity);
if (entity.isPresent()) {
invoker.method(method.getMethodName(), entity.get(),
new ResponseInvocationCallback<>(sink, responseType, onlySuccessfulStatusCode));
} else {
invoker.method(method.getMethodName(),
new ResponseInvocationCallback<>(sink, responseType, onlySuccessfulStatusCode));
}
});
}