@Override public boolean containsValue(Object value) { requireNonNull(value); for (CompletableFuture<V> valueFuture : delegate.values()) { if (value.equals(Async.getIfReady(valueFuture))) { return true; } } return false; }
@Override public @Nullable V get(Object key) { return Async.getIfReady(delegate.get(key)); }
@Test(dataProvider = "successful") public void getIfReady_success(CompletableFuture<?> future) { assertThat(Async.getIfReady(future), is(1)); }
@Test(dataProvider = "unsuccessful") public void getIfReady_fails(CompletableFuture<?> future) { assertThat(Async.getIfReady(future), is(nullValue())); }
@Override public @Nullable V getIfPresent(Object key) { CompletableFuture<V> future = asyncCache().cache().getIfPresent(key, /* recordStats */ true); return Async.getIfReady(future); }
@Override public Map<K, V> getAllPresent(Iterable<?> keys) { Set<Object> uniqueKeys = new LinkedHashSet<>(); for (Object key : keys) { uniqueKeys.add(key); } int misses = 0; Map<Object, Object> result = new LinkedHashMap<>(); for (Object key : uniqueKeys) { CompletableFuture<V> future = asyncCache().cache().get(key); Object value = Async.getIfReady(future); if (value == null) { misses++; } else { result.put(key, value); } } asyncCache().cache().statsCounter().recordMisses(misses); asyncCache().cache().statsCounter().recordHits(result.size()); @SuppressWarnings("unchecked") Map<K, V> castedResult = (Map<K, V>) result; return Collections.unmodifiableMap(castedResult); }
@Override public boolean containsValue(Object value) { requireNonNull(value); for (CompletableFuture<V> valueFuture : delegate.values()) { if (value.equals(Async.getIfReady(valueFuture))) { return true; } } return false; }
@Override public @Nullable V get(Object key) { return Async.getIfReady(delegate.get(key)); }