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() {
