1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.commons.proxy.factory.util; 19 20 import java.lang.reflect.Method; 21 import java.util.Arrays; 22 import java.util.List; 23 24 /** 25 * A class for capturing the signature of a method (its name and parameter types). 26 * 27 * @author James Carman 28 * @since 1.0 29 */ 30 public class MethodSignature 31 { 32 //---------------------------------------------------------------------------------------------------------------------- 33 // Fields 34 //---------------------------------------------------------------------------------------------------------------------- 35 36 private final String name; 37 private final List parameterTypes; 38 39 //---------------------------------------------------------------------------------------------------------------------- 40 // Constructors 41 //---------------------------------------------------------------------------------------------------------------------- 42 43 public MethodSignature( Method method ) 44 { 45 this.name = method.getName(); 46 this.parameterTypes = Arrays.asList( method.getParameterTypes() ); 47 } 48 49 //---------------------------------------------------------------------------------------------------------------------- 50 // Canonical Methods 51 //---------------------------------------------------------------------------------------------------------------------- 52 53 public boolean equals( Object o ) 54 { 55 if( this == o ) 56 { 57 return true; 58 } 59 if( o == null || getClass() != o.getClass() ) 60 { 61 return false; 62 } 63 final MethodSignature that = ( MethodSignature ) o; 64 if( !name.equals( that.name ) ) 65 { 66 return false; 67 } 68 if( !parameterTypes.equals( that.parameterTypes ) ) 69 { 70 return false; 71 } 72 return true; 73 } 74 75 public int hashCode() 76 { 77 int result; 78 result = name.hashCode(); 79 result = 29 * result + parameterTypes.hashCode(); 80 return result; 81 } 82 } 83