You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/01/19 15:38:21 UTC

[isis] branch master updated: ISIS-2944: java-doc: fully specify introspection policies

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 2df1168  ISIS-2944: java-doc: fully specify introspection policies
2df1168 is described below

commit 2df1168db2b550f7a01173b6a61ee557e4f03642
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jan 19 16:35:35 2022 +0100

    ISIS-2944: java-doc: fully specify introspection policies
    
    - how to introspect support methods
    - how to handle/detect orphans
---
 .../isis/applib/annotation/Introspection.java      | 26 ++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/Introspection.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/Introspection.java
index fb7b223..5699d2a 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Introspection.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Introspection.java
@@ -52,18 +52,44 @@ public enum Introspection {
     /**
      * Introspect public and non-public members, while
      * presence of at least one appropriate domain annotation is enforced.
+     * <p>
+     * All methods intended to be part of the meta-model
+     * (whether representing a member or a supporting method) must be annotated.
+     * Members using one of {@link Action}, {@link Property}, {@link Collection},
+     * while supporting methods with {@link Domain.Include}
+     * (usually as a meta-annotation on {@link MemberSupport}).
+     * However, the methods can have any visibility, including private.
      */
     ENCAPSULATION_ENABLED,
 
     /**
      * Introspect public members only, while
      * presence of at least one appropriate domain annotation is enforced.
+     * <p>
+     * All public methods intended to represent members must be annotated (or meta-annotated) with
+     * {@link Action}, {@link Property} or {@link Collection}.
+     * <p>
+     * Any non-excluded public methods with a supporting method prefix
+     * do not need to be annotated and
+     * are automatically associated with their corresponding member method.
+     * If no corresponding member method can be found, meta-model validation will
+     * fail with an 'orphaned member support' method violation.
      */
     ANNOTATION_REQUIRED,
 
     /**
      * Introspect public members only, while
      * presence of domain annotations is optional.
+     * <p>
+     * All public methods are considered as part of the meta-model,
+     * unless explicitly excluded using {@link Domain.Exclude}
+     * (usually as a meta-annotation on {@link Programmatic}).
+     * <p>
+     * Any non-excluded public methods with a supporting method prefix
+     * do not need to be annotated and
+     * are automatically associated with their corresponding member method.
+     * If no corresponding member method can be found, meta-model validation will
+     * fail with an 'orphaned member support' method violation.
      */
     ANNOTATION_OPTIONAL,