org.codehaus.groovy.runtime
Class MetaClassHelper

java.lang.Object
  extended by org.codehaus.groovy.runtime.MetaClassHelper

public class MetaClassHelper
extends java.lang.Object

Author:
John Wilson, Jochen Theodorou

Field Summary
protected static java.lang.Object[] ARRAY_WITH_NULL
           
static java.lang.Object[] EMPTY_ARRAY
           
static java.lang.Class[] EMPTY_TYPE_ARRAY
           
protected static java.util.logging.Logger log
           
 
Constructor Summary
MetaClassHelper()
           
 
Method Summary
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)
           
protected static java.lang.Class autoboxType(java.lang.Class type)
           
static long calculateParameterDistance(java.lang.Class[] arguments, java.lang.Class[] parameters)
           
static java.lang.String capitalize(java.lang.String property)
           
static java.lang.Object chooseEmptyMethodParams(java.util.List methods)
           
static java.lang.Object chooseMostGeneralMethodWith1NullParam(java.util.List methods)
           
static java.lang.Object[] coerceArgumentsToClasses(java.lang.Object[] argumentArray, java.lang.Class[] paramTypes)
           
protected static java.lang.Object coerceArray(java.lang.Object argument, java.lang.Class param)
           
protected static java.lang.Object coerceGString(java.lang.Object argument, java.lang.Class clazz)
          Coerces a GString instance into String if needed
protected static java.lang.Object coerceNumber(java.lang.Object argument, java.lang.Class param)
           
static boolean containsMatchingMethod(java.util.List list, MetaMethod method)
           
static java.lang.Class[] convertToTypeArray(java.lang.Object[] args)
          param instance array to the type array
static java.lang.Object createListenerProxy(java.lang.Class listenerType, java.lang.String listenerMethodName, Closure closure)
           
static java.lang.Object doConstructorInvoke(java.lang.reflect.Constructor constructor, java.lang.Object[] argumentArray)
           
static java.lang.Object doMethodInvoke(java.lang.Object object, MetaMethod method, java.lang.Object[] argumentArray)
           
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 java.lang.Class[] getParameterTypes(java.lang.Object methodOrConstructor)
           
static boolean isAssignableFrom(java.lang.Class classToTransformTo, java.lang.Class classToTransformFrom)
           
static boolean isGenericSetMethod(MetaMethod method)
           
protected static boolean isSuperclass(java.lang.Class claszz, java.lang.Class superclass)
           
static boolean isValidMethod(java.lang.Class[] paramTypes, java.lang.Class[] arguments, boolean includeCoerce)
           
static boolean isValidMethod(java.lang.Object method, java.lang.Class[] arguments, boolean includeCoerce)
           
static boolean isVargsMethod(java.lang.Class[] paramTypes, java.lang.Object[] arguments)
           
static void logMethodCall(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments)
           
protected static java.lang.String normalizedValue(java.lang.Object argument)
           
static boolean parametersAreCompatible(java.lang.Class[] arguments, java.lang.Class[] parameters)
           
protected static java.lang.String shortName(java.lang.Object object)
           
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 java.lang.Class[] EMPTY_TYPE_ARRAY

ARRAY_WITH_NULL

protected static final java.lang.Object[] ARRAY_WITH_NULL

log

protected static final java.util.logging.Logger log
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 -
parameterType -

autoboxType

protected static java.lang.Class autoboxType(java.lang.Class type)

calculateParameterDistance

public static long calculateParameterDistance(java.lang.Class[] arguments,
                                              java.lang.Class[] parameters)

capitalize

public static java.lang.String capitalize(java.lang.String property)

chooseEmptyMethodParams

public static java.lang.Object chooseEmptyMethodParams(java.util.List methods)
Returns:
the method with 1 parameter which takes the most general type of object (e.g. Object)

chooseMostGeneralMethodWith1NullParam

public static java.lang.Object chooseMostGeneralMethodWith1NullParam(java.util.List methods)
Returns:
the method with 1 parameter which takes the most general type of object (e.g. Object) ignoring primitve types

coerceGString

protected static java.lang.Object coerceGString(java.lang.Object argument,
                                                java.lang.Class clazz)
Coerces a GString instance into String if needed

Returns:
the coerced argument

coerceNumber

protected static java.lang.Object coerceNumber(java.lang.Object argument,
                                               java.lang.Class param)

coerceArray

protected static java.lang.Object coerceArray(java.lang.Object argument,
                                              java.lang.Class param)

containsMatchingMethod

public static boolean containsMatchingMethod(java.util.List list,
                                             MetaMethod method)
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 -

createListenerProxy

public static java.lang.Object createListenerProxy(java.lang.Class listenerType,
                                                   java.lang.String listenerMethodName,
                                                   Closure closure)
Parameters:
listenerType - the interface of the listener to proxy
listenerMethodName - the name of the method in the listener API to call the closure on
closure - the closure to invoke on the listenerMethodName method invocation
Returns:
a dynamic proxy which calls the given closure on the given method name

doConstructorInvoke

public static java.lang.Object doConstructorInvoke(java.lang.reflect.Constructor constructor,
                                                   java.lang.Object[] argumentArray)

coerceArgumentsToClasses

public static java.lang.Object[] coerceArgumentsToClasses(java.lang.Object[] argumentArray,
                                                          java.lang.Class[] paramTypes)

doMethodInvoke

public static java.lang.Object doMethodInvoke(java.lang.Object object,
                                              MetaMethod method,
                                              java.lang.Object[] argumentArray)

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.


getParameterTypes

public static java.lang.Class[] getParameterTypes(java.lang.Object methodOrConstructor)

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 claszz,
                                      java.lang.Class superclass)

isValidMethod

public static boolean isValidMethod(java.lang.Class[] paramTypes,
                                    java.lang.Class[] arguments,
                                    boolean includeCoerce)

isValidMethod

public static boolean isValidMethod(java.lang.Object method,
                                    java.lang.Class[] arguments,
                                    boolean includeCoerce)

isVargsMethod

public static boolean isVargsMethod(java.lang.Class[] paramTypes,
                                    java.lang.Object[] arguments)

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)

parametersAreCompatible

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

shortName

protected static java.lang.String shortName(java.lang.Object object)

wrap

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


Copyright © 2003-2011 The Codehaus. All Rights Reserved.