play.classloading.enhancers

## Class Enhancer

- java.lang.Object
- - play.classloading.enhancers.Enhancer

Direct Known Subclasses:
  ContinuationEnhancer, ControllersEnhancer, JPAEnhancer, LocalvariablesNamesEnhancer, MailerEnhancer, PropertiesEnhancer, SigEnhancer

    public abstract class Enhancer
    extends java.lang.Object

Enhancer support

### Nested Class Summary

Nested Classes
`static class` `Enhancer.ApplicationClassesClasspath` Dumb classpath implementation for javassist hacking

### Field Summary

Fields
`protected javassist.ClassPool` `classPool`

### Constructor Summary

Constructors
Constructor and Description
`Enhancer()`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`protected static void` `createAnnotation(javassist.bytecode.AnnotationsAttribute attribute, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)` Create a new annotation to be dynamically inserted in the byte code.
`protected static void` `createAnnotation(javassist.bytecode.AnnotationsAttribute attribute, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType, java.util.Map<java.lang.String,javassist.bytecode.annotation.MemberValue> members)` Create a new annotation to be dynamically inserted in the byte code.
`abstract void` `enhanceThisClass(ApplicationClasses.ApplicationClass applicationClass)` The magic happen here...
`protected static javassist.bytecode.AnnotationsAttribute` `getAnnotations(javassist.CtClass ctClass)` Retrieve all class annotations.
`protected static javassist.bytecode.AnnotationsAttribute` `getAnnotations(javassist.CtField ctField)` Retrieve all field annotations.
`protected static javassist.bytecode.AnnotationsAttribute` `getAnnotations(javassist.CtMethod ctMethod)` Retrieve all method annotations.
`protected boolean` `hasAnnotation(javassist.CtClass ctClass, java.lang.String annotation)` Test if a class has the provided annotation
`protected boolean` `hasAnnotation(javassist.CtField ctField, java.lang.String annotation)` Test if a field has the provided annotation
`protected boolean` `hasAnnotation(javassist.CtMethod ctMethod, java.lang.String annotation)` Test if a method has the provided annotation
`javassist.CtClass` `makeClass(ApplicationClasses.ApplicationClass applicationClass)` Construct a javassist CtClass from an application class.
`static javassist.ClassPool` `newClassPool()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### classPool

    protected javassist.ClassPool classPool

### Constructor Detail

#### Enhancer

    public Enhancer()

### Method Detail

#### newClassPool

    public static javassist.ClassPool newClassPool()

#### makeClass

    public javassist.CtClass makeClass(ApplicationClasses.ApplicationClass applicationClass)
                                throws java.io.IOException

Construct a javassist CtClass from an application class.

Parameters:
  `applicationClass` - The application class to construct
Returns:
  The javassist CtClass construct from the application class
Throws:
  `java.io.IOException` - if problem occurred during construction

#### enhanceThisClass

    public abstract void enhanceThisClass(ApplicationClasses.ApplicationClass applicationClass)
                                   throws java.lang.Exception

The magic happen here...

Parameters:
  `applicationClass` - The application class to construct
Throws:
  `java.lang.Exception` - if problem occurred during construction

#### hasAnnotation

    protected boolean hasAnnotation(javassist.CtClass ctClass,
                                    java.lang.String annotation)
                             throws java.lang.ClassNotFoundException

Test if a class has the provided annotation

Parameters:
  `ctClass` - the javassist class representation
  `annotation` - fully qualified name of the annotation class eg."javax.persistence.Entity"
Returns:
  true if class has the annotation
Throws:
  `java.lang.ClassNotFoundException` - if class not found

#### hasAnnotation

    protected boolean hasAnnotation(javassist.CtField ctField,
                                    java.lang.String annotation)
                             throws java.lang.ClassNotFoundException

Test if a field has the provided annotation

Parameters:
  `ctField` - the javassist field representation
  `annotation` - fully qualified name of the annotation class eg."javax.persistence.Entity"
Returns:
  true if field has the annotation
Throws:
  `java.lang.ClassNotFoundException` - if class not found

#### hasAnnotation

    protected boolean hasAnnotation(javassist.CtMethod ctMethod,
                                    java.lang.String annotation)
                             throws java.lang.ClassNotFoundException

Test if a method has the provided annotation

Parameters:
  `ctMethod` - the javassist method representation
  `annotation` - fully qualified name of the annotation class eg."javax.persistence.Entity"
Returns:
  true if field has the annotation
Throws:
  `java.lang.ClassNotFoundException` - if class not found

#### createAnnotation

    protected static void createAnnotation(javassist.bytecode.AnnotationsAttribute attribute,
                                           java.lang.Class<? extends java.lang.annotation.Annotation> annotationType,
                                           java.util.Map<java.lang.String,javassist.bytecode.annotation.MemberValue> members)

Create a new annotation to be dynamically inserted in the byte code.

Parameters:
  `attribute` - annotation attribute
  `annotationType` - Annotation
  `members` - Member of the annotation

#### createAnnotation

    protected static void createAnnotation(javassist.bytecode.AnnotationsAttribute attribute,
                                           java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)

Create a new annotation to be dynamically inserted in the byte code.

Parameters:
  `attribute` - annotation attribute
  `annotationType` - Annotation

#### getAnnotations

    protected static javassist.bytecode.AnnotationsAttribute getAnnotations(javassist.CtClass ctClass)

Retrieve all class annotations.

Parameters:
  `ctClass` - The given class
Returns:
  All class annotations

#### getAnnotations

    protected static javassist.bytecode.AnnotationsAttribute getAnnotations(javassist.CtField ctField)

Retrieve all field annotations.

Parameters:
  `ctField` - The given field
Returns:
  All field annotations.

#### getAnnotations

    protected static javassist.bytecode.AnnotationsAttribute getAnnotations(javassist.CtMethod ctMethod)

Retrieve all method annotations.

Parameters:
  `ctMethod` - The given methods
Returns:
  all method annotations.