public int getResolveStrategy() { return ((Closure) getOwner()).getResolveStrategy(); }
public int getResolveStrategy() { return ((Closure) getOwner()).getResolveStrategy(); }
return getDirective(); } else if ("resolveStrategy".equals(property)) { return getResolveStrategy(); } else if ("thisObject".equals(property)) { return getThisObject();
boolean shouldDefer = closure.getResolveStrategy() == Closure.DELEGATE_ONLY && isInternalMethod(methodName); if (method == null && !shouldDefer) { method = CLOSURE_METACLASS.pickMethod(methodName, argClasses); final Object delegate = closure.getDelegate(); final Object thisObject = closure.getThisObject(); final int resolveStrategy = closure.getResolveStrategy(); boolean invokeOnDelegate = false; boolean invokeOnOwner = false;
final int resolveStrategy = closure.getResolveStrategy();
/** * Call a configuration block with a specified delegate. * @param block The block to invoke. * @param delegate The delegate. * @return The return value. */ public static Object callWithDelegate(Closure<?> block, Object delegate) { int oldStrategy = block.getResolveStrategy(); Object oldDelegate = block.getDelegate(); try { block.setDelegate(delegate); block.setResolveStrategy(Closure.DELEGATE_FIRST); return block.call(); } finally { block.setResolveStrategy(oldStrategy); block.setDelegate(oldDelegate); } }
@Override public int getResolveStrategy() { return this.target.getResolveStrategy(); }
public int getResolveStrategy() { return Closure.this.getResolveStrategy(); } }
public int getResolveStrategy() { return Closure.this.getResolveStrategy(); } }
public int getResolveStrategy() { return Closure.this.getResolveStrategy(); } }
public int getResolveStrategy() { return ((Closure) getOwner()).getResolveStrategy(); }
public int getResolveStrategy() { return ((Closure)getOwner()).getResolveStrategy(); }
public int getResolveStrategy() { return ((Closure) getOwner()).getResolveStrategy(); }
return getDirective(); } else if ("resolveStrategy".equals(property)) { return getResolveStrategy(); } else if ("thisObject".equals(property)) { return getThisObject();
/** * Call a configuration block with a specified delegate. * @param block The block to invoke. * @param delegate The delegate. * @return The return value. */ public static Object callWithDelegate(Closure<?> block, Object delegate) { int oldStrategy = block.getResolveStrategy(); Object oldDelegate = block.getDelegate(); try { block.setDelegate(delegate); block.setResolveStrategy(Closure.DELEGATE_FIRST); return block.call(); } finally { block.setResolveStrategy(oldStrategy); block.setDelegate(oldDelegate); } }
/** * {@link Closure} forwards methods/properties to other objects, depending on the resolution strategy. * <p> * This method returns the list of non-null objects that should be considered, in that order. */ public static List<Object> targetsOf(Closure receiver) { Object owner = receiver.getOwner(); Object delegate = receiver.getDelegate(); // Groovy's method dispatch logic for Closure is defined in MetaClassImpl.invokeMethod switch (receiver.getResolveStrategy()) { case Closure.OWNER_FIRST: return of(owner,delegate); case Closure.DELEGATE_FIRST: return of(delegate,owner); case Closure.OWNER_ONLY: return of(owner); case Closure.DELEGATE_ONLY: return of(delegate); case Closure.TO_SELF: default: // fields/methods defined on Closure are checked by SandboxInterceptor, // so if we are here it means we will not find the target of the dispatch. return Collections.emptyList(); } }
boolean shouldDefer = closure.getResolveStrategy() == Closure.DELEGATE_ONLY && isInternalMethod(methodName); if (method == null && !shouldDefer) { method = CLOSURE_METACLASS.pickMethod(methodName, argClasses); final Object delegate = closure.getDelegate(); final Object thisObject = closure.getThisObject(); final int resolveStrategy = closure.getResolveStrategy(); boolean invokeOnDelegate = false; boolean invokeOnOwner = false;
final Object delegate = closure.getDelegate(); final Object thisObject = closure.getThisObject(); final int resolveStrategy = closure.getResolveStrategy(); boolean invokeOnDelegate = false; boolean invokeOnOwner = false;
final Object delegate = closure.getDelegate(); final Object thisObject = closure.getThisObject(); final int resolveStrategy = closure.getResolveStrategy(); boolean invokeOnDelegate = false; boolean invokeOnOwner = false;
final Object delegate = closure.getDelegate(); final Object thisObject = closure.getThisObject(); final int resolveStrategy = closure.getResolveStrategy(); boolean invokeOnDelegate = false; boolean invokeOnOwner = false;