View Javadoc

1   /*
2    * Copyright 2004-2006 the Seasar Foundation and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  package org.seasar.tuigwaa.logic.aop;
17  
18  import java.lang.reflect.Method;
19  
20  import org.apache.commons.lang.ArrayUtils;
21  
22  public class MethodSignature {
23  
24  	private volatile int hashCode = 0;
25  
26  	private String methodName;
27  
28  	private Class[] argTypes;
29  
30  	public MethodSignature(Method method) {
31  		this.methodName = method.getName();
32  		this.argTypes = method.getParameterTypes();
33  	}
34  
35  	public String getMethodName() {
36  		return methodName;
37  	}
38  
39  	public Class[] getArgTypes() {
40  		return argTypes;
41  	}
42  
43  	public boolean equals(Object obj) {
44  		if (obj == null || !(obj instanceof MethodSignature)) {
45  			return false;
46  		}
47  		MethodSignature key = (MethodSignature) obj;
48  		return methodName.equals(key.getMethodName())
49  				&& ArrayUtils.isEquals(getArgTypes(), key.getArgTypes());
50  	}
51  
52  	public int hashCode() {
53  		int seed = 17;
54  		int weight = 37;
55  
56  		if (this.hashCode == 0) {
57  			this.hashCode = seed;
58  			this.hashCode += weight * ArrayUtils.hashCode(this.getArgTypes());
59  			this.hashCode += weight * this.getMethodName().hashCode();
60  		}
61  		return this.hashCode;
62  	}
63  }