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
A mixin fully implementing the
Model interface, 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.MethodExecutionContext as the
first argument, the remaining arguments are Value arguments where their number
corresponds to the number of arguments the modelled method expects.
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptiondefault 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.
-
Field Details
-
log
static final org.apache.logging.log4j.Logger log
-
-
Method Details
-
init
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.
-