@Override public IOpenMethod findMatchingMethod(IRuntimeEnv env) { IOpenMethod openMethod = WrapperLogic.getTopClassMethod(this, env); return ((OpenMethodDispatcher) openMethod).findMatchingMethod(env); }
@Override public IOpenMethod findMatchingMethod(IRuntimeEnv env) { IOpenMethod openMethod = WrapperLogic.getTopClassMethod(this, env); return ((OpenMethodDispatcher) openMethod).findMatchingMethod(env); }
/** * Invokes appropriate method using runtime context. */ protected Object invokeInner(Object target, Object[] params, IRuntimeEnv env) { IOpenMethod method = findMatchingMethod(env); Tracer.put(this, "rule", method); return method.invoke(target, params, env); }
@Override protected IMethodCaller getMethodCaller(IRuntimeEnv env) { IMethodCaller methodCaller = getMethodCaller(); if (methodCaller instanceof OpenMethodDispatcher) { OpenMethodDispatcher openMethodDispatcher = (OpenMethodDispatcher) methodCaller; IOpenMethod matchingMethod = openMethodDispatcher.findMatchingMethod(env); if (Tracer.isEnabled()) { return new OpenMethodDispatcherTracerWrapper(openMethodDispatcher, matchingMethod); } else { return matchingMethod; } } return methodCaller; }
method = findInCache(contextMutableUUID); if (method == null) { method = findMatchingMethod(candidates, context); putToCache(contextMutableUUID, method); method = findMatchingMethod(candidates, context);