package fr.imag.adele.apam.declarations.instrumentation;
/**
* An interface giving access to reflection data associated with the class of an implementation
*
* @author vega
*
*/
public interface InstrumentedClass {
/**
* The name of the associated java class
*/
String getName();
/**
* Whether the specified java field is one of the supported collections
*/
boolean isCollectionField(String fieldName) throws NoSuchFieldException;
/**
* Whether the specified java field is one of the supported message queues
*/
boolean isMessageQueueField(String fieldName) throws NoSuchFieldException;
/**
* The type of the specified java field, for collections is the type of the element type
*/
String getFieldType(String fieldName) throws NoSuchFieldException;
/**
* The type of the specified java field
*/
String getDeclaredFieldType(String fieldName) throws NoSuchFieldException;
/**
* A special type to signal an unknown field type
*/
public static final String UNKNOWN_TYPE = new String("<UNKNOWN_TYPE>");
/**
* The number of parameters of the specified java method
*/
int getMethodParameterNumber(String methodName, boolean includeInherited) throws NoSuchMethodException;
/**
* The type of of the specified single-parameter java method
*/
String getMethodParameterType(String methodName, boolean includeInherited) throws NoSuchMethodException;
/**
* The list of parameter types
*/
String[] getMethodParameterTypes(String methodName, boolean includeInherited) throws NoSuchMethodException;
/**
* The type of return of the specified java method
*/
String getMethodReturnType(String methodName, String signature, boolean includeInherited) throws NoSuchMethodException;
}