View Javadoc

    1   package org.codehaus.groovy.runtime;
    2
    3   import groovy.lang.Closure;
    4   import groovy.lang.MetaClass;
    5
    6
    7   /***
    8    * Represents a method on an object using a closure which can be invoked
    9    * at any time
    10   *
    11   * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
    12   * @version $Revision: 1.6 $
    13   */
    14  public class MethodClosure extends Closure {
    15
    16      private String method;
    17      MetaClass metaClass = InvokerHelper.getMetaClass(this);
    18
    19      public MethodClosure(Object delegate) {
    20          super(delegate);
    21      }
    22
    23      public MethodClosure(Object owner, String method) {
    24          super(owner);
    25          this.method = method;
    26      }
    27
    28      public String getMethod() {
    29          return method;
    30      }
    31
    32      public Object call(Object arguments) {
    33          return InvokerHelper.invokeMethod(getDelegate(), method, arguments);
    34      }
    35
    36      public MetaClass getMetaClass() {
    37          return metaClass;
    38      }
    39
    40      public void setMetaClass(MetaClass metaClass) {
    41          this.metaClass = metaClass;
    42      }
    43
    44      protected Object doCall(Object arguments) {
    45          return InvokerHelper.invokeMethod(getDelegate(), method, arguments);
    46      }
    47  }