Interface ReflectiveModel<T extends ReflectiveModel<T>>
-
- Type Parameters:
T- Recursive generic type of the class implementing this interface.
- All Superinterfaces:
Model
- All Known Implementing Classes:
ClassLoaderModel,ClassModel
public interface ReflectiveModel<T extends ReflectiveModel<T>> extends Model
A mixin fully implementing theModelinterface, so that the classes implementing the model don't have to do it themselves. This mixin assumes, that the class implementing it follows these rules:- Has a constructor with no arguments (can be private) that will be used for creating instances for static methods, constructors and instance methods with unknown values
- Uses
ModeledConstructor,ModeledStaticMethodandModeledInstanceMethodto mark the model methods. These methods should be private.
All annotated methods should take
ModelHelper.MethodExecutionContextas the first argument, the remaining arguments areValuearguments where their number corresponds to the number of arguments the modelled method expects.
-
-
Field Summary
Fields Modifier and Type Field Description static org.apache.logging.log4j.Loggerlog
-
Method Summary
All Methods Instance Methods Default Methods Modifier and Type Method Description default MethodResultinit(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)Execute a constructor call for the modeled class.default MethodResultinvoke(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)Execute an instance method on the modeled object.default MethodResultinvokeStatic(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)Execute a static method for the modeled class.
-
-
-
Method Detail
-
init
default MethodResult init(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)
Description copied from interface:ModelExecute a constructor call for the modeled class.It is suggested to add logic to allow running this only on a dummy model without any state.
- Specified by:
initin interfaceModel- Parameters:
methodExecutionInfo- execution info of the target method.valueCalculator- the value calculator that should be used to create any value in the result.- Returns:
- the result of the method invocation. Since it's a constructor invocation the return value of the result is expected to be empty and the constructed value should be set as the updated instance.
-
invoke
default MethodResult invoke(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)
Description copied from interface:ModelExecute an instance method on the modeled object. The state of the instance is represented by the state of the model.It is suggested to add logic to allow running this only on a model representing an initialized object.
-
invokeStatic
default MethodResult invokeStatic(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)
Description copied from interface:ModelExecute a static method for the modeled class.It is suggested to add logic to allow running this only on a dummy model without any state.
- Specified by:
invokeStaticin interfaceModel- Parameters:
methodExecutionInfo- execution info of the target method.valueCalculator- the value calculator that should be used to create any value in the result.- Returns:
- the result of the method invocation.
-
-