MethodWrapper.java revision 674060f01e9090cd21b3c5656cc3204912ad17a6
1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Copyright 2003,2004 The Apache Software Foundation 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * you may not use this file except in compliance with the License. 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * You may obtain a copy of the License at 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.mockito.cglib.core; 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.lang.reflect.Method; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.*; 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class MethodWrapper { 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final MethodWrapperKey KEY_FACTORY = 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (MethodWrapperKey)KeyFactory.create(MethodWrapperKey.class); 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** Internal interface, only public due to ClassLoader issues. */ 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public interface MethodWrapperKey { 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Object newInstance(String name, String[] parameterTypes, String returnType); 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private MethodWrapper() { 318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static Object create(Method method) { 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return KEY_FACTORY.newInstance(method.getName(), 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ReflectUtils.getNames(method.getParameterTypes()), 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes method.getReturnType().getName()); 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static Set createSet(Collection methods) { 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set set = new HashSet(); 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (Iterator it = methods.iterator(); it.hasNext();) { 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.add(create((Method)it.next())); 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return set; 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes