Hi folks,

... and happy holidays!

We currently have the configuration property
"isis.reflector.explicitAnnotations.action" which if specified
requires @Action to be added as an annotation for all public methods that
don't represent properties/collections or supporting methods.  If this is
enabled then there's generally no need to annotate public methods that
aren't meant to be in the metamodel with the @Programmatic annotation.

Andi and I have just been discussing this (off-list) and wondering if we
should extend this in v2.  Our idea is maybe to allow this to be specified
at the class level, and to also have three levels rather than two:

- explicit : all properties, collections and actions must be annotated
- actions : actions must be annotated, but properties and collections need
not.  This is the behavior if the above configuration property is specified.
- implicit : no annotations are required.  This is the current default

So, we were thinking to add a value to @DomainObject, eg

@DomainObject(metamodelDiscoveryStrategy = EXPLICIT | ACTIONS | IMPLICIT |
AS_CONFIGURED)

where "AS_CONFIGURED" would read a new configuration property that would
take these three values (replacing the existing
"isis.reflector.explicitAnnotations.action".

Two questions:

1. is the idea of a new level to explicitly annotate everything (properties
and collections as well as actions) useful ?
2. is there a need to configure this on a class-by-class basis, or is a
global configuration property sufficient?

Thx
Dan

Reply via email to