Class IntrospectorCacheImpl

java.lang.Object
org.apache.velocity.util.introspection.IntrospectorCacheImpl
All Implemented Interfaces:
IntrospectorCache

public final class IntrospectorCacheImpl extends Object implements IntrospectorCache
This is the internal introspector cache implementation.
Since:
1.5
Version:
$Id: IntrospectorCacheImpl.java 898032 2010-01-11 19:51:03Z nbubna $
  • Field Details

    • CACHEDUMP_MSG

      public static final String CACHEDUMP_MSG
      define a public string so that it can be looked for if interested
      See Also:
    • log

      private final Log log
      Class logger
    • classMapCache

      private final Map classMapCache
      Holds the method maps for the classes we know about. Map: Class --> ClassMap object.
    • classNameCache

      private final Set classNameCache
      Keep the names of the classes in another map. This is needed for a multi-classloader environment where it is possible to have Class 'Foo' loaded by a classloader and then get asked to introspect on 'Foo' from another class loader. While these two Class objects have the same name, a classMethodMaps.get(Foo.class) will return null. For that case, we keep a set of class names to recognize this case.
  • Constructor Details

    • IntrospectorCacheImpl

      public IntrospectorCacheImpl(Log log)
      C'tor
  • Method Details

    • clear

      public void clear()
      Clears the internal cache.
      Specified by:
      clear in interface IntrospectorCache
    • get

      public ClassMap get(Class c)
      Lookup a given Class object in the cache. If it does not exist, check whether this is due to a class change and purge the caches eventually.
      Specified by:
      get in interface IntrospectorCache
      Parameters:
      c - The class to look up.
      Returns:
      A ClassMap object or null if it does not exist in the cache.
    • put

      public ClassMap put(Class c)
      Creates a class map for specific class and registers it in the cache. Also adds the qualified name to the name->class map for later Classloader change detection.
      Specified by:
      put in interface IntrospectorCache
      Parameters:
      c - The class for which the class map gets generated.
      Returns:
      A ClassMap object.