View Javadoc

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   * @since v2.4.0
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  }