Package com.thoughtworks.paranamer
Class CachingParanamer
java.lang.Object
com.thoughtworks.paranamer.CachingParanamer
- All Implemented Interfaces:
Paranamer
- Direct Known Subclasses:
CachingParanamer.WithoutWeakReferences
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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
This implementation has a better concurrent design (ConcurrentHashMap) which has a better strategy to implement concurrency: segments instead of synchronized. -
Field Summary
FieldsFields inherited from interface com.thoughtworks.paranamer.Paranamer
EMPTY_NAMES
-
Constructor Summary
ConstructorsConstructorDescriptionUses a DefaultParanamer as the implementation it delegates to.CachingParanamer
(Paranamer delegate) Specify a Paranamer instance to delegates to. -
Method Summary
Modifier and TypeMethodDescriptionString[]
lookupParameterNames
(AccessibleObject methodOrConstructor) Lookup the parameter names of a given method.String[]
lookupParameterNames
(AccessibleObject methodOrCtor, boolean throwExceptionIfMissing) Lookup the parameter names of a given method.protected Map
<AccessibleObject, String[]>
-
Field Details
-
__PARANAMER_DATA
- See Also:
-
-
Constructor Details
-
CachingParanamer
public CachingParanamer()Uses a DefaultParanamer as the implementation it delegates to. -
CachingParanamer
Specify a Paranamer instance to delegates to.- Parameters:
delegate
- the paranamer instance to use
-
-
Method Details
-
makeMethodCache
-
lookupParameterNames
Description copied from interface:Paranamer
Lookup the parameter names of a given method.- Specified by:
lookupParameterNames
in interfaceParanamer
- Parameters:
methodOrConstructor
- theMethod
orConstructor
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 interfaceParanamer
- Parameters:
methodOrCtor
- theMethod
orConstructor
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.
-