Class ReflectionUtils

java.lang.Object
com.gigaspaces.internal.utils.ReflectionUtils

public abstract class ReflectionUtils extends Object
Simple utility class for handling reflection exceptions. Only intended for internal use.
Author:
kimchy
  • Field Details

    • COPYABLE_FIELDS

      public static final ReflectionUtils.FieldFilter COPYABLE_FIELDS
      FieldFilter that matches all non-static, non-final fields.
  • Constructor Details

    • ReflectionUtils

      public ReflectionUtils()
  • Method Details

    • isPrimitive

      public static boolean isPrimitive(String typeName)
    • isPrimitiveAssignable

      public static boolean isPrimitiveAssignable(String typeName, Class<?> type)
    • isSpacePrimitive

      public static boolean isSpacePrimitive(String typeName)
    • isCommonJavaType

      public static boolean isCommonJavaType(String typeName)
    • isCommonJavaType

      public static boolean isCommonJavaType(Class<? extends Object> clazz)
    • handleReflectionException

      public static void handleReflectionException(Exception ex)
      Handle the given reflection exception. Should only be called if no checked exception is expected to be thrown by the target method.

      Throws the underlying RuntimeException or Error in case of an InvocationTargetException with such a root cause. Throws an IllegalStateException with an appropriate message else.

      Parameters:
      ex - the reflection exception to handle
    • handleInvocationTargetException

      public static void handleInvocationTargetException(InvocationTargetException ex)
      Handle the given invocation target exception. Should only be called if no checked exception is expected to be thrown by the target method.

      Throws the underlying RuntimeException or Error in case of such a root cause. Throws an IllegalStateException else.

      Parameters:
      ex - the invocation target exception to handle
    • invokeMethod

      public static Object invokeMethod(Method method, Object target)
      Invoke the specified Method against the supplied target object with no arguments The target object can be null when invoking a static Method.
      See Also:
    • invokeMethod

      public static Object invokeMethod(Method method, Object target, Object[] args)
      Invoke the specified Method against the supplied target object with the supplied arguments The target object can be null when invoking a static Method.

      Thrown exceptions are handled via a call to handleReflectionException(Exception).

      See Also:
    • setField

      public static void setField(Object target, String fieldName, Object value) throws IllegalAccessException
      Throws:
      IllegalAccessException
    • setField

      public static void setField(Object target, Field field, Object value) throws IllegalAccessException
      Throws:
      IllegalAccessException
    • getDeclaredFieldIncludeSuperTypes

      public static Field getDeclaredFieldIncludeSuperTypes(Class<?> type, String fieldName)
      Gets the declared field named 'fieldName' from the 'type' class. If 'type' does not declare such field, tries to get to get this field from 'type' parent class. This procedure continues until a matching field is found or until Object is reached in which case, null is returned.
    • getDeclaredField

      public static Field getDeclaredField(Class<?> type, String fieldName) throws NoSuchFieldException
      Gets the declared field named 'fieldName' from the 'type' class.
      Throws:
      NoSuchFieldException
    • isPublicStaticFinal

      public static boolean isPublicStaticFinal(Field field)
      Determine whether the given field is a "public static final" constant.
      Parameters:
      field - the field to check
    • makeAccessible

      public static void makeAccessible(Field field)
      Make the given field accessible, explicitly setting it accessible if necessary. The setAccessible(true) method is only called when actually necessary, to avoid unnecessary conflicts with a JVM SecurityManager (if active).
      Parameters:
      field - the field to make accessible
      See Also:
    • doWithMethods

      public static void doWithMethods(Class targetClass, ReflectionUtils.MethodCallback mc) throws IllegalArgumentException
      Perform the given callback operation on all matching methods of the given class and superclasses.

      The same named method occurring on subclass and superclass will appear twice, unless excluded by the MethodFilter

      Parameters:
      targetClass - class to start looking at
      mc - the callback to invoke for each method
      Throws:
      IllegalArgumentException
    • doWithMethods

      public static void doWithMethods(Class targetClass, ReflectionUtils.MethodCallback mc, ReflectionUtils.MethodFilter mf) throws IllegalArgumentException
      Perform the given callback operation on all matching methods of the given class and superclasses.

      The same named method occurring on subclass and superclass will appear twice, unless excluded by the MethodFilter

      Parameters:
      targetClass - class to start looking at
      mc - the callback to invoke for each method
      mf - the filter that determines the methods to apply the callback to
      Throws:
      IllegalArgumentException
    • getAllDeclaredMethods

      public static Method[] getAllDeclaredMethods(Class leafClass) throws IllegalArgumentException
      Get all declared methods on the leaf class and all superclasses. Leaf class methods are included first.
      Throws:
      IllegalArgumentException
    • doWithFields

      public static void doWithFields(Class targetClass, ReflectionUtils.FieldCallback fc) throws IllegalArgumentException
      Invoke the given callback on all private fields in the target class, going up the class hierarchy to get all declared fields.
      Parameters:
      targetClass - the target class to analyze
      fc - the callback to invoke for each field
      Throws:
      IllegalArgumentException
    • doWithFields

      public static void doWithFields(Class targetClass, ReflectionUtils.FieldCallback fc, ReflectionUtils.FieldFilter ff) throws IllegalArgumentException
      Invoke the given callback on all private fields in the target class, going up the class hierarchy to get all declared fields.
      Parameters:
      targetClass - the target class to analyze
      fc - the callback to invoke for each field
      ff - the filter that determines the fields to apply the callback to
      Throws:
      IllegalArgumentException
    • shallowCopyFieldState

      public static void shallowCopyFieldState(Object src, Object dest) throws IllegalArgumentException
      Given the source object and the destination, which must be the same class or a subclass, copy all fields, including inherited fields. Designed to work on objects with public no-arg constructors.
      Throws:
      IllegalArgumentException - if arguments are incompatible or either is null
    • isNumeric

      public static boolean isNumeric(Class type)

      Return true if the specified type is numeric.

      Parameters:
      type - Type to check