Class Enhancer

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected javassist.ClassPool classPool  
    • Constructor Summary

      Constructors 
      Constructor Description
      Enhancer()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      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.