blob: 8cf69bc4c8115670b16f40609b64095523e0b0b4 [file] [log] [blame]
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package org.apache.tapestry.enhance;
/**
* A representation of a {@link java.lang.reflect.Method}, identifying the name, return type,
* parameter types and exception types. Actual Method objects are tied to a particular class, and
* don't compare well with other otherwise identical Methods from other classes or interface;
* MethodSignatures are distinct from classes and compare well.
* <p>
* Because the intended purpose is to compare methods from interfaces (which are always public and
* abstract) we don't bother to actually track the modifiers. In addition, at this time,
* MethodSignature <em>does not distinguish between instance and static
* methods</em>.
*/
public interface MethodSignature
{
/**
* Returns the exceptions for this method. Caution: do not modify the returned array. May return
* null.
*/
Class[] getExceptionTypes();
/**
* The name of the method.
* @return method name
*/
String getName();
/**
* Returns the parameter types for this method. May return null. Caution: do not modify the
* returned array.
*/
Class[] getParameterTypes();
/**
* Method return type.
*
* @return The return type of the method.
*/
Class getReturnType();
/**
* Returns a string consisting of the name of the method and its parameter values. This is
* similar to {@link #toString()}, but omits the return type and information about thrown
* exceptions. A unique id is used by MethodIterator to identify overlapping methods
* (methods with the same name but different thrown exceptions).
*
*/
String getUniqueId();
/**
* Returns true if this signature has the same return type, name and parameters types as the
* method signature passed in, and this signatures exceptions "trump" (are the same as, or
* super-implementations of, all exceptions thrown by the other method signature).
*
*/
boolean isOverridingSignatureOf(MethodSignature ms);
/**
* If the method definition has generic parameters or return types it
* is expected that this will return true.
*
* @return True if this is a generics based method, false otherwise.
*/
boolean isGeneric();
}