Class 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.
    Author:
    Paul Hammant, Mauro Talevi
    • Constructor Detail

      • 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 Detail

      • 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.