@Retention(RUNTIME) @Target(METHOD) @Incubating public @interface Model
RuleSource
method rule carrying this annotation creates a new top level element in the model space.
The method must advertise a name and type for the model element.
The name is defined either by the name of the method, or the value()
of this annotation.
The type is defined differently depending on whether the new element is Managed
or not.
If the element is to be of a managed type, the method must return void
and receive the newly created instance as the first parameter.
All other parameters are considered inputs.
It is an error for a @Model
rule to return void
and specify a non-managed type as the first parameter.
It is an error for a @Model
rule to return void
and for the first parameter to be annotated with Path
.
It is an error for a @Model
rule to specify a managed type as the return type.
If the element is to be of a non-managed type, the method must return the newly created instance.
All parameters are considered inputs.
Please see RuleSource
for more information on method rules.
String value
If the value is the empty string, the exact name of the annotated method will be used.
The value must:
This restriction also applies when the name is being derived from the method name.