@Nullable @Override public Record loadRecord(@NotNull final String key, @NotNull final CacheHeaders cacheHeaders) { final Record record; try { record = lruCache.get(key, new Callable<Record>() { @Override public Record call() throws Exception { return nextCache().flatMap(new Function<NormalizedCache, Optional<Record>>() { @NotNull @Override public Optional<Record> apply(@NotNull NormalizedCache cache) { return Optional.fromNullable(cache.loadRecord(key, cacheHeaders)); } }).get(); // lruCache.get(key, callable) requires non-null. } }); } catch (Exception ignore) { return null; } if (cacheHeaders.hasHeader(ApolloCacheHeaders.EVICT_AFTER_READ)) { lruCache.invalidate(key); } return record; }
/** * @since 11.0 */ @Nullable @Override public V get(K key, Callable<? extends V> valueLoader) throws ExecutionException { return delegate().get(key, valueLoader); }
Observable<Parsed> cache(@Nonnull final Key key) { try { return memCache.get(key, () -> disk(key)); } catch (ExecutionException e) { return Observable.empty(); } }
@Nullable @Override public Record loadRecord(@Nonnull final String key, @Nonnull final CacheHeaders cacheHeaders) { final Record record; try { record = lruCache.get(key, new Callable<Record>() { @Override public Record call() throws Exception { return nextCache().flatMap(new Function<NormalizedCache, Optional<Record>>() { @Nonnull @Override public Optional<Record> apply(@Nonnull NormalizedCache cache) { return Optional.fromNullable(cache.loadRecord(key, cacheHeaders)); } }).get(); // lruCache.get(key, callable) requires non-null. } }); } catch (Exception ignore) { return null; } if (cacheHeaders.hasHeader(GraphQLCacheHeaders.EVICT_AFTER_READ)) { lruCache.invalidate(key); } return record; }
/** * There should only be one fetch request in flight at any give time. * <p> * Return cached request in the form of a Behavior Subject which will emit to its subscribers * the last value it gets. Subject/Observable is cached in a {@link ConcurrentMap} to maintain * thread safety. * * @param key resource identifier * @return observable that emits a {@link Parsed} value */ @Nullable Observable<Parsed> fetchAndPersist(@Nonnull final Key key) { try { return inFlightRequests.get(key, () -> response(key)); } catch (ExecutionException e) { return Observable.empty(); } }
@Nullable @Override public Record loadRecord(@Nonnull final String key, @Nonnull final CacheHeaders cacheHeaders) { final Record record; try { record = lruCache.get(key, new Callable<Record>() { @Override public Record call() throws Exception { return nextCache().flatMap(new Function<NormalizedCache, Optional<Record>>() { @Nonnull @Override public Optional<Record> apply(@Nonnull NormalizedCache cache) { return Optional.fromNullable(cache.loadRecord(key, cacheHeaders)); } }).get(); // lruCache.get(key, callable) requires non-null. } }); } catch (Exception ignore) { return null; } if (cacheHeaders.hasHeader(GraphQLCacheHeaders.EVICT_AFTER_READ)) { lruCache.invalidate(key); } return record; }