@Override public void record(long key) { Object value = cache.get(key); if (value == null) { if (cache.size() == cache.getMaxSize()) { policyStats.recordEviction(); } cache.put(key, key); policyStats.recordMiss(); } else { policyStats.recordHit(); } }
public ExpiringMapPolicy(Config config) { policyStats = new PolicyStats("product.ExpiringMap"); ExpiringMapSettings settings = new ExpiringMapSettings(config); cache = ExpiringMap.builder() .expirationPolicy(settings.policy()) .maxSize(settings.maximumSize()) .build(); }
/** * Returns the set of qualifying annotations on the given elements. * @param elements the annotated elements. Null elements are ignored. * @return the set of qualifying annotations on the given elements. */ public static Set<Annotation> getQualifiers(AnnotatedElement... elements) { return ANNOS.computeIfAbsent(elements.length == 1 ? elements[0] : new HashSet<>(Arrays.asList(elements)), x -> Arrays.stream(elements) .filter(Objects::nonNull) .map(AnnotatedElement::getAnnotations) .flatMap(Arrays::stream) .filter(anno -> anno.annotationType().isAnnotationPresent(Qualifier.class)) .collect(toSet())); } }
@Override @SuppressWarnings("unchecked") public V get(Object key) { ExpiringEntry<K, V> entry = getEntry(key); if (entry == null) { return load((K) key); } else if (ExpirationPolicy.ACCESSED.equals(entry.expirationPolicy.get())) resetEntry(entry, false); return entry.getValue(); }
/** * Creates a new instance of ExpiringMap with ExpirationPolicy.CREATED and an expiration of 60 seconds. */ @SuppressWarnings("unchecked") public static <K, V> ExpiringMap<K, V> create() { return new ExpiringMap<K, V>((Builder<K, V>) ExpiringMap.builder()); }
@Override public int size() { return ExpiringMap.this.size(); } };
@Override public void reorder(ExpiringEntry<K, V> value) { remove(value.key); value.resetExpiration(); put(value.key, value); }
/** * Builds and returns an expiring map. * * @param <K1> Key type * @param <V1> Value type */ @SuppressWarnings("unchecked") public <K1 extends K, V1 extends V> ExpiringMap<K1, V1> build() { return new ExpiringMap<K1, V1>((Builder<K1, V1>) this); }
/** * Creates an ExpiringMap builder. * * @return New ExpiringMap builder */ public static Builder<Object, Object> builder() { return new Builder<Object, Object>(); }
private long getExpectedExpirationSeconds() { try { return localCache.getExpectedExpiration(valueKey) / 1000; } catch (NoSuchElementException e) { return -1; } }
@Override @SuppressWarnings("unchecked") public V get(Object key) { ExpiringEntry<K, V> entry = getEntry(key); if (entry == null) { return load((K) key); } else if (ExpirationPolicy.ACCESSED.equals(entry.expirationPolicy.get())) resetEntry(entry, false); return entry.getValue(); }
/** * Creates a new instance of ExpiringMap with ExpirationPolicy.CREATED and an expiration of 60 seconds. */ @SuppressWarnings("unchecked") public static <K, V> ExpiringMap<K, V> create() { return new ExpiringMap<K, V>((Builder<K, V>) ExpiringMap.builder()); }
@Override public int size() { return ExpiringMap.this.size(); } };
@Override public void reorder(ExpiringEntry<K, V> value) { remove(value.key); value.resetExpiration(); put(value.key, value); }
/** * Builds and returns an expiring map. * * @param <K1> Key type * @param <V1> Value type */ @SuppressWarnings("unchecked") public <K1 extends K, V1 extends V> ExpiringMap<K1, V1> build() { return new ExpiringMap<K1, V1>((Builder<K1, V1>) this); }
@Override @SuppressWarnings("unchecked") public V get(Object key) { ExpiringEntry<K, V> entry = getEntry(key); if (entry == null) { return load((K) key); } else if (ExpirationPolicy.ACCESSED.equals(entry.expirationPolicy.get())) resetEntry(entry, false); return entry.getValue(); }
@Override public int size() { return ExpiringMap.this.size(); } };
@Override public void reorder(ExpiringEntry<K, V> value) { remove(value.key); value.resetExpiration(); put(value.key, value); }
@Override public int size() { return ExpiringMap.this.size(); } };