Я внедряю клиент GraphQL в Java-приложение, используя автоматическую генерацию запросов Apollo, и до сих пор мне удавалось связывать вызовы, и я также получаю нужные данные.Проблема в том, что Apollo заставляет меня реализовать анонимный метод ApolloCall.Callback<>()
, который переопределяет void onResponse(Response response)
и void onFailure()
, но я не могу найти способ получить этот объект Response
, который я хочу собрать иубедитесь, что у меня есть.
Это проект Spring Boot на Java 11, я пытался использовать CompletableFuture
, но с ограниченными знаниями о нем и о том, как использовать его для этой конкретной проблемы, мне не повезло.Я также пытался реализовать поддержку RxJava, которую должен иметь Apollo, но я не смог решить проблемы с зависимостями с помощью этого подхода.
Я почти уверен, что фьючерсы это решат, но опять же я не знаю, как.
public void getOwnerIdFromClient() {
client
.query(getOwnerDbIdQuery)
.enqueue(
new ApolloCall.Callback<>() {
@Override
public void onResponse(@Nonnull Response<Optional<GetOwnerDbIdQuery.Data>> response) {
int ownerId =
response
.data()
.get()
.entities()
.get()
.edges()
.get()
.get(0)
.node()
.get()
.ownerDbId()
.get();
System.out.println("OwnerId = " + ownerId);
}
@Override
public void onFailure(@Nonnull ApolloException e) {
logger.error("Could not retrieve response from GetOwnerDbIdQuery.", e);
}
});
}
Поскольку я хочу работать с этим int ownerId
за пределами onResponse
это не достаточное решение.Я на самом деле хотел бы сделать этот вызов x количество раз и создать список всех идентификаторов, которые я на самом деле получил, так как это также может вернуть нулевой идентификатор, а это значит, что мне нужен какой-то способ дождаться их завершения.