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

ahuber pushed a commit to branch 3309-demo.obj.layout
in repository https://gitbox.apache.org/repos/asf/isis.git

commit ad4b72f143999349da89f5c4350b23f55ad8fbd5
Author: andi-huber <[email protected]>
AuthorDate: Thu Jan 5 10:18:27 2023 +0100

    ISIS-3318: simplified internal use of BookmarkPolicy
---
 .../causeway/applib/annotation/BookmarkPolicy.java   |  7 +++++--
 .../apache/causeway/core/metamodel/util/Facets.java  |  6 ++----
 .../commons/model/action/HasManagedAction.java       |  8 +++-----
 .../viewer/wicket/model/models/ActionModelImpl.java  |  5 +++--
 .../viewer/wicket/model/models/BookmarkTreeNode.java | 20 +++++---------------
 .../wicket/model/models/BookmarkableModel.java       |  4 +++-
 .../wicket/model/models/BookmarkedPagesModel.java    |  2 +-
 .../wicket/model/models/ManagedObjectModel.java      | 13 -------------
 .../interaction/HasBookmarkedOwnerAbstract.java      | 13 +++----------
 9 files changed, 25 insertions(+), 53 deletions(-)

diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/BookmarkPolicy.java
 
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/BookmarkPolicy.java
index 2b96b65547..cc3e058bdb 100644
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/annotation/BookmarkPolicy.java
+++ 
b/api/applib/src/main/java/org/apache/causeway/applib/annotation/BookmarkPolicy.java
@@ -22,7 +22,7 @@ package org.apache.causeway.applib.annotation;
 import javax.xml.bind.annotation.XmlType;
 
 /**
- * 
+ *
  * @since 1.x {@index}
  */
 @XmlType(
@@ -49,6 +49,9 @@ public enum BookmarkPolicy {
      * Ignore the value provided by this annotation (meaning that the 
framework will keep searching, in meta
      * annotations or superclasses/interfaces).
      */
-    NOT_SPECIFIED
+    NOT_SPECIFIED;
+
+    public boolean isRoot() {return this == AS_ROOT;}
+    public boolean isChild() {return this == AS_CHILD;}
 
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
index 2d5ecf42ae..7d81013a04 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java
@@ -114,10 +114,8 @@ public final class Facets {
         .map(BookmarkPolicyFacet::value);
     }
 
-    public Predicate<FacetHolder> bookmarkPolicyMatches(final 
Predicate<BookmarkPolicy> matcher) {
-        return facetHolder->Facets.bookmarkPolicy(facetHolder)
-        .map(matcher::test)
-        .orElse(false);
+    public BookmarkPolicy bookmarkPolicyOrElseNotSpecified(final @Nullable 
FacetHolder facetHolder) {
+        return 
bookmarkPolicy(facetHolder).orElse(BookmarkPolicy.NOT_SPECIFIED);
     }
 
     public Optional<BSGrid> bootstrapGrid(
diff --git 
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
 
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
index 64b5845282..afb683aef5 100644
--- 
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
+++ 
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/action/HasManagedAction.java
@@ -44,9 +44,9 @@ public interface HasManagedAction {
 
     /**
      * Metamodel of the represented {@link ManagedAction}.
-     * @apiNote implementing classes may provide this more directly 
+     * @apiNote implementing classes may provide this more directly
      *  than having to conjure up a ManagedAction only to provide its 
metamodel;
-     *  in other words: this is not strictly required but provides 
optimization opportunities   
+     *  in other words: this is not strictly required but provides 
optimization opportunities
      */
     ObjectAction getAction();
 
@@ -82,10 +82,8 @@ public interface HasManagedAction {
      */
     default boolean isBookmarkable() {
         val action = getAction();
-
         return action.getSemantics().isSafeInNature()
-                && Facets.bookmarkPolicyMatches(BookmarkPolicy.AS_ROOT::equals)
-                    .test(action);
+                && Facets.bookmarkPolicyOrElseNotSpecified(action).isRoot();
     }
 
     default Identifier getFeatureIdentifier() {
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionModelImpl.java
 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionModelImpl.java
index 60ae4ab273..6214ac85a7 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionModelImpl.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ActionModelImpl.java
@@ -25,6 +25,7 @@ import org.apache.wicket.model.ChainingModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 import org.apache.causeway.applib.Identifier;
+import org.apache.causeway.applib.annotation.BookmarkPolicy;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.core.metamodel.context.MetaModelContext;
@@ -114,8 +115,8 @@ implements ActionModel {
     // --
 
     @Override
-    public boolean hasAsRootPolicy() {
-        return true;
+    public BookmarkPolicy getBookmarkPolicy() {
+        return BookmarkPolicy.AS_ROOT;
     }
 
     @Override
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkTreeNode.java
 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkTreeNode.java
index b0de7ac283..10eee2716e 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkTreeNode.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkTreeNode.java
@@ -43,13 +43,14 @@ public class BookmarkTreeNode implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private final List<BookmarkTreeNode> children = _Lists.newArrayList();
-    private final int depth;
+    @Getter private final int depth;
 
     @Getter private final Bookmark oidNoVer; //TODO rename field, versions 
have been removed
     @Getter private final String oidNoVerStr; //TODO rename field, versions 
have been removed
 
     private String title;
-    private PageParameters pageParameters;
+
+    @Getter private PageParameters pageParameters;
 
     public static BookmarkTreeNode newRoot(
             final BookmarkableModel bookmarkableModel) {
@@ -133,7 +134,7 @@ public class BookmarkTreeNode implements Serializable {
         }
 
         // and also match recursively down to all children and grand-children.
-        if(candidateEntityModel.hasAsChildPolicy()) {
+        if(candidateEntityModel.getBookmarkPolicy().isChild()) {
             for(BookmarkTreeNode childNode: this.getChildren()) {
                 inGraph = childNode.matches(candidateEntityModel) || inGraph; 
// evaluate each
             }
@@ -219,17 +220,6 @@ public class BookmarkTreeNode implements Serializable {
         }
     }
 
-    public int getDepth() {
-        return depth;
-    }
-
-
-    // //////////////////////////////////////
-
-    public PageParameters getPageParameters() {
-        return pageParameters;
-    }
-
     // //////////////////////////////////////
 
     public static @Nullable Bookmark bookmarkFrom(final PageParameters 
pageParameters) {
@@ -241,7 +231,7 @@ public class BookmarkTreeNode implements Serializable {
         }
     }
 
-    public static String oidStrFrom(final BookmarkableModel 
candidateBookmarkableModel) {
+    public static @Nullable String oidStrFrom(final BookmarkableModel 
candidateBookmarkableModel) {
         final Bookmark bookmark = 
bookmarkFrom(candidateBookmarkableModel.getPageParametersWithoutUiHints());
         return bookmark != null
                 ? bookmark.stringify()
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkableModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkableModel.java
index 1b72bd4e19..c26fdb997c 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkableModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkableModel.java
@@ -20,6 +20,7 @@ package org.apache.causeway.viewer.wicket.model.models;
 
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
+import org.apache.causeway.applib.annotation.BookmarkPolicy;
 import org.apache.causeway.viewer.commons.model.mixin.HasTitle;
 
 public interface BookmarkableModel
@@ -32,6 +33,7 @@ extends HasTitle {
 
     public abstract PageParameters getPageParametersWithoutUiHints();
 
-    public abstract boolean hasAsRootPolicy();
+    /** governs how to populate the BookmarkPanel in the UI */
+    public abstract BookmarkPolicy getBookmarkPolicy();
 
 }
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkedPagesModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkedPagesModel.java
index 722a5929a0..c4737a424c 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkedPagesModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkedPagesModel.java
@@ -66,7 +66,7 @@ public class BookmarkedPagesModel extends 
ModelAbstract<List<BookmarkTreeNode>>
             rootNodes.add(0, rootNode);
             current = candidatePP;
         } else {
-            if (bookmarkableModel.hasAsRootPolicy()) {
+            if (bookmarkableModel.getBookmarkPolicy().isRoot()) {
                 rootNode = BookmarkTreeNode.newRoot(bookmarkableModel);
                 rootNodes.add(0, rootNode);
                 current = candidatePP;
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ManagedObjectModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ManagedObjectModel.java
index 0245081261..e8501adee1 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ManagedObjectModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ManagedObjectModel.java
@@ -23,7 +23,6 @@ import java.util.Optional;
 
 import org.springframework.lang.Nullable;
 
-import org.apache.causeway.applib.annotation.BookmarkPolicy;
 import org.apache.causeway.applib.id.LogicalType;
 import org.apache.causeway.applib.services.bookmark.Bookmark;
 import org.apache.causeway.core.metamodel.context.MetaModelContext;
@@ -32,7 +31,6 @@ import 
org.apache.causeway.core.metamodel.object.ManagedObjects;
 import org.apache.causeway.core.metamodel.object.PackedManagedObject;
 import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
-import org.apache.causeway.core.metamodel.util.Facets;
 
 import lombok.NonNull;
 import lombok.Synchronized;
@@ -138,17 +136,6 @@ extends ModelAbstract<ManagedObject> {
         return elementTypeSpec;
     }
 
-
-    public final boolean hasAsRootPolicy() {
-        return Facets.bookmarkPolicyMatches(BookmarkPolicy.AS_ROOT::equals)
-                .test(getTypeOfSpecification());
-    }
-
-    public final boolean hasAsChildPolicy() {
-        return Facets.bookmarkPolicyMatches(BookmarkPolicy.AS_CHILD::equals)
-                .test(getTypeOfSpecification());
-    }
-
     public boolean isEmpty() {
         return memento == null;
     }
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/interaction/HasBookmarkedOwnerAbstract.java
 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/interaction/HasBookmarkedOwnerAbstract.java
index cc1534f218..e6875f171c 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/interaction/HasBookmarkedOwnerAbstract.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/interaction/HasBookmarkedOwnerAbstract.java
@@ -51,16 +51,9 @@ implements
         return bookmarkedObject;
     }
 
-    // -- SHORTCUTS
-
-    public final boolean hasAsRootPolicy() {
-        return Facets.bookmarkPolicyMatches(BookmarkPolicy.AS_ROOT::equals)
-                .test(getTypeOfSpecification());
-    }
-
-    public final boolean hasAsChildPolicy() {
-        return Facets.bookmarkPolicyMatches(BookmarkPolicy.AS_CHILD::equals)
-                .test(getTypeOfSpecification());
+    /** governs how to populate the BookmarkPanel in the UI */
+    public final BookmarkPolicy getBookmarkPolicy() {
+        return 
Facets.bookmarkPolicyOrElseNotSpecified(getTypeOfSpecification());
     }
 
     public final ObjectSpecification getTypeOfSpecification() {

Reply via email to