/** * Creates a map of those queryParams which are required to be the same for all batchable requests. * * @param request the BatchGetRequest to pull query params from * @return Map which contains all query params save for Batch_Ids and Fields */ public static Map<String, Object> getQueryParamsForBatchingKey(BatchRequest<?> request) { final Map<String, Object> params = new HashMap<String, Object>(request.getQueryParamsObjects()); params.remove(RestConstants.QUERY_BATCH_IDS_PARAM); params.remove(RestConstants.FIELDS_PARAM); return params; }
/** * @return the IDs of the objects in this request. The IDs are the keys with their original types (non-coerced) */ public Set<Object> getObjectIds() { @SuppressWarnings({"unchecked"}) Collection<Object> ids = (Collection<Object>) getQueryParamsObjects().get(RestConstants.QUERY_BATCH_IDS_PARAM); if (ids == null || ids.isEmpty()) { return Collections.emptySet(); } return new HashSet<Object>(ids); } }
@SuppressWarnings({"rawtypes", "unchecked"}) private <K> Request buildScatterBatchRequestByKeys(BatchRequest<?> batchRequest, Set<K> keys, Map<K, ?> body) { final BatchKVRequestBuilder builder = getBatchBuilder(batchRequest, keys, body); // keep all non-batch query parameters batchRequest.getQueryParamsObjects().entrySet().stream() .filter(queryParam -> !queryParam.getKey().equals(RestConstants.QUERY_BATCH_IDS_PARAM)) .forEach(queryParam -> builder.setParam(queryParam.getKey(), queryParam.getValue())); // keep all headers batchRequest.getHeaders().forEach(builder::setHeader); return builder.build(); }
@SuppressWarnings({"rawtypes", "unchecked"}) private <K> Request unbatchRequestByKey(BatchRequest<?> batchRequest, K key) { final SingleEntityRequestBuilder builder = getBuilder(batchRequest); // For BATCH_UPDATE and BATCH_PARTIAL_UPDATE, the generated Request is missing body, // but that is sufficient for us to implement getUris where we only care about individual request URI. builder.id(key); // keep all non-batch query parameters batchRequest.getQueryParamsObjects().entrySet().stream() .filter(queryParam -> !queryParam.getKey().equals(RestConstants.QUERY_BATCH_IDS_PARAM)) .forEach(queryParam -> builder.setParam(queryParam.getKey(), queryParam.getValue())); // keep all headers batchRequest.getHeaders().forEach(builder::setHeader); return builder.build(); }