CallbackFilter.java revision 674060f01e9090cd21b3c5656cc3204912ad17a6
183c01da96f57cf732a5da9a83e2981241f205dc4Ted Kremenek/* 2eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * Copyright 2003,2004 The Apache Software Foundation 3eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * 4eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * Licensed under the Apache License, Version 2.0 (the "License"); 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner * you may not use this file except in compliance with the License. 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner * You may obtain a copy of the License at 7eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * 8eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * http://www.apache.org/licenses/LICENSE-2.0 9eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * 1083c01da96f57cf732a5da9a83e2981241f205dc4Ted Kremenek * Unless required by applicable law or agreed to in writing, software 1183c01da96f57cf732a5da9a83e2981241f205dc4Ted Kremenek * distributed under the License is distributed on an "AS IS" BASIS, 12eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * See the License for the specific language governing permissions and 14eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * limitations under the License. 1583c01da96f57cf732a5da9a83e2981241f205dc4Ted Kremenek */ 1683c01da96f57cf732a5da9a83e2981241f205dc4Ted Kremenekpackage org.mockito.cglib.proxy; 17eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek 1805e14cd46ef44c07385aae96ec2fdcb9bf7e9467Ted Kremenekimport java.lang.reflect.Method; 19eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenekimport java.util.List; 204c3fbe33194cd9b1bfff773647ed785b403e1ba5Ted Kremenek 215226755ab5ce6346f98b5f41cdcffbe84c5bb484Ted Kremenek/** 224c3fbe33194cd9b1bfff773647ed785b403e1ba5Ted Kremenek * Map methods of subclasses generated by {@link Enhancer} to a particular 2359753441b6391a9843eff287f0adb2614153b7c8Ted Kremenek * callback. The type of the callbacks chosen for each method affects 24eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * the bytecode generated for that method in the subclass, and cannot 25eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek * change for the life of the class. 2605e14cd46ef44c07385aae96ec2fdcb9bf7e9467Ted Kremenek */ 2783c01da96f57cf732a5da9a83e2981241f205dc4Ted Kremenekpublic interface CallbackFilter { 28eb19188e668d0ad2c968fc0286a6922f9194deb4Ted Kremenek /** 29f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek * Map a method to a callback. 30f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek * 31f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek * @param method the intercepted method 3282bae3f6bf7bc4733d9c87659b266e23ad55f420Ted Kremenek * @param allMethods all the methods found on the instance. Don't mess with the contents of this list!!! 33f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek * @return the index into the array of callbacks (as specified by {@link Enhancer#setCallbacks}) to use for the method, 34f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek */ 35f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek int accept(Method method, List<Method> allMethods); 36f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek 37f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek /** 38f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek * The <code>CallbackFilter</code> in use affects which cached class 39f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek * the <code>Enhancer</code> will use, so this is a reminder that 40f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek * you should correctly implement <code>equals</code> and 41f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek * <code>hashCode</code> for custom <code>CallbackFilter</code> 427090d5465de7ca620da16211cf886edf1edc1f1fTed Kremenek * implementations in order to improve performance. 43f4be8ee748831bc23e35b542e6c1bb6d1eb49baaTed Kremenek */ 447090d5465de7ca620da16211cf886edf1edc1f1fTed Kremenek boolean equals(Object o); 454c3fbe33194cd9b1bfff773647ed785b403e1ba5Ted Kremenek} 46d452758bb6b59340528a26def9ecc24b329d4ecfTed Kremenek