org.logicalcobwebs.cglib.core
Class DefaultNamingPolicy

java.lang.Object
  extended by org.logicalcobwebs.cglib.core.DefaultNamingPolicy
All Implemented Interfaces:
NamingPolicy

public class DefaultNamingPolicy
extends java.lang.Object
implements NamingPolicy

The default policy used by AbstractClassGenerator. Generates names such as

org.logicalcobwebs.cglib.Foo$$EnhancerByCGLIB$$38272841

This is composed of a prefix based on the name of the superclass, a fixed string incorporating the CGLIB class responsible for generation, and a hashcode derived from the parameters used to create the object. If the same name has been previously been used in the same ClassLoader, a suffix is added to ensure uniqueness.


Field Summary
static DefaultNamingPolicy INSTANCE
           
 
Constructor Summary
DefaultNamingPolicy()
           
 
Method Summary
 java.lang.String getClassName(java.lang.String prefix, java.lang.String source, java.lang.Object key, Predicate names)
          Choose a name for a generated class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INSTANCE

public static final DefaultNamingPolicy INSTANCE
Constructor Detail

DefaultNamingPolicy

public DefaultNamingPolicy()
Method Detail

getClassName

public java.lang.String getClassName(java.lang.String prefix,
                                     java.lang.String source,
                                     java.lang.Object key,
                                     Predicate names)
Description copied from interface: NamingPolicy
Choose a name for a generated class.

Specified by:
getClassName in interface NamingPolicy
Parameters:
prefix - a dotted-name chosen by the generating class (possibly to put the generated class in a particular package)
source - the fully-qualified class name of the generating class (for example "org.logicalcobwebs.cglib.Enhancer")
key - A key object representing the state of the parameters; for caching to work properly, equal keys should result in the same generated class name. The default policy incorporates key.hashCode() into the class name.
names - a predicate that returns true if the given classname has already been used in the same ClassLoader.
Returns:
the fully-qualified class name