use of com.apollographql.apollo.cache.normalized.Record in project apollo-android by apollographql.
the class ApolloCacheInterceptor method resolveFromCache.
InterceptorResponse resolveFromCache(InterceptorRequest request) throws ApolloException {
ResponseNormalizer<Record> responseNormalizer = apolloStore.cacheResponseNormalizer();
// noinspection unchecked
ApolloStoreOperation<Response> apolloStoreOperation = apolloStore.read(request.operation, responseFieldMapper, responseNormalizer, request.cacheHeaders);
Response cachedResponse = apolloStoreOperation.execute();
if (cachedResponse.data() != null) {
logger.d("Cache HIT for operation %s", request.operation);
return new InterceptorResponse(null, cachedResponse, responseNormalizer.records());
}
logger.d("Cache MISS for operation %s", request.operation);
throw new ApolloException(String.format("Cache miss for operation %s", request.operation));
}
use of com.apollographql.apollo.cache.normalized.Record in project apollo-android by apollographql.
the class SqlNormalizedCacheTest method testHeader_evictAfterRead.
// Tests for StandardCacheHeader compliance
@Test
public void testHeader_evictAfterRead() {
createRecord(STANDARD_KEY);
Record record = sqlStore.loadRecord(STANDARD_KEY, CacheHeaders.builder().addHeader(ApolloCacheHeaders.EVICT_AFTER_READ, "true").build());
assertThat(record).isNotNull();
Record nullRecord = sqlStore.loadRecord(STANDARD_KEY, CacheHeaders.builder().addHeader(ApolloCacheHeaders.EVICT_AFTER_READ, "true").build());
assertThat(nullRecord).isNull();
}
use of com.apollographql.apollo.cache.normalized.Record in project apollo-android by apollographql.
the class SqlNormalizedCache method performMerge.
@Nonnull
protected Set<String> performMerge(@Nonnull final Record apolloRecord, @Nonnull final CacheHeaders cacheHeaders) {
Optional<Record> optionalOldRecord = selectRecordForKey(apolloRecord.key());
Set<String> changedKeys;
if (!optionalOldRecord.isPresent()) {
createRecord(apolloRecord.key(), recordFieldAdapter.toJson(apolloRecord.fields()));
changedKeys = Collections.emptySet();
} else {
Record oldRecord = optionalOldRecord.get();
changedKeys = oldRecord.mergeWith(apolloRecord);
if (!changedKeys.isEmpty()) {
updateRecord(oldRecord.key(), recordFieldAdapter.toJson(oldRecord.fields()));
}
}
return changedKeys;
}
use of com.apollographql.apollo.cache.normalized.Record in project apollo-android by apollographql.
the class ResponseNormalizationTest method testHeroTypeDependentAliasedFieldQueryDroid.
@Test
public void testHeroTypeDependentAliasedFieldQueryDroid() throws Exception {
assertHasNoErrors("HeroTypeDependentAliasedFieldResponse.json", new HeroTypeDependentAliasedFieldQuery(Input.fromNullable(JEDI)));
Record record = normalizedCache.loadRecord(QUERY_ROOT_KEY, CacheHeaders.NONE);
CacheReference heroReference = (CacheReference) record.field(TEST_FIELD_KEY_JEDI);
final Record hero = normalizedCache.loadRecord(heroReference.key(), CacheHeaders.NONE);
assertThat(hero.field("primaryFunction")).isEqualTo("Astromech");
assertThat(hero.field("__typename")).isEqualTo("Droid");
}
use of com.apollographql.apollo.cache.normalized.Record in project apollo-android by apollographql.
the class ResponseNormalizationTest method testHeroTypeDependentAliasedFieldQueryHuman.
@Test
public void testHeroTypeDependentAliasedFieldQueryHuman() throws Exception {
assertHasNoErrors("HeroTypeDependentAliasedFieldResponseHuman.json", new HeroTypeDependentAliasedFieldQuery(Input.fromNullable(EMPIRE)));
Record record = normalizedCache.loadRecord(QUERY_ROOT_KEY, CacheHeaders.NONE);
CacheReference heroReference = (CacheReference) record.field(TEST_FIELD_KEY_EMPIRE);
final Record hero = normalizedCache.loadRecord(heroReference.key(), CacheHeaders.NONE);
assertThat(hero.field("homePlanet")).isEqualTo("Tatooine");
assertThat(hero.field("__typename")).isEqualTo("Human");
}
Aggregations