package rocks.inspectit.shared.all.instrumentation.config;
import java.util.Collection;
import java.util.List;
import rocks.inspectit.shared.all.instrumentation.config.impl.MethodInstrumentationConfig;
/**
* Instrumentation configuration for one method.
*
* @author Ivan Senic
*
*/
public interface IMethodInstrumentationConfig {
/**
* If {@link MethodInstrumentationConfig} has any {@link IMethodInstrumentationPoint}s.
*
* @return If {@link MethodInstrumentationConfig} has any {@link IMethodInstrumentationPoint}s.
*/
boolean hasInstrumentationPoints();
/**
* Returns all {@link IMethodInstrumentationPoint}s that exists for this method.
*
* @return Returns all {@link IMethodInstrumentationPoint}s that exists for this method.
*/
Collection<IMethodInstrumentationPoint> getAllInstrumentationPoints();
/**
* Returns target class FQN of a method.
*
* @return Returns target class FQN of a method.
*/
String getTargetClassFqn();
/**
* Returns method name.
*
* @return Returns method name.
*/
String getTargetMethodName();
/**
* Returns method return type.
*
* @return Returns method return type.
*/
String getReturnType();
/**
* Returns method parameter types.
*
* @return Returns method parameter types.
*/
List<String> getParameterTypes();
}