DelegateMetaMethod (Grails 3.0.10.BUILD-SNAPSHOT)
Date: 2015-12-03

Package: org.grails.plugins.web.filters.support

## [Java] Class DelegateMetaMethod

- org.grails.plugins.web.filters.support.DelegateMetaMethod

- MetaMethod implementation that delegates to real MetaMethod implementation. This can be used to efficiently proxy a metamethod from another metaClass in methodMissing. An example can be found in FilterConfig's methodMissing . Without this class it's hard to implement efficient methodMissing "caching" supporting methods with multiple signatures (same method name, different set of arguments). This class could be moved to org.codehaus.groovy.grails.commons.metaclass for reuse.

  Authors:
    Lari Hotari

- - ### Constructor Summary

    Constructors
    Constructor and description
    `DelegateMetaMethod (groovy.lang.MetaMethod delegateMethod, DelegateMetaMethod.DelegateMetaMethodTargetStrategy targetStrategy)`

  - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `void` | `checkParameters(java.lang.Class[] arguments)`
    `java.lang.Object` | `clone()`
    `java.lang.Object[]` | `correctArguments(java.lang.Object[] argumentArray)`
    `java.lang.Object` | `doMethodInvoke(java.lang.Object object, java.lang.Object[] argumentArray)`
    `boolean` | `equals(java.lang.Object obj)`
    `org.codehaus.groovy.reflection.CachedClass` | `getDeclaringClass()`
    `java.lang.String` | `getDescriptor()`
    `int` | `getModifiers()`
    `java.lang.String` | `getMopName()`
    `java.lang.String` | `getName()`
    `java.lang.Class[]` | `getNativeParameterTypes()`
    `org.codehaus.groovy.reflection.CachedClass[]` | `getParameterTypes()`
    `java.lang.Class` | `getReturnType()`
    `java.lang.String` | `getSignature()`
    `java.lang.Object` | `invoke(java.lang.Object object, java.lang.Object[] arguments)`
    `boolean` | `isAbstract()`
    `boolean` | `isCacheable()`
    `boolean` | `isMethod(groovy.lang.MetaMethod method)`
    `boolean` | `isStatic()`
    `boolean` | `isValidExactMethod(java.lang.Object[] args)`
    `boolean` | `isValidExactMethod(java.lang.Class[] args)`
    `boolean` | `isValidMethod(java.lang.Class[] arguments)`
    `boolean` | `isValidMethod(java.lang.Object[] arguments)`
    `boolean` | `isVargsMethod(java.lang.Object[] arguments)`
    `java.lang.String` | `toString()`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class groovy.lang.MetaMethod` | `groovy.lang.MetaMethod#checkParameters([Ljava.lang.Class;), groovy.lang.MetaMethod#isSame(groovy.lang.MetaMethod), groovy.lang.MetaMethod#isCacheable(), groovy.lang.MetaMethod#getMopName(), groovy.lang.MetaMethod#processDoMethodInvokeException(java.lang.Exception, java.lang.Object, [Ljava.lang.Object;), groovy.lang.MetaMethod#doMethodInvoke(java.lang.Object, [Ljava.lang.Object;), groovy.lang.MetaMethod#invoke(java.lang.Object, [Ljava.lang.Object;), groovy.lang.MetaMethod#toString(), groovy.lang.MetaMethod#clone(), groovy.lang.MetaMethod#getModifiers(), groovy.lang.MetaMethod#getName(), groovy.lang.MetaMethod#getDeclaringClass(), groovy.lang.MetaMethod#isMethod(groovy.lang.MetaMethod), groovy.lang.MetaMethod#getDescriptor(), groovy.lang.MetaMethod#getReturnType(), groovy.lang.MetaMethod#isAbstract(), groovy.lang.MetaMethod#isProtected(), groovy.lang.MetaMethod#getSignature(), groovy.lang.MetaMethod#isStatic(), groovy.lang.MetaMethod#isPublic(), groovy.lang.MetaMethod#isPrivate(), groovy.lang.MetaMethod#getNativeParameterTypes(), groovy.lang.MetaMethod#coerceArgumentsToClasses([Ljava.lang.Object;), groovy.lang.MetaMethod#isVargsMethod(), groovy.lang.MetaMethod#isVargsMethod([Ljava.lang.Object;), groovy.lang.MetaMethod#correctArguments([Ljava.lang.Object;), groovy.lang.MetaMethod#isValidExactMethod([Ljava.lang.Object;), groovy.lang.MetaMethod#isValidExactMethod([Ljava.lang.Class;), groovy.lang.MetaMethod#isValidMethod([Ljava.lang.Object;), groovy.lang.MetaMethod#isValidMethod([Ljava.lang.Class;), groovy.lang.MetaMethod#getParameterTypes(), groovy.lang.MetaMethod#wait(long, int), groovy.lang.MetaMethod#wait(long), groovy.lang.MetaMethod#wait(), groovy.lang.MetaMethod#equals(java.lang.Object), groovy.lang.MetaMethod#hashCode(), groovy.lang.MetaMethod#getClass(), groovy.lang.MetaMethod#notify(), groovy.lang.MetaMethod#notifyAll()`
    `class org.codehaus.groovy.reflection.ParameterTypes` | `org.codehaus.groovy.reflection.ParameterTypes#getNativeParameterTypes(), org.codehaus.groovy.reflection.ParameterTypes#coerceArgumentsToClasses([Ljava.lang.Object;), org.codehaus.groovy.reflection.ParameterTypes#isVargsMethod(), org.codehaus.groovy.reflection.ParameterTypes#isVargsMethod([Ljava.lang.Object;), org.codehaus.groovy.reflection.ParameterTypes#correctArguments([Ljava.lang.Object;), org.codehaus.groovy.reflection.ParameterTypes#isValidExactMethod([Ljava.lang.Object;), org.codehaus.groovy.reflection.ParameterTypes#isValidExactMethod([Ljava.lang.Class;), org.codehaus.groovy.reflection.ParameterTypes#isValidMethod([Ljava.lang.Object;), org.codehaus.groovy.reflection.ParameterTypes#isValidMethod([Ljava.lang.Class;), org.codehaus.groovy.reflection.ParameterTypes#getParameterTypes(), org.codehaus.groovy.reflection.ParameterTypes#wait(long, int), org.codehaus.groovy.reflection.ParameterTypes#wait(long), org.codehaus.groovy.reflection.ParameterTypes#wait(), org.codehaus.groovy.reflection.ParameterTypes#equals(java.lang.Object), org.codehaus.groovy.reflection.ParameterTypes#toString(), org.codehaus.groovy.reflection.ParameterTypes#hashCode(), org.codehaus.groovy.reflection.ParameterTypes#getClass(), org.codehaus.groovy.reflection.ParameterTypes#notify(), org.codehaus.groovy.reflection.ParameterTypes#notifyAll()`

