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:
ClassModel
public interface ReflectiveModel<T extends ReflectiveModel<T>> extends Model
A mixin fully implementing theModel
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
,ModeledStaticMethod
andModeledInstanceMethod
to mark the model methods. These methods should be private.
All annotated methods should take
ModelHelper.MethodExecutionContext
as the first argument, the remaining arguments areValue
arguments 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.Logger
log
-
Method Summary
All Methods Instance Methods Default Methods Modifier and Type Method Description default MethodResult
init(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)
Execute a constructor call for the modeled class.default MethodResult
invoke(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)
Execute an instance method on the modeled object.default MethodResult
invokeStatic(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:Model
Execute 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:
init
in 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:Model
Execute 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:Model
Execute 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:
invokeStatic
in 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.
-
-