示例#1
0
 public void setProperty(String property, Object newValue) {
   if ("delegate".equals(property)) {
     setDelegate(newValue);
   } else if ("metaClass".equals(property)) {
     setMetaClass((MetaClass) newValue);
   } else if ("resolveStrategy".equals(property)) {
     setResolveStrategy(((Number) newValue).intValue());
   } else if ("directive".equals(property)) {
     setDirective(((Number) newValue).intValue());
   } else {
     switch (resolveStrategy) {
       case DELEGATE_FIRST:
         setPropertyDelegateFirst(property, newValue);
         break;
       case DELEGATE_ONLY:
         InvokerHelper.setProperty(this.delegate, property, newValue);
         break;
       case OWNER_ONLY:
         InvokerHelper.setProperty(this.owner, property, newValue);
         break;
       case TO_SELF:
         super.setProperty(property, newValue);
         break;
       default:
         setPropertyOwnerFirst(property, newValue);
     }
   }
 }
示例#2
0
 private void setPropertyTryThese(
     String property, Object newValue, Object firstTry, Object secondTry) {
   try {
     // let's try setting the property on the first object
     InvokerHelper.setProperty(firstTry, property, newValue);
   } catch (GroovyRuntimeException e1) {
     if (firstTry != null && firstTry != this && firstTry != secondTry) {
       try {
         // let's try setting the property on the second object
         InvokerHelper.setProperty(secondTry, property, newValue);
         return;
       } catch (GroovyRuntimeException e2) {
         // ignore, we'll throw e1
       }
     }
     throw e1;
   }
 }
 public static void setProperty(
     Object messageArgument, Class senderClass, Object receiver, String messageName)
     throws Throwable {
   try {
     if (receiver == null) receiver = NullObject.getNullObject();
     InvokerHelper.setProperty(receiver, messageName, messageArgument);
   } catch (GroovyRuntimeException gre) {
     throw unwrap(gre);
   }
 }