示例#1
0
  private Object getPropertyTryThese(String property, Object firstTry, Object secondTry) {
    try {
      // let's try getting the property on the first object
      return InvokerHelper.getProperty(firstTry, property);

    } catch (MissingPropertyException e1) {
      if (secondTry != null && firstTry != this && firstTry != secondTry) {
        try {
          // let's try getting the property on the second object
          return InvokerHelper.getProperty(secondTry, property);
        } catch (GroovyRuntimeException e2) {
          // ignore, we'll throw e1
        }
      }
      throw e1;

    } catch (MissingFieldException e2) { // see GROOVY-5875
      if (secondTry != null && firstTry != this && firstTry != secondTry) {
        try {
          // let's try getting the property on the second object
          return InvokerHelper.getProperty(secondTry, property);
        } catch (GroovyRuntimeException e3) {
          // ignore, we'll throw e2
        }
      }
      throw e2;
    }
  }
示例#2
0
 public Object getProperty(final String property) {
   if ("delegate".equals(property)) {
     return getDelegate();
   } else if ("owner".equals(property)) {
     return getOwner();
   } else if ("maximumNumberOfParameters".equals(property)) {
     return getMaximumNumberOfParameters();
   } else if ("parameterTypes".equals(property)) {
     return getParameterTypes();
   } else if ("metaClass".equals(property)) {
     return getMetaClass();
   } else if ("class".equals(property)) {
     return getClass();
   } else if ("directive".equals(property)) {
     return getDirective();
   } else if ("resolveStrategy".equals(property)) {
     return getResolveStrategy();
   } else if ("thisObject".equals(property)) {
     return getThisObject();
   } else {
     switch (resolveStrategy) {
       case DELEGATE_FIRST:
         return getPropertyDelegateFirst(property);
       case DELEGATE_ONLY:
         return InvokerHelper.getProperty(this.delegate, property);
       case OWNER_ONLY:
         return InvokerHelper.getProperty(this.owner, property);
       case TO_SELF:
         return super.getProperty(property);
       default:
         return getPropertyOwnerFirst(property);
     }
   }
 }
 public static Object getProperty(Class senderClass, Object receiver, String messageName)
     throws Throwable {
   try {
     return InvokerHelper.getProperty(receiver, messageName);
   } catch (GroovyRuntimeException gre) {
     throw unwrap(gre);
   }
 }