private void successBatchGet(BatchGetRequest request, Response<BatchKVResponse<K, EntityResponse<RT>>> responseToBatch, Entry<RestRequestBatchKey, BatchEntry<Response<Object>>> entry, final ProtocolVersion version) { Set<String> ids = (Set<String>) request.getObjectIds().stream() .map(o -> BatchResponse.keyToString(o, version)) .collect(Collectors.toSet()); DataMap dm = filterIdsInBatchResult(responseToBatch.getEntity().data(), ids); BatchResponse br = new BatchResponse<>(dm, request.getResponseDecoder().getEntityClass()); Response rsp = new ResponseImpl(responseToBatch, br); entry.getValue().getPromise().done(rsp); }
Class<?> keyClass = firstRequest.getResourceSpec().getKeyClass(); final ResourceSpec firstResourceSpec = firstRequest.getResourceSpec(); final Map<String, Object> batchQueryParams = getReadOnlyQueryParameters(BatchGetRequestUtil.getBatchQueryParam(requests, batchFields)); return new BatchGetRequest<RT>(getReadOnlyHeaders(firstRequest.getHeaders()), getReadOnlyCookies(firstRequest.getCookies()), firstRequest.getResponseDecoder(), batchQueryParams, firstRequest.getQueryParamClasses(), firstResourceSpec, firstRequest.getBaseUriTemplate(), getReadOnlyPathKeys(firstRequest.getPathKeys()), firstRequest.getRequestOptions());
throws ServiceUnavailableException Set<Object> idObjects = request.getObjectIds(); BatchGetRequestBuilder<Object, T> builder = new BatchGetRequestBuilder<Object, T>(request.getBaseUriTemplate(), request.getResponseDecoder(), request.getResourceSpec(), request.getRequestOptions()); builder.ids(batch.getValue()); for (Map.Entry<String, Object> param : request.getQueryParamsObjects().entrySet()) for (Map.Entry<String, String> header : request.getHeaders().entrySet())
/** * Converts an entity request to a batch one, for subsequent batching with other requests. * @param request to convert * @param <RT> type of entity template * @return batch request */ @SuppressWarnings("deprecation") public static <RT extends RecordTemplate> BatchGetRequest<RT> batch(GetRequest<RT> request) { Object id = request.getObjectId(); if (id == null) { throw new IllegalArgumentException( "It is not possible to create a batch get request from a get request without an id."); } Class<?> keyClass = request.getResourceSpec().getKeyClass(); throwIfClassCompoundOrComplex(keyClass, "batch", "batchKV"); Map<String, Object> queryParams = new HashMap<String, Object>(request.getQueryParamsObjects()); queryParams.put(RestConstants.QUERY_BATCH_IDS_PARAM, new HashSet<>(Arrays.asList(id))); return new BatchGetRequest<RT>(getReadOnlyHeaders(request.getHeaders()), getReadOnlyCookies(request.getCookies()), new BatchResponseDecoder<RT>(request.getEntityClass()), getReadOnlyQueryParameters(queryParams), Collections.<String, Class<?>>emptyMap(), request.getResourceSpec(), request.getBaseUriTemplate(), getReadOnlyPathKeys(request.getPathKeys()), request.getRequestOptions()); }
/** * Builds a GET request for this resource batch. * * @return a read request for the resource batch */ @Override public BatchGetRequest<V> build() { ensureBatchKeys(); Class<?> keyClass = _resourceSpec.getKeyClass(); throwIfClassCompoundOrComplex(keyClass, "build", "buildKV"); return new BatchGetRequest<V>(buildReadOnlyHeaders(), buildReadOnlyCookies(), _decoder, buildReadOnlyQueryParameters(), Collections.<String, Class<?>>emptyMap(), _resourceSpec, getBaseUriTemplate(), buildReadOnlyPathKeys(), getRequestOptions()); }