private <S> List<S> concatPagedResultToList(@Nonnull PagedQueryResult<T> result, @Nonnull SphereClient client, @Nonnull Function<T, S> resultsMapper) { final Stream<S> firstStream = result.getResults().stream().map(resultsMapper); Stream<S> nextStream = queryNextPages(client, result.getTotal(), resultsMapper) .flatMap(stage -> stage.toCompletableFuture().join()); return concat(firstStream, nextStream) .collect(toList()); }
private void consumePagedResult(@Nonnull PagedQueryResult<T> result, @Nonnull SphereClient client, @Nonnull Consumer<T> resultsConsumer) { result.getResults().forEach(resultsConsumer); queryNextPages(client, result.getTotal(), resultsConsumer) .forEach(stageStreamS -> stageStreamS.toCompletableFuture().join()); }
@Override public CompletionStage<Optional<Payment>> findPayment(Cart cart, String pspId, String methodId) { PaymentQuery queryAllRefPayments = createPaymentsForCartQuery(cart, pspId, methodId); return sphereClient.execute(queryAllRefPayments) .thenApply(page -> page.getTotal() > 0 ? Optional.of(page.getResults().get(0)) : Optional.empty()); }
@Override public CompletionStage<Optional<Payment>> findPayment(Cart cart, String pspId, String methodId) { PaymentQuery queryAllRefPayments = createPaymentsForCartQuery(cart, pspId, methodId); return sphereClient.execute(queryAllRefPayments) .thenApply(page -> page.getTotal() > 0 ? Optional.of(page.getResults().get(0)) : Optional.empty()); }
@Override public CompletionStage<Optional<Payment>> findPaymentWithoutTransaction(Cart cart, String pspId, String methodId) { if(null == cart.getPaymentInfo() || null == cart.getPaymentInfo().getPayments() || cart.getPaymentInfo().getPayments().isEmpty()) { return CompletableFuture.supplyAsync(() -> Optional.empty()); } PaymentQuery queryAllRefPayments = createPaymentsForCartQuery(cart, pspId, methodId); queryAllRefPayments = queryAllRefPayments .plusPredicates(p -> p.transactions().isEmpty()); return sphereClient.execute(queryAllRefPayments) .thenApply(page -> page.getTotal() > 0 ? Optional.of(page.getResults().get(0)) : Optional.empty()); }
@Override public CompletionStage<Optional<Payment>> findPaymentWithoutTransaction(Cart cart, String pspId, String methodId) { if(null == cart.getPaymentInfo() || null == cart.getPaymentInfo().getPayments() || cart.getPaymentInfo().getPayments().isEmpty()) { return CompletableFuture.supplyAsync(() -> Optional.empty()); } PaymentQuery queryAllRefPayments = createPaymentsForCartQuery(cart, pspId, methodId); queryAllRefPayments = queryAllRefPayments .plusPredicates(p -> p.transactions().isEmpty()); return sphereClient.execute(queryAllRefPayments) .thenApply(page -> page.getTotal() > 0 ? Optional.of(page.getResults().get(0)) : Optional.empty()); }
return PagedQueryResult.of(pagedQueryResult.getOffset(), pagedQueryResult.getLimit(), pagedQueryResult.getTotal(), results);
return PagedQueryResult.of(pagedQueryResult.getOffset(), pagedQueryResult.getLimit(), pagedQueryResult.getTotal(), results);
@Test public void singleValueResult() throws Exception { final PagedQueryResult<String> result = PagedQueryResult.of("hello"); assertThat(result.getCount()).isEqualTo(1); assertThat(result.getOffset()).isEqualTo(0); assertThat(result.getResults()).isEqualTo(Collections.singletonList("hello")); assertThat(result.getTotal()).isEqualTo(1); }
@Test public void withTotal() throws Exception { final PagedQueryResult<String> result = PagedQueryResult.of("hello").withTotal(500L); assertThat(result.getCount()).isEqualTo(1); assertThat(result.getOffset()).isEqualTo(0); assertThat(result.getResults()).isEqualTo(Collections.singletonList("hello")); assertThat(result.getTotal()).isEqualTo(500); }
@Test public void withFetchTotalFalseRemovesTotalFromOutput() throws Exception { withCategory(client(), category -> { final CategoryQuery query = CategoryQuery.of().byId(category.getId()); final PagedQueryResult<Category> resultWithTotal = client().executeBlocking(query); assertThat(resultWithTotal.getTotal()) .as("total is by default present") .isNotNull().isEqualTo(1); final CategoryQuery queryWithoutTotal = query.withFetchTotal(false); final PagedQueryResult<Category> resultWithoutTotal = client().executeBlocking(queryWithoutTotal); assertThat(resultWithoutTotal.getTotal()) .as("total is not present") .isNull(); }); }
assertThat(messageQueryResult.getTotal()).isGreaterThanOrEqualTo(1L); final PaymentTransactionAddedMessage paymentTransactionAddedMessage = messageQueryResult.head().get(); assertThat(paymentTransactionAddedMessage.getTransaction().getTimestamp()).isEqualTo(firstRefundTransaction.getTimestamp());
@Test public void requestsArePossible() throws Exception { withCategory(client(), category -> { final CategoryQuery categoryQuery = CategoryQuery.of(); final SphereApiConfig apiConfig = SphereApiConfig.of(getSphereClientConfig().getProjectKey(), getSphereClientConfig().getApiUrl()); final SphereAuthConfig authConfig = SphereAuthConfig.of(getSphereClientConfig().getProjectKey(), getSphereClientConfig().getClientId(), getSphereClientConfig().getClientSecret(), getSphereClientConfig().getAuthUrl()); final SphereAccessTokenSupplier fixedTokenSupplier = SphereAccessTokenSupplier.ofOneTimeFetchingToken(authConfig, newHttpClient(), true); final SphereClient oneTokenClient = SphereClient.of(apiConfig, newHttpClient(), fixedTokenSupplier); final Long actual = oneTokenClient.execute(categoryQuery).toCompletableFuture().join().getTotal(); assertThat(actual).isGreaterThanOrEqualTo(1); oneTokenClient.close(); }); } }