Class MetaClassHelper


  • public class MetaClassHelper
    extends java.lang.Object
    • Constructor Summary

      Constructors 
      Constructor Description
      MetaClassHelper()  
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static boolean accessibleToConstructor​(java.lang.Class at, java.lang.reflect.Constructor constructor)  
      static java.lang.Object asPrimitiveArray​(java.util.List list, java.lang.Class parameterType)  
      static java.lang.Object[] asWrapperArray​(java.lang.Object parameters, java.lang.Class componentType)  
      static long calculateParameterDistance​(java.lang.Class[] arguments, ParameterTypes pt)  
      static java.lang.String capitalize​(java.lang.String property)
      Deprecated.
      Use BeanUtils.capitalize instead
      static java.lang.Class[] castArgumentsToClassArray​(java.lang.Object[] argTypes)  
      static java.lang.Object chooseEmptyMethodParams​(FastArray methods)  
      static java.lang.Object chooseMostGeneralMethodWith1NullParam​(FastArray methods)
      Deprecated. 
      static boolean containsMatchingMethod​(java.util.List list, MetaMethod method)  
      static java.lang.String convertPropertyName​(java.lang.String prop)
      Converts a String into a standard property name.
      static java.lang.Class[] convertToTypeArray​(java.lang.Object[] args)
      param instance array to the type array
      static GroovyRuntimeException createExceptionText​(java.lang.String init, MetaMethod method, java.lang.Object object, java.lang.Object[] args, java.lang.Throwable reason, boolean setReason)  
      static void doSetMetaClass​(java.lang.Object self, MetaClass mc)
      Sets the meta class for an object, by delegating to the appropriate DefaultGroovyMethods helper method.
      protected static java.lang.String getClassName​(java.lang.Object object)  
      static Closure getMethodPointer​(java.lang.Object object, java.lang.String methodName)
      Returns a callable object for the given method name on the object.
      static boolean isAssignableFrom​(java.lang.Class classToTransformTo, java.lang.Class classToTransformFrom)  
      static boolean isGenericSetMethod​(MetaMethod method)  
      protected static boolean isSuperclass​(java.lang.Class clazz, java.lang.Class superclass)  
      static void logMethodCall​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments)  
      static java.lang.Object makeArray​(java.lang.Object obj, java.lang.Class secondary, int length)  
      static java.lang.Object makeCommonArray​(java.lang.Object[] arguments, int offset, java.lang.Class fallback)  
      protected static java.lang.String normalizedValue​(java.lang.Object argument)  
      static boolean parametersAreCompatible​(java.lang.Class[] arguments, java.lang.Class[] parameters)  
      static boolean sameClass​(java.lang.Class[] params, java.lang.Object arg)  
      static boolean sameClasses​(java.lang.Class[] params)  
      static boolean sameClasses​(java.lang.Class[] params, java.lang.Object arg1)  
      static boolean sameClasses​(java.lang.Class[] params, java.lang.Object[] arguments)  
      static boolean sameClasses​(java.lang.Class[] params, java.lang.Object[] arguments, boolean weakNullCheck)  
      static boolean sameClasses​(java.lang.Class[] params, java.lang.Object arg1, java.lang.Object arg2)  
      static boolean sameClasses​(java.lang.Class[] params, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)  
      static boolean sameClasses​(java.lang.Class[] params, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3, java.lang.Object arg4)  
      protected static java.lang.String shortName​(java.lang.Object object)  
      static void unwrap​(java.lang.Object[] arguments)  
      static java.lang.Class[] wrap​(java.lang.Class[] classes)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • EMPTY_ARRAY

        public static final java.lang.Object[] EMPTY_ARRAY
      • EMPTY_TYPE_ARRAY

        public static final java.lang.Class[] EMPTY_TYPE_ARRAY
      • ARRAY_WITH_NULL

        public static final java.lang.Object[] ARRAY_WITH_NULL
      • LOG

        protected static final java.util.logging.Logger LOG
      • EMPTY_CLASS_ARRAY

        public static final java.lang.Class[] EMPTY_CLASS_ARRAY
    • Constructor Detail

      • MetaClassHelper

        public MetaClassHelper()
    • Method Detail

      • accessibleToConstructor

        public static boolean accessibleToConstructor​(java.lang.Class at,
                                                      java.lang.reflect.Constructor constructor)
      • asWrapperArray

        public static java.lang.Object[] asWrapperArray​(java.lang.Object parameters,
                                                        java.lang.Class componentType)
      • asPrimitiveArray

        public static java.lang.Object asPrimitiveArray​(java.util.List list,
                                                        java.lang.Class parameterType)
        Parameters:
        list - the original list
        parameterType - the resulting array type
        Returns:
        the constructed array
      • calculateParameterDistance

        public static long calculateParameterDistance​(java.lang.Class[] arguments,
                                                      ParameterTypes pt)
      • capitalize

        @Deprecated
        public static java.lang.String capitalize​(java.lang.String property)
        Deprecated.
        Use BeanUtils.capitalize instead
      • chooseEmptyMethodParams

        public static java.lang.Object chooseEmptyMethodParams​(FastArray methods)
        Parameters:
        methods - the methods to choose from
        Returns:
        the method with 1 parameter which takes the most general type of object (e.g. Object)
      • chooseMostGeneralMethodWith1NullParam

        @Deprecated
        public static java.lang.Object chooseMostGeneralMethodWith1NullParam​(FastArray methods)
        Deprecated.
        Warning: this method does not choose properly if multiple methods with the same distance are encountered
        Parameters:
        methods - the methods to choose from
        Returns:
        the method with 1 parameter which takes the most general type of object (e.g. Object) ignoring primitive types
      • containsMatchingMethod

        public static boolean containsMatchingMethod​(java.util.List list,
                                                     MetaMethod method)
        Parameters:
        list - a list of MetaMethods
        method - the MetaMethod of interest
        Returns:
        true if a method of the same matching prototype was found in the list
      • convertToTypeArray

        public static java.lang.Class[] convertToTypeArray​(java.lang.Object[] args)
        param instance array to the type array
        Parameters:
        args - the arguments
        Returns:
        the types of the arguments
      • makeCommonArray

        public static java.lang.Object makeCommonArray​(java.lang.Object[] arguments,
                                                       int offset,
                                                       java.lang.Class fallback)
      • makeArray

        public static java.lang.Object makeArray​(java.lang.Object obj,
                                                 java.lang.Class secondary,
                                                 int length)
      • createExceptionText

        public static GroovyRuntimeException createExceptionText​(java.lang.String init,
                                                                 MetaMethod method,
                                                                 java.lang.Object object,
                                                                 java.lang.Object[] args,
                                                                 java.lang.Throwable reason,
                                                                 boolean setReason)
      • getClassName

        protected static java.lang.String getClassName​(java.lang.Object object)
      • getMethodPointer

        public static Closure getMethodPointer​(java.lang.Object object,
                                               java.lang.String methodName)
        Returns a callable object for the given method name on the object. The object acts like a Closure in that it can be called, like a closure and passed around - though really its a method pointer, not a closure per se.
        Parameters:
        object - the object containing the method
        methodName - the method of interest
        Returns:
        the resulting closure-like method pointer
      • isAssignableFrom

        public static boolean isAssignableFrom​(java.lang.Class classToTransformTo,
                                               java.lang.Class classToTransformFrom)
      • isGenericSetMethod

        public static boolean isGenericSetMethod​(MetaMethod method)
      • isSuperclass

        protected static boolean isSuperclass​(java.lang.Class clazz,
                                              java.lang.Class superclass)
      • parametersAreCompatible

        public static boolean parametersAreCompatible​(java.lang.Class[] arguments,
                                                      java.lang.Class[] parameters)
      • logMethodCall

        public static void logMethodCall​(java.lang.Object object,
                                         java.lang.String methodName,
                                         java.lang.Object[] arguments)
      • normalizedValue

        protected static java.lang.String normalizedValue​(java.lang.Object argument)
      • shortName

        protected static java.lang.String shortName​(java.lang.Object object)
      • wrap

        public static java.lang.Class[] wrap​(java.lang.Class[] classes)
      • sameClasses

        public static boolean sameClasses​(java.lang.Class[] params,
                                          java.lang.Object[] arguments,
                                          boolean weakNullCheck)
      • sameClasses

        public static boolean sameClasses​(java.lang.Class[] params,
                                          java.lang.Object[] arguments)
      • sameClasses

        public static boolean sameClasses​(java.lang.Class[] params)
      • sameClasses

        public static boolean sameClasses​(java.lang.Class[] params,
                                          java.lang.Object arg1)
      • sameClasses

        public static boolean sameClasses​(java.lang.Class[] params,
                                          java.lang.Object arg1,
                                          java.lang.Object arg2)
      • sameClasses

        public static boolean sameClasses​(java.lang.Class[] params,
                                          java.lang.Object arg1,
                                          java.lang.Object arg2,
                                          java.lang.Object arg3)
      • sameClasses

        public static boolean sameClasses​(java.lang.Class[] params,
                                          java.lang.Object arg1,
                                          java.lang.Object arg2,
                                          java.lang.Object arg3,
                                          java.lang.Object arg4)
      • sameClass

        public static boolean sameClass​(java.lang.Class[] params,
                                        java.lang.Object arg)
      • castArgumentsToClassArray

        public static java.lang.Class[] castArgumentsToClassArray​(java.lang.Object[] argTypes)
      • unwrap

        public static void unwrap​(java.lang.Object[] arguments)
      • doSetMetaClass

        public static void doSetMetaClass​(java.lang.Object self,
                                          MetaClass mc)
        Sets the meta class for an object, by delegating to the appropriate DefaultGroovyMethods helper method. This method was introduced as a breaking change in 2.0 to solve rare cases of stack overflow. See GROOVY-5285. The method is named doSetMetaClass in order to prevent misusages. Do not use this method directly unless you know what you do.
        Parameters:
        self - the object for which to set the meta class
        mc - the metaclass
      • convertPropertyName

        public static java.lang.String convertPropertyName​(java.lang.String prop)
        Converts a String into a standard property name.
        Parameters:
        prop - the original name
        Returns:
        the converted name