- - ### Constructor Detail

    - #### public DelegateMetaMethod(groovy.lang.MetaMethod delegateMethod, DelegateMetaMethod.DelegateMetaMethodTargetStrategy targetStrategy)

  - ### Method Detail

    - #### @java.lang.Override public void checkParameters(java.lang.Class[] arguments)

    - #### @java.lang.Override public java.lang.Object clone()

    - #### @java.lang.Override public java.lang.Object[] correctArguments(java.lang.Object[] argumentArray)

    - #### @java.lang.Override public java.lang.Object doMethodInvoke(java.lang.Object object, java.lang.Object[] argumentArray)

    - #### @java.lang.Override public boolean equals(java.lang.Object obj)

    - #### @java.lang.Override public org.codehaus.groovy.reflection.CachedClass getDeclaringClass()

    - #### @java.lang.Override public java.lang.String getDescriptor()

    - #### @java.lang.Override public int getModifiers()

    - #### @java.lang.Override public java.lang.String getMopName()

    - #### @java.lang.Override public java.lang.String getName()

    - #### @java.lang.Override public java.lang.Class[] getNativeParameterTypes()

    - #### @java.lang.Override public org.codehaus.groovy.reflection.CachedClass[] getParameterTypes()

    - #### @java.lang.Override public java.lang.Class getReturnType()

    - #### @java.lang.Override public java.lang.String getSignature()

    - #### @java.lang.Override public java.lang.Object invoke(java.lang.Object object, java.lang.Object[] arguments)

    - #### @java.lang.Override public boolean isAbstract()

    - #### @java.lang.Override public boolean isCacheable()

    - #### @java.lang.Override public boolean isMethod(groovy.lang.MetaMethod method)

    - #### @java.lang.Override public boolean isStatic()

    - #### @java.lang.Override public boolean isValidExactMethod(java.lang.Object[] args)

    - #### @java.lang.Override public boolean isValidExactMethod(java.lang.Class[] args)

    - #### @java.lang.Override public boolean isValidMethod(java.lang.Class[] arguments)

    - #### @java.lang.Override public boolean isValidMethod(java.lang.Object[] arguments)

    - #### @java.lang.Override public boolean isVargsMethod(java.lang.Object[] arguments)

    - #### @java.lang.Override public java.lang.String toString()