public class

CompositeKeyCache

extends Object
java.lang.Object
   ↳ com.atlassian.jira.util.cache.CompositeKeyCache<R, S, T>

Class Overview

Cache of (R, S) -> T. Designed to be used for general mappings of things to a field in an index.

Usage:

 CompositeKeyCache<IndexReader, String, Collection<String>[]> cache = CompositeKeyCache.createWeakFirstKeySoftValueCache();
 cache.get(reader, fieldName,
     new Supplier<Collection<String>[]>()
     {
         public Collection<String>[] get()
         {
             return doStuff(reader, fieldName);
         }
     }
 );
 

Summary

Public Methods
@Deprecated static <R, S, T> CompositeKeyCache<R, S, T> createWeakFirstKeySoftValueCache()
A useful way to build the cche for testing as instrumentation requires the ComponentAccessor to be initialised.
static <R, S, T> CompositeKeyCache<R, S, T> createWeakFirstKeySoftValueCache(String cacheName)
This cache caches the first (R) reference weakly, the second (S) reference strongly and the value (T) reference softly.
T get(R one, S two, Supplier<T> supplier)
Get the thing mapped to this key for the specified reader.
[Expand]
Inherited Methods
From class java.lang.Object

Public Methods

@Deprecated public static CompositeKeyCache<R, S, T> createWeakFirstKeySoftValueCache ()

A useful way to build the cche for testing as instrumentation requires the ComponentAccessor to be initialised.

public static CompositeKeyCache<R, S, T> createWeakFirstKeySoftValueCache (String cacheName)

This cache caches the first (R) reference weakly, the second (S) reference strongly and the value (T) reference softly. This is specifically designed for use with Lucene where the IndexReader is being recycled regularly (the R) and the terms (T) may be softly referenced.

Parameters
cacheName A Name to use when we instrument an instance of this cache. If null the cache will not be instrumented
Returns
  • a cache with weak references to the first key and soft references to the value.

public T get (R one, S two, Supplier<T> supplier)

Get the thing mapped to this key for the specified reader.

Parameters
one the first one
two the second one
supplier to generate the value if not already there, only called if not already cached.
Returns
  • the cached value