@NotNull @Override public <D extends Operation.Data, T, V extends Operation.Variables> ApolloStoreOperation<Response<T>> read( @NotNull Operation<D, T, V> operation, @NotNull ResponseFieldMapper<D> responseFieldMapper, @NotNull ResponseNormalizer<Record> responseNormalizer, @NotNull CacheHeaders cacheHeaders) { return ApolloStoreOperation.emptyOperation(Response.<T>builder(operation).build()); }
@SuppressWarnings("unchecked") public Response<W> parse(@NotNull Map<String, Object> payload) { checkNotNull(payload, "payload == null"); D data = null; if (payload.containsKey("data")) { Map<String, Object> buffer = (Map<String, Object>) payload.get("data"); RealResponseReader<Map<String, Object>> realResponseReader = new RealResponseReader<>(operation.variables(), buffer, new MapFieldValueResolver(), scalarTypeAdapters, responseNormalizer); data = (D) responseFieldMapper.map(realResponseReader); } List<Error> errors = null; if (payload.containsKey("errors")) { List<Map<String, Object>> errorPayloads = (List<Map<String, Object>>) payload.get("errors"); if (errorPayloads != null) { errors = new ArrayList<>(); for (Map<String, Object> errorPayload : errorPayloads) { errors.add(readError(errorPayload)); } } } return Response.<W>builder(operation) .data(operation.wrapData(data)) .errors(errors) .dependentKeys(responseNormalizer.dependentKeys()) .build(); }
@SuppressWarnings("unchecked") InterceptorResponse parse(Operation operation, okhttp3.Response httpResponse) throws ApolloHttpException, ApolloParseException { String cacheKey = httpResponse.request().header(HttpCache.CACHE_KEY_HEADER); if (httpResponse.isSuccessful()) { try { OperationResponseParser parser = new OperationResponseParser(operation, responseFieldMapper, scalarTypeAdapters, normalizer); Response parsedResponse = parser.parse(httpResponse.body().source()) .toBuilder() .fromCache(httpResponse.cacheResponse() != null) .build(); if (parsedResponse.hasErrors() && httpCache != null) { httpCache.removeQuietly(cacheKey); } return new InterceptorResponse(httpResponse, parsedResponse, normalizer.records()); } catch (Exception rethrown) { logger.e(rethrown, "Failed to parse network response for operation: %s", operation); closeQuietly(httpResponse); if (httpCache != null) { httpCache.removeQuietly(cacheKey); } throw new ApolloParseException("Failed to parse http response", rethrown); } } else { logger.e("Failed to parse network response: %s", httpResponse); throw new ApolloHttpException(httpResponse); } }
@SuppressWarnings("unchecked") public Response<W> parse(@Nonnull Map<String, Object> payload) { checkNotNull(payload, "payload == null"); D data = null; if (payload.containsKey("data")) { Map<String, Object> buffer = (Map<String, Object>) payload.get("data"); RealResponseReader<Map<String, Object>> realResponseReader = new RealResponseReader<>(operation.variables(), buffer, new MapFieldValueResolver(), scalarTypeAdapters, responseNormalizer); data = (D) responseFieldMapper.map(realResponseReader); } List<Error> errors = null; if (payload.containsKey("errors")) { List<Map<String, Object>> errorPayloads = (List<Map<String, Object>>) payload.get("errors"); if (errorPayloads != null) { errors = new ArrayList<>(); for (Map<String, Object> errorPayload : errorPayloads) { errors.add(readError(errorPayload)); } } } return Response.<W>builder(operation) .data(operation.wrapData(data)) .errors(errors) .dependentKeys(responseNormalizer.dependentKeys()) .build(); }
@SuppressWarnings("unchecked") public Response<W> parse(@Nonnull Map<String, Object> payload) { checkNotNull(payload, "payload == null"); D data = null; if (payload.containsKey("data")) { Map<String, Object> buffer = (Map<String, Object>) payload.get("data"); RealResponseReader<Map<String, Object>> realResponseReader = new RealResponseReader<>(operation.variables(), buffer, new MapFieldValueResolver(), scalarTypeAdapters, responseNormalizer); data = (D) responseFieldMapper.map(realResponseReader); } List<Error> errors = null; if (payload.containsKey("errors")) { List<Map<String, Object>> errorPayloads = (List<Map<String, Object>>) payload.get("errors"); if (errorPayloads != null) { errors = new ArrayList<>(); for (Map<String, Object> errorPayload : errorPayloads) { errors.add(readError(errorPayload)); } } } return Response.<W>builder(operation) .data(operation.wrapData(data)) .errors(errors) .dependentKeys(responseNormalizer.dependentKeys()) .build(); }
@Nonnull @Override public Response<T> execute(ReadableStore cache) { Record rootRecord = cache.read(CacheKeyResolver.rootKeyForOperation(operation).key(), cacheHeaders); if (rootRecord == null) { return Response.<T>builder(operation).fromCache(true).build(); } CacheFieldValueResolver fieldValueResolver = new CacheFieldValueResolver(cache, operation.variables(), cacheKeyResolver(), cacheHeaders); RealResponseReader<Record> responseReader = new RealResponseReader<>(operation.variables(), rootRecord, fieldValueResolver, scalarTypeAdapters, responseNormalizer); try { responseNormalizer.willResolveRootQuery(operation); T data = operation.wrapData(responseFieldMapper.map(responseReader)); return Response.<T>builder(operation) .data(data) .fromCache(true) .dependentKeys(responseNormalizer.dependentKeys()) .build(); } catch (Exception e) { logger.e(e, "Failed to read cache response"); return Response.<T>builder(operation).fromCache(true).build(); } } });
@Nonnull @Override public Response<T> execute(ReadableStore cache) { Record rootRecord = cache.read(CacheKeyResolver.rootKeyForOperation(operation).key(), cacheHeaders); if (rootRecord == null) { return Response.<T>builder(operation).fromCache(true).build(); } CacheFieldValueResolver fieldValueResolver = new CacheFieldValueResolver(cache, operation.variables(), cacheKeyResolver(), cacheHeaders); RealResponseReader<Record> responseReader = new RealResponseReader<>(operation.variables(), rootRecord, fieldValueResolver, scalarTypeAdapters, responseNormalizer); try { responseNormalizer.willResolveRootQuery(operation); T data = operation.wrapData(responseFieldMapper.map(responseReader)); return Response.<T>builder(operation) .data(data) .fromCache(true) .dependentKeys(responseNormalizer.dependentKeys()) .build(); } catch (Exception e) { logger.e(e, "Failed to read cache response"); return Response.<T>builder(operation).fromCache(true).build(); } } });
private <W> Response<W> parseSubscription(Operation<?, W, ?> operation, InterceptorResponse response) { return Response.<W>builder(operation).data(null).build(); }
private <W> Response<W> parseSubscription(Operation<?, W, ?> operation, InterceptorResponse response) { return Response.<W>builder(operation).data(null).build(); }
private InterceptorResponse cacheMissResponse(Operation operation) { return new InterceptorResponse(null, Response.builder(operation).fromCache(true).build(), null); } }
private InterceptorResponse cacheMissResponse(Operation operation) { return new InterceptorResponse(null, Response.builder(operation).fromCache(true).build(), null); } }
@Nonnull @Override public <D extends Operation.Data, T, V extends Operation.Variables> GraphQLStoreOperation<Response<T>> read( @Nonnull Operation<D, T, V> operation, @Nonnull ResponseFieldMapper<D> responseFieldMapper, @Nonnull ResponseNormalizer<Record> responseNormalizer, @Nonnull CacheHeaders cacheHeaders) { return GraphQLStoreOperation.emptyOperation(Response.<T>builder(operation).build()); }
@Nonnull @Override public <D extends Operation.Data, T, V extends Operation.Variables> GraphQLStoreOperation<Response<T>> read( @Nonnull Operation<D, T, V> operation, @Nonnull ResponseFieldMapper<D> responseFieldMapper, @Nonnull ResponseNormalizer<Record> responseNormalizer, @Nonnull CacheHeaders cacheHeaders) { return GraphQLStoreOperation.emptyOperation(Response.<T>builder(operation).build()); }
.errors(errors) .dependentKeys(responseNormalizer.dependentKeys()) .build(); } finally { if (jsonReader != null) {
com.apollographql.apollo.api.Response.<MockOperation.Data>builder(new MockOperation()) .errors(Collections.singletonList(new Error("PersistedQueryNotSupported", null, null))) .build(), Collections.<Record>emptyList() com.apollographql.apollo.api.Response.<MockOperation.Data>builder(new MockOperation()) .data(new MockOperation.Data()) .build(), Collections.<Record>emptyList()
com.apollographql.apollo.api.Response.<MockOperation.Data>builder(new MockOperation()) .errors(Collections.singletonList(new Error("PersistedQueryNotFound", null, null))) .build(), Collections.<Record>emptyList() com.apollographql.apollo.api.Response.<MockOperation.Data>builder(new MockOperation()) .data(new MockOperation.Data()) .build(), Collections.<Record>emptyList()
@NotNull @Override public Response<T> execute(ReadableStore cache) { Record rootRecord = cache.read(CacheKeyResolver.rootKeyForOperation(operation).key(), cacheHeaders); if (rootRecord == null) { return Response.<T>builder(operation).fromCache(true).build(); } CacheFieldValueResolver fieldValueResolver = new CacheFieldValueResolver(cache, operation.variables(), cacheKeyResolver(), cacheHeaders, cacheKeyBuilder); RealResponseReader<Record> responseReader = new RealResponseReader<>(operation.variables(), rootRecord, fieldValueResolver, scalarTypeAdapters, responseNormalizer); try { responseNormalizer.willResolveRootQuery(operation); T data = operation.wrapData(responseFieldMapper.map(responseReader)); return Response.<T>builder(operation) .data(data) .fromCache(true) .dependentKeys(responseNormalizer.dependentKeys()) .build(); } catch (Exception e) { logger.e(e, "Failed to read cache response"); return Response.<T>builder(operation).fromCache(true).build(); } } });
InterceptorResponse cacheMissResponse(Operation operation) { return new InterceptorResponse(null, Response.builder(operation).fromCache(true).build(), null); } }
@Override public Object answer(InvocationOnMock invocation) throws Throwable { ((ApolloInterceptor.CallBack) invocation.getArguments()[2]).onResponse( new ApolloInterceptor.InterceptorResponse( mockHttpResponse(), com.apollographql.apollo.api.Response.<MockOperation.Data>builder(new MockOperation()) .errors(Collections.singletonList(new Error("SomeOtherError", null, null))) .build(), Collections.<Record>emptyList() ) ); return null; } }).when(chain).proceedAsync(
@Override public Object answer(InvocationOnMock invocation) throws Throwable { ((ApolloInterceptor.CallBack) invocation.getArguments()[2]).onResponse( new ApolloInterceptor.InterceptorResponse( mockHttpResponse(), com.apollographql.apollo.api.Response.<MockOperation.Data>builder(new MockOperation()) .data(new MockOperation.Data()) .build(), Collections.<Record>emptyList() ) ); return null; } }).when(chain).proceedAsync(