1 package com.atlassian.cache.memory;
2
3 import java.util.SortedMap;
4
5 import com.atlassian.cache.CacheStatisticsKey;
6 import com.atlassian.util.concurrent.Supplier;
7
8 import com.google.common.cache.Cache;
9 import com.google.common.collect.ImmutableSortedMap;
10
11 import static com.atlassian.cache.CacheStatisticsKey.EVICTION_COUNT;
12 import static com.atlassian.cache.CacheStatisticsKey.HIT_COUNT;
13 import static com.atlassian.cache.CacheStatisticsKey.MISS_COUNT;
14 import static com.atlassian.cache.CacheStatisticsKey.SIZE;
15 import static com.atlassian.util.concurrent.Suppliers.memoize;
16
17
18
19
20 public class DelegatingCacheStatistics
21 {
22 public static SortedMap<CacheStatisticsKey,Supplier<Long>> toStatistics(Cache<?, ?> internalCache)
23 {
24 return ImmutableSortedMap.<CacheStatisticsKey,Supplier<Long>>orderedBy(CacheStatisticsKey.SORT_BY_LABEL)
25 .put(SIZE, memoize(internalCache.size()))
26 .put(HIT_COUNT, memoize(internalCache.stats().hitCount()))
27 .put(MISS_COUNT, memoize(internalCache.stats().missCount()))
28 .put(EVICTION_COUNT, memoize(internalCache.stats().evictionCount()))
29 .build();
30 }
31 }