Class CachingParanamer

java.lang.Object
com.thoughtworks.paranamer.CachingParanamer
All Implemented Interfaces:
Paranamer
Direct Known Subclasses:
CachingParanamer.WithoutWeakReferences

public class CachingParanamer extends Object implements Paranamer
Implementation of Paranamer which delegate to another Paranamer implementation, adding caching functionality to speed up usage. It also uses a WeakHashmap as an implementation detail (wrapped in Collections.synchronizedMap(..)), to allow large usages to garbage collect things as big as whole classloaders (after working through all the refs that originated from that classloader). Tomcat and other 'containers' do this during hot application deployment, undeployment and most importantly for Paranamer redeployment. Basically, this will allow a perm-gen usage keeps growing scenario.
  • Field Details

  • Constructor Details

    • CachingParanamer

      public CachingParanamer()
      Uses a DefaultParanamer as the implementation it delegates to.
    • CachingParanamer

      public CachingParanamer(Paranamer delegate)
      Specify a Paranamer instance to delegates to.
      Parameters:
      delegate - the paranamer instance to use
  • Method Details

    • makeMethodCache

      protected Map<AccessibleObject,String[]> makeMethodCache()
    • lookupParameterNames

      public String[] lookupParameterNames(AccessibleObject methodOrConstructor)
      Description copied from interface: Paranamer
      Lookup the parameter names of a given method.
      Specified by:
      lookupParameterNames in interface Paranamer
      Parameters:
      methodOrConstructor - the Method or Constructor for which the parameter names are looked up.
      Returns:
      A list of the parameter names.
    • lookupParameterNames

      public String[] lookupParameterNames(AccessibleObject methodOrCtor, boolean throwExceptionIfMissing)
      Description copied from interface: Paranamer
      Lookup the parameter names of a given method.
      Specified by:
      lookupParameterNames in interface Paranamer
      Parameters:
      methodOrCtor - the Method or Constructor for which the parameter names are looked up.
      throwExceptionIfMissing - whether to throw an exception if no Paranamer data found (versus return null).
      Returns:
      A list of the parameter names.