private void findAndAddMethod(Set providedMethods, Method currentMethod, Set actualMethods) { Iterator iterator = providedMethods.iterator(); while(iterator.hasNext()) { Method currentMethodToIntercept = (Method)iterator.next(); if(MethodUtil.areMethodsEqual(currentMethod, currentMethodToIntercept)) { actualMethods.add(currentMethod); iterator.remove(); return; } } }
/** * Returns all non-static methods declared by the specified class and its * superclasses. The returned array contains the methods of all classes * in the inheritance hierarchy, starting with the methods of the * most general superclass, which is <code>java.lang.Object</code>. * @param theClass the class whose methods are examined * @return the array of method arrays */ public static Method[][] getMethodsSortedByInheritanceHierarchy(Class theClass) { List hierarchyList = new ArrayList(); Class[] hierarchyClasses = ClassUtil.getInheritanceHierarchy(theClass); for(int ii = 0; ii < hierarchyClasses.length; ii++) { addMethodsForClass(hierarchyList, hierarchyClasses[ii]); } return (Method[][])hierarchyList.toArray(new Method[hierarchyList.size()][]); }
Method[][] declaredMethods = MethodUtil.getMethodsSortedByInheritanceHierarchy(clazz); Set overridingMethods = new HashSet(); for(int ii = 0; ii < methods.length; ii++) if(MethodUtil.overrides(currentAroundInvokeMethod, declaredMethods[yy][zz]))
return MethodUtil.invoke(source, "clone");
return MethodUtil.invoke(source, "clone");
private void findAndAddMethod(Set providedMethods, Method currentMethod, Set actualMethods) { Iterator iterator = providedMethods.iterator(); while(iterator.hasNext()) { Method currentMethodToIntercept = (Method)iterator.next(); if(MethodUtil.areMethodsEqual(currentMethod, currentMethodToIntercept)) { actualMethods.add(currentMethod); iterator.remove(); return; } } }
Method[][] declaredMethods = MethodUtil.getMethodsSortedByInheritanceHierarchy(clazz); Set overridingMethods = new HashSet(); for(int ii = 0; ii < methods.length; ii++) if(MethodUtil.overrides(currentAroundInvokeMethod, declaredMethods[yy][zz]))
return MethodUtil.invoke(source, "clone");
/** * Returns all non-static methods declared by the specified class and its * superclasses. The returned array contains the methods of all classes * in the inheritance hierarchy, starting with the methods of the * most general superclass, which is <code>java.lang.Object</code>. * @param theClass the class whose methods are examined * @return the array of method arrays */ public static Method[][] getMethodsSortedByInheritanceHierarchy(Class theClass) { List hierarchyList = new ArrayList(); Class[] hierarchyClasses = ClassUtil.getInheritanceHierarchy(theClass); for(int ii = 0; ii < hierarchyClasses.length; ii++) { addMethodsForClass(hierarchyList, hierarchyClasses[ii]); } return (Method[][])hierarchyList.toArray(new Method[hierarchyList.size()][]); }
private void findAndAddMethod(Set providedMethods, Method currentMethod, Set actualMethods) { Iterator iterator = providedMethods.iterator(); while(iterator.hasNext()) { Method currentMethodToIntercept = (Method)iterator.next(); if(MethodUtil.areMethodsEqual(currentMethod, currentMethodToIntercept)) { actualMethods.add(currentMethod); iterator.remove(); return; } } }
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { for(int ii = 0; ii < methodsToIntercept.length; ii++) { if(MethodUtil.areMethodsEqual(method, methodsToIntercept[ii])) { return methodsToIntercept[ii].invoke(delegate, args); } } for(int ii = 0; ii < methodsToDuplicate.length; ii++) { if(MethodUtil.areMethodsEqual(method, methodsToDuplicate[ii])) { methodsToDuplicate[ii].invoke(delegate, args); } } return proxy.invokeSuper(obj, args); } }
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { for (Method aMethodsToIntercept : methodsToIntercept) { if (MethodUtil.areMethodsEqual(method, aMethodsToIntercept)) { return aMethodsToIntercept.invoke(delegate, args); } } for (Method aMethodsToDuplicate : methodsToDuplicate) { if (MethodUtil.areMethodsEqual(method, aMethodsToDuplicate)) { aMethodsToDuplicate.invoke(delegate, args); } } return proxy.invokeSuper(obj, args); } }
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { for(int ii = 0; ii < methodsToIntercept.length; ii++) { if(MethodUtil.areMethodsEqual(method, methodsToIntercept[ii])) { return methodsToIntercept[ii].invoke(delegate, args); } } for(int ii = 0; ii < methodsToDuplicate.length; ii++) { if(MethodUtil.areMethodsEqual(method, methodsToDuplicate[ii])) { methodsToDuplicate[ii].invoke(delegate, args); } } return proxy.invokeSuper(obj, args); } }