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