public void invoke(MethodInvocation invocation) throws Throwable { next.invoke(invocation); if (invocation.found() || invocation.getParameterTypes().length != 1) { return; } if (!invocation.isIsOrGet()) { return; } MethodInvocation getterInvocation = new MethodInvocation( invocation.getName(), invocation.getReturnType(), invocation.getGenericReturnType(), EMPTY_CLASS_ARRAY, invocation.getDelegate(), EMPTY); next.invoke(getterInvocation); if (getterInvocation.found() && getterInvocation.getResult() != null) { invocation.setResult(getterInvocation.getResult()); } else { invocation.setResult(invocation.getParameters()[0]); } }
public void invoke(MethodInvocation invocation) throws Throwable { next.invoke(invocation); if (invocation.found() && invocation.getResult() != null) { invocation.setResult( convert(invocation.getGenericReturnType(), invocation.getResult(), mapping)); } }
public void invoke(MethodInvocation invocation) throws Throwable { if (current.get() != null) { // Already invoking a method on the mix-in return; } if (instance == null) { instance = DirectInstantiator.INSTANCE.newInstance(mixInClass, proxy); } MethodInvocation beanInvocation = new MethodInvocation( invocation.getName(), invocation.getReturnType(), invocation.getGenericReturnType(), invocation.getParameterTypes(), instance, invocation.getParameters()); current.set(beanInvocation); try { next.invoke(beanInvocation); } finally { current.set(null); } if (beanInvocation.found()) { invocation.setResult(beanInvocation.getResult()); } }
public Object invoke(Object target, Method method, Object[] params) throws Throwable { if (EQUALS_METHOD.equals(method)) { Object param = params[0]; if (param == null || !Proxy.isProxyClass(param.getClass())) { return false; } InvocationHandler other = Proxy.getInvocationHandler(param); return equals(other); } else if (HASHCODE_METHOD.equals(method)) { return hashCode(); } MethodInvocation invocation = new MethodInvocation( method.getName(), method.getReturnType(), method.getGenericReturnType(), method.getParameterTypes(), delegate, params); invoker.invoke(invocation); if (!invocation.found()) { String methodName = method.getDeclaringClass().getSimpleName() + "." + method.getName() + "()"; throw Exceptions.unsupportedMethod(methodName); } return invocation.getResult(); }
public void invoke(MethodInvocation method) throws Throwable { if (method.isGetter()) { if (properties.containsKey(method.getName())) { method.setResult(properties.get(method.getName())); return; } if (unknown.contains(method.getName())) { return; } Object value; next.invoke(method); if (!method.found()) { unknown.add(method.getName()); return; } value = method.getResult(); properties.put(method.getName(), value); return; } next.invoke(method); }