Class ReflectionUtil

java.lang.Object
org.summerboot.jexpress.util.ReflectionUtil

public class ReflectionUtil extends Object
Author:
Changski Tie Zheng Zhang 张铁铮, 魏泽北, 杜旺财, 杜富贵
  • Field Details

    • PluginClasses

      protected static final Set<Class<?>> PluginClasses
    • DEFAULT_ARG_TYPES

      protected static final Type[] DEFAULT_ARG_TYPES
  • Constructor Details

    • ReflectionUtil

      public ReflectionUtil()
  • Method Details

    • setPluginClasses

      public static void setPluginClasses(Set<Class<?>> pluginClasses)
    • getAllImplementationsByInterface

      public static <T> Set<Class<? extends T>> getAllImplementationsByInterface(Class<T> interfaceClass, String... rootPackageNames)
      Type Parameters:
      T -
      Parameters:
      interfaceClass -
      rootPackageNames -
      Returns:
    • getAllImplementationsByInterface

      public static <T> Set<Class<? extends T>> getAllImplementationsByInterface(Class<T> interfaceClass, Collection<String> rootPackageNames)
    • getAllImplementationsByAnnotation

      public static Set<Class<?>> getAllImplementationsByAnnotation(Class<? extends Annotation> annotation, boolean honorInherited, String... rootPackageNames)
      Parameters:
      annotation -
      honorInherited -
      rootPackageNames -
      Returns:
    • getAllImplementationsByAnnotation

      public static Set<Class<?>> getAllImplementationsByAnnotation(Class<? extends Annotation> annotation, boolean honorInherited, Collection<String> rootPackageNames)
    • getAllInterfaces

      public static List<Class> getAllInterfaces(Class targetClass, boolean includeSuperClasses)
      Parameters:
      targetClass -
      includeSuperClasses -
      Returns:
      all interfaces of the targetClass
    • getAllSuperClasses

      public static List<Class> getAllSuperClasses(Class targetClass)
      Parameters:
      targetClass -
      Returns:
    • loadField

      public static void loadField(Object instance, Field field, String value, boolean autoDecrypt, boolean isEmailRecipients, String collectionDelimiter) throws IllegalAccessException
      Load config settings with @Config, supported Java types:
      
       1. T, K: enum, String, boolean/Boolean, byte/Byte, char/short/Short, int/Integer,
       long/Long, float/Float, double/Double, BigDecimal, URI, URL, Path, File
       2. <T>[] array
      
       3. Immutable Set, Immutable SortedSet<T>
      
       4. Immutable List<T>
      
       5. Immutable Map<T, K>
      
       6. KeyManagerFactory
      
       7. TrustManagerFactory
       
      Parameters:
      instance -
      field -
      value -
      autoDecrypt -
      isEmailRecipients -
      collectionDelimiter -
      Throws:
      IllegalAccessException
    • toJavaType

      public static Object toJavaType(Class targetClass, Type genericType, String value, boolean autoDecrypt, boolean isEmailRecipients, EnumConvert.To enumConvert, String collectionDelimiter) throws IllegalAccessException
      Throws:
      IllegalAccessException
    • toStandardJavaType

      public static Object toStandardJavaType(String value, Class targetClass, boolean autoDecrypt, boolean isEmailRecipients, EnumConvert.To enumConvert)
      T: enum, String, boolean/Boolean, byte/Byte, short/Short, int/Integer, long/Long, float/Float, double/Double, BigDecimal, URI, URL, Path, File
      Parameters:
      value -
      targetClass -
      autoDecrypt - auto decrypt value in ENC() format if true
      isEmailRecipients -
      enumConvert -
      Returns:
    • loadFields

      public static void loadFields(Class targetClass, Class fieldClass, Map results, boolean includeClassName) throws IllegalArgumentException, IllegalAccessException
      Throws:
      IllegalArgumentException
      IllegalAccessException
    • loadFields

      public static String loadFields(Class targetClass, Class fieldClass) throws IllegalArgumentException, IllegalAccessException, com.fasterxml.jackson.core.JsonProcessingException
      Throws:
      IllegalArgumentException
      IllegalAccessException
      com.fasterxml.jackson.core.JsonProcessingException
    • getRootPackageName

      public static String getRootPackageName(Class callerClass, int level)
    • getDeclaredAndSuperClassesFields

      public static List<Field> getDeclaredAndSuperClassesFields(Class targetClass)
    • getDeclaredAndSuperClassesFields

      public static List<Field> getDeclaredAndSuperClassesFields(Class targetClass, boolean isParentFirst)
    • getDeclaredAndSuperClassesMethods

      public static List<Method> getDeclaredAndSuperClassesMethods(Class targetClass, boolean includOverriddenSuperMethod)
    • getMethod

      public static Method getMethod(Class targetClass, String methodName, Class[] cArg)