Class JavassistUtil


  • public final class JavassistUtil
    extends Object
    This util is for the happy path of CtClass methods if you don'l like it then don't use this method and catch your own exceptions
    Author:
    Andres Luuk
    • Constructor Summary

      Constructors 
      Constructor Description
      JavassistUtil()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void addLocalForParameter​(org.zeroturnaround.bundled.javassist.CtMethod ctMethod, int param, String name)
      Initializes a named local var from a param.
      static void addLocalForParameter​(org.zeroturnaround.bundled.javassist.CtMethod ctMethod, String paramClass, String name)
      Initializes a named local var from a param.
      static boolean callsMethod​(org.zeroturnaround.bundled.javassist.CtMethod ctMethod, String calledMethodName)  
      static void createMethodStopWatch​(org.zeroturnaround.bundled.javassist.CtMethod method, String logPrefix, String stopWatchId)
      Wraps method in stopwatch.
      static org.zeroturnaround.bundled.javassist.CtConstructor getDeclaredConstructor​(org.zeroturnaround.bundled.javassist.ClassPool cp, String klazz, String... param)  
      static org.zeroturnaround.bundled.javassist.CtConstructor getDeclaredConstructor​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String... param)  
      static org.zeroturnaround.bundled.javassist.CtField getDeclaredField​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String fieldName)  
      static org.zeroturnaround.bundled.javassist.CtMethod getDeclaredMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName)
      Finds a declared method by name .
      static org.zeroturnaround.bundled.javassist.CtMethod getDeclaredMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName, Class<?>... paramClasses)
      Finds a declared method by name and params.
      static org.zeroturnaround.bundled.javassist.CtMethod getDeclaredMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName, String... paramClasses)
      Finds a declared method by name and params.
      static org.zeroturnaround.bundled.javassist.CtMethod getDeclaredMethodByDescriptor​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName, String descriptorPrefix)
      Finds a declared method with the given name and descriptor prefix.
      static org.zeroturnaround.bundled.javassist.CtClass getFirstExistingClass​(org.zeroturnaround.bundled.javassist.ClassPool cp, String... classNames)
      Returns the first class out of the given ones that is found in the classpool or null if none is found.
      static org.zeroturnaround.bundled.javassist.CtField getFirstExistingField​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String... fieldNames)  
      static org.zeroturnaround.bundled.javassist.CtMethod getFirstExistingMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String... methodNames)  
      static org.zeroturnaround.bundled.javassist.CtMethod getFirstExistingMethod​(org.zeroturnaround.bundled.javassist.CtMethod first, org.zeroturnaround.bundled.javassist.ClassPool cp, org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName, Class<?>... param)  
      static org.zeroturnaround.bundled.javassist.CtMethod getFirstExistingMethod​(org.zeroturnaround.bundled.javassist.CtMethod first, org.zeroturnaround.bundled.javassist.ClassPool cp, org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName, String... param)  
      static String getReturnTypeFromSignature​(String signature)  
      static boolean hasClass​(org.zeroturnaround.bundled.javassist.ClassPool cp, String className)  
      static boolean hasDeclaredConstructor​(org.zeroturnaround.bundled.javassist.ClassPool cp, String klazz, String... param)  
      static boolean hasDeclaredField​(org.zeroturnaround.bundled.javassist.ClassPool cp, String klazz, String fieldName)  
      static boolean hasDeclaredField​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String fieldName)  
      static boolean hasDeclaredMethod​(org.zeroturnaround.bundled.javassist.ClassPool cp, String klazz, String methodName)  
      static boolean hasDeclaredMethod​(org.zeroturnaround.bundled.javassist.ClassPool cp, String klazz, String methodName, String[] param)  
      static boolean hasDeclaredMethod​(org.zeroturnaround.bundled.javassist.ClassPool cp, org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName, String[] param)  
      static boolean hasDeclaredMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName)  
      static boolean hasMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName)  
      static boolean hasMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String methodName, String methodDesc)  
      static boolean hasMethodOnField​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String fieldName, String methodName, String... paramClasses)  
      static boolean implementsInterface​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String ifaceName)  
      static void importSignatureUsedPackage​(org.zeroturnaround.bundled.javassist.ClassPool cp, org.zeroturnaround.bundled.javassist.CtBehavior ctTarget)  
      static void importUsedPackage​(org.zeroturnaround.bundled.javassist.ClassPool cp, org.zeroturnaround.bundled.javassist.CtClass ctClass)  
      static void init()  
      static boolean isFieldVisible​(org.zeroturnaround.bundled.javassist.CtClass user, String name)
      Checks if field with given name is visible from user
      static boolean isMethodVisible​(org.zeroturnaround.bundled.javassist.CtClass caller, String name)
      Checks if method with given name is visible from caller
      static void makeFieldPublic​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String field)  
      static void removeFinalModifer​(org.zeroturnaround.bundled.javassist.CtClass ctClass, String field)  
      static org.zeroturnaround.bundled.javassist.expr.ExprEditor strictMethodCallReplacer​(String methodName, String replaceStatement)  
    • Constructor Detail

      • JavassistUtil

        public JavassistUtil()
    • Method Detail

      • init

        public static void init()
      • hasClass

        public static boolean hasClass​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                       String className)
      • hasDeclaredMethod

        public static boolean hasDeclaredMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                String methodName)
      • hasDeclaredMethod

        public static boolean hasDeclaredMethod​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                                org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                String methodName,
                                                String[] param)
      • hasDeclaredMethod

        public static boolean hasDeclaredMethod​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                                String klazz,
                                                String methodName)
      • hasDeclaredMethod

        public static boolean hasDeclaredMethod​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                                String klazz,
                                                String methodName,
                                                String[] param)
      • hasDeclaredConstructor

        public static boolean hasDeclaredConstructor​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                                     String klazz,
                                                     String... param)
      • getDeclaredConstructor

        public static org.zeroturnaround.bundled.javassist.CtConstructor getDeclaredConstructor​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                                                                                String klazz,
                                                                                                String... param)
        Returns:
        CtConstructor or null if not found
      • getDeclaredConstructor

        public static org.zeroturnaround.bundled.javassist.CtConstructor getDeclaredConstructor​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                                String... param)
        Returns:
        CtConstructor or null if not found
      • hasMethod

        public static boolean hasMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                        String methodName)
      • hasMethod

        public static boolean hasMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                        String methodName,
                                        String methodDesc)
      • getFirstExistingClass

        public static org.zeroturnaround.bundled.javassist.CtClass getFirstExistingClass​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                                                                         String... classNames)
        Returns the first class out of the given ones that is found in the classpool or null if none is found.
      • getFirstExistingField

        public static org.zeroturnaround.bundled.javassist.CtField getFirstExistingField​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                         String... fieldNames)
      • getFirstExistingMethod

        public static org.zeroturnaround.bundled.javassist.CtMethod getFirstExistingMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                           String... methodNames)
      • getFirstExistingMethod

        public static org.zeroturnaround.bundled.javassist.CtMethod getFirstExistingMethod​(org.zeroturnaround.bundled.javassist.CtMethod first,
                                                                                           org.zeroturnaround.bundled.javassist.ClassPool cp,
                                                                                           org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                           String methodName,
                                                                                           Class<?>... param)
      • getFirstExistingMethod

        public static org.zeroturnaround.bundled.javassist.CtMethod getFirstExistingMethod​(org.zeroturnaround.bundled.javassist.CtMethod first,
                                                                                           org.zeroturnaround.bundled.javassist.ClassPool cp,
                                                                                           org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                           String methodName,
                                                                                           String... param)
      • hasDeclaredField

        public static boolean hasDeclaredField​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                               String fieldName)
      • hasDeclaredField

        public static boolean hasDeclaredField​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                               String klazz,
                                               String fieldName)
      • getDeclaredField

        public static org.zeroturnaround.bundled.javassist.CtField getDeclaredField​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                    String fieldName)
      • hasMethodOnField

        public static boolean hasMethodOnField​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                               String fieldName,
                                               String methodName,
                                               String... paramClasses)
      • implementsInterface

        public static boolean implementsInterface​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                  String ifaceName)
                                           throws org.zeroturnaround.bundled.javassist.NotFoundException
        Throws:
        org.zeroturnaround.bundled.javassist.NotFoundException
      • getDeclaredMethod

        public static org.zeroturnaround.bundled.javassist.CtMethod getDeclaredMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                      String methodName,
                                                                                      String... paramClasses)
        Finds a declared method by name and params.
        Returns:
        CtMethod or null if method or parameter class not found
      • getDeclaredMethodByDescriptor

        public static org.zeroturnaround.bundled.javassist.CtMethod getDeclaredMethodByDescriptor​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                                  String methodName,
                                                                                                  String descriptorPrefix)
                                                                                           throws org.zeroturnaround.bundled.javassist.NotFoundException
        Finds a declared method with the given name and descriptor prefix.
        Throws:
        org.zeroturnaround.bundled.javassist.NotFoundException
      • getDeclaredMethod

        public static org.zeroturnaround.bundled.javassist.CtMethod getDeclaredMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                      String methodName)
        Finds a declared method by name .
        Returns:
        CtMethod or null if method was not found
      • getDeclaredMethod

        public static org.zeroturnaround.bundled.javassist.CtMethod getDeclaredMethod​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                                                                      String methodName,
                                                                                      Class<?>... paramClasses)
        Finds a declared method by name and params.
        Returns:
        CtMethod or null if method or parameter class not found
      • strictMethodCallReplacer

        public static org.zeroturnaround.bundled.javassist.expr.ExprEditor strictMethodCallReplacer​(String methodName,
                                                                                                    String replaceStatement)
      • isMethodVisible

        public static boolean isMethodVisible​(org.zeroturnaround.bundled.javassist.CtClass caller,
                                              String name)
        Checks if method with given name is visible from caller
      • isFieldVisible

        public static boolean isFieldVisible​(org.zeroturnaround.bundled.javassist.CtClass user,
                                             String name)
        Checks if field with given name is visible from user
      • removeFinalModifer

        public static void removeFinalModifer​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                              String field)
      • makeFieldPublic

        public static void makeFieldPublic​(org.zeroturnaround.bundled.javassist.CtClass ctClass,
                                           String field)
      • addLocalForParameter

        public static void addLocalForParameter​(org.zeroturnaround.bundled.javassist.CtMethod ctMethod,
                                                int param,
                                                String name)
                                         throws org.zeroturnaround.bundled.javassist.NotFoundException,
                                                org.zeroturnaround.bundled.javassist.CannotCompileException
        Initializes a named local var from a param. Type is copied.
        Parameters:
        param - is 1-based as in javassist $1, $2..
        Throws:
        org.zeroturnaround.bundled.javassist.NotFoundException
        org.zeroturnaround.bundled.javassist.CannotCompileException
      • addLocalForParameter

        public static void addLocalForParameter​(org.zeroturnaround.bundled.javassist.CtMethod ctMethod,
                                                String paramClass,
                                                String name)
                                         throws org.zeroturnaround.bundled.javassist.NotFoundException,
                                                org.zeroturnaround.bundled.javassist.CannotCompileException
        Initializes a named local var from a param. Type is copied.
        Parameters:
        paramClass - the first parameter with that class is used as value
        Throws:
        org.zeroturnaround.bundled.javassist.NotFoundException
        org.zeroturnaround.bundled.javassist.CannotCompileException
      • createMethodStopWatch

        public static void createMethodStopWatch​(org.zeroturnaround.bundled.javassist.CtMethod method,
                                                 String logPrefix,
                                                 String stopWatchId)
                                          throws org.zeroturnaround.bundled.javassist.CannotCompileException,
                                                 org.zeroturnaround.bundled.javassist.NotFoundException
        Wraps method in stopwatch.
        Throws:
        org.zeroturnaround.bundled.javassist.CannotCompileException
        org.zeroturnaround.bundled.javassist.NotFoundException
      • callsMethod

        public static boolean callsMethod​(org.zeroturnaround.bundled.javassist.CtMethod ctMethod,
                                          String calledMethodName)
                                   throws org.zeroturnaround.bundled.javassist.CannotCompileException
        Throws:
        org.zeroturnaround.bundled.javassist.CannotCompileException
      • importUsedPackage

        public static void importUsedPackage​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                             org.zeroturnaround.bundled.javassist.CtClass ctClass)
      • importSignatureUsedPackage

        public static void importSignatureUsedPackage​(org.zeroturnaround.bundled.javassist.ClassPool cp,
                                                      org.zeroturnaround.bundled.javassist.CtBehavior ctTarget)
                                               throws org.zeroturnaround.bundled.javassist.NotFoundException
        Throws:
        org.zeroturnaround.bundled.javassist.NotFoundException
      • getReturnTypeFromSignature

        public static String getReturnTypeFromSignature​(String signature)