com.vaadin.flow.internal.

Class ReflectionCache<C,T>

java.lang.Object
com.vaadin.flow.internal.ReflectionCache<C,T>

Type Parameters:

C - the class types that are used as the cache keys

T - the cached value type

public class ReflectionCache<C,T> extends Object

A thread-safe cache for the result of doing some reflection lookup based on a class. Cached values never expire since it's assumed that the there is a finite number of classes for which reflection results are used.

For internal use only. May be renamed or removed in a future release.

Since:

1.0

Author:

Vaadin Ltd

  • Constructor Details

    • ReflectionCache

      public ReflectionCache(SerializableFunction<Class<C>,T> valueProvider)

      Creates a new reflection cache with the given value provider. The value provider will be used to produce a new cached value whenever there is a cache miss. It will be run in a context where no CurrentInstance is available to prevent accidentally caching values that are computed differently depending on external circumstances.

      Parameters:

      valueProvider - a function that computes the cached value for a class, not null

  • Method Details

    • get

      public T get(Class<? extends C> type)

      Gets a cached value. If this cache does not contain a value for the key, the value is computed using the configured value provider and the cache is populated with the new value.

      Parameters:

      type - the type for which to get reflection results

      Returns:

      the reflection results

    • contains

      public boolean contains(Class<? extends C> type)

      Checks whether this cache contains an entry for the given type.

      Parameters:

      type - the type to check for

      Returns:

      true if there is a mapping for the type, false if there is no mapping

    • clear

      public void clear()

      Removes all mappings from this cache.

    • addClearAllAction

      public static Registration addClearAllAction(Runnable action)

      Adds an action that will be run when all reflection caches are cleared.

      The actions are held with a weak reference, which typically means that the action will be ignored if the returned registration is garbage collected.

      Parameters:

      action - the action to run

      Returns:

      a registration for removing the action

      See Also:

    • clearAll

      public static void clearAll()

      Clears all mappings from all reflection caches and related resources.