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/06/02 09:47:16 UTC

[isis] branch master updated: ISIS-3049: ObjectMemento: purge asPseudoBookmark() and asBookmarkIfSupported()

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 79b5e4542d ISIS-3049: ObjectMemento: purge asPseudoBookmark() and asBookmarkIfSupported()
79b5e4542d is described below

commit 79b5e4542d4243e38c55e5ff9f988c81f6a11e5c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jun 2 11:47:10 2022 +0200

    ISIS-3049: ObjectMemento: purge asPseudoBookmark() and
    asBookmarkIfSupported()
---
 .../objectmanager/memento/ObjectMemento.java       | 20 --------------
 .../memento/ObjectMementoCollection.java           | 10 -------
 .../memento/ObjectMementoForEmpty.java             | 10 -------
 .../memento/ObjectMementoServiceDefault.java       | 10 -------
 .../runtimeservices/memento/_ObjectMemento.java    | 32 ++++++++++++++++++----
 .../wicket/model/models/ManagedObjectModel.java    |  2 +-
 .../ui/components/widgets/select2/Select2.java     |  2 +-
 .../ObjectAdapterMementoProviderAbstract.java      |  2 +-
 ...tAdapterMementoProviderForValueChoicesTest.java |  2 +-
 9 files changed, 31 insertions(+), 59 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMemento.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMemento.java
index 5f34845044..81923c3749 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMemento.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMemento.java
@@ -25,9 +25,7 @@ import java.util.Optional;
 
 import org.apache.isis.applib.id.HasLogicalType;
 import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkHolder;
-import org.apache.isis.commons.collections.Cardinality;
 import org.apache.isis.commons.internal.collections._Lists;
 
 /**
@@ -35,24 +33,6 @@ import org.apache.isis.commons.internal.collections._Lists;
  */
 public interface ObjectMemento extends BookmarkHolder, HasLogicalType, Serializable {
 
-    /**
-     * In a strict sense, bookmarks are only available for viewmodels, entities and managed beans,
-     * not for values or enums. However, the {@link Bookmark} as an immutable value,
-     * is also perfectly suitable to represent an enum value or any value type.
-     * @apiNote this is an intermediate refactoring step,
-     * possibly providing a way of getting rid of {@link ObjectMemento} entirely,
-     * with {@link Bookmark} being the replacement
-     */
-    Bookmark asPseudoBookmark();
-
-    /**
-     * Returns a bookmark only if
-     * {@link org.apache.isis.viewer.wicket.viewer.services.mementos.ObjectMementoWkt.RecreateStrategy#LOOKUP} and
-     * {@link #getCardinality() sort} is {@link Cardinality#SCALAR scalar}.
-     * Returns {@code null} otherwise.
-     */
-    Bookmark asBookmarkIfSupported();
-
     // -- FACTORIES
 
     static ObjectMemento pack(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoCollection.java
index d265af118b..9ab5a8eb67 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoCollection.java
@@ -48,16 +48,6 @@ public final class ObjectMementoCollection implements ObjectMemento {
         throw _Exceptions.notImplemented(); // please unwrap at call-site
     }
 
-    @Override
-    public Bookmark asPseudoBookmark() {
-        throw _Exceptions.notImplemented(); // please unwrap at call-site
-    }
-
-    @Override
-    public Bookmark asBookmarkIfSupported() {
-        throw _Exceptions.notImplemented(); // please unwrap at call-site
-    }
-
     public ArrayList<ObjectMemento> unwrapList() {
         return getContainer();
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoForEmpty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoForEmpty.java
index 70cb745a00..20330e73bc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoForEmpty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoForEmpty.java
@@ -35,17 +35,7 @@ public class ObjectMementoForEmpty implements ObjectMemento {
 
     @Override
     public Bookmark bookmark() {
-        return asPseudoBookmark();
-    }
-
-    @Override
-    public Bookmark asPseudoBookmark() {
         return Bookmark.empty(logicalType);
     }
 
-    @Override
-    public Bookmark asBookmarkIfSupported() {
-        return null;
-    }
-
 }
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/ObjectMementoServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/ObjectMementoServiceDefault.java
index c8916f7caf..b08297a340 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/ObjectMementoServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/ObjectMementoServiceDefault.java
@@ -170,16 +170,6 @@ public class ObjectMementoServiceDefault implements ObjectMementoService {
 
         @Override
         public Bookmark bookmark() {
-            return delegate.asPseudoBookmark();
-        }
-
-        @Override
-        public Bookmark asPseudoBookmark() {
-            return delegate.asPseudoBookmark();
-        }
-
-        @Override
-        public Bookmark asBookmarkIfSupported() {
             return delegate.asBookmark();
         }
 
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
index eb6f709440..4f5e9d34e0 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
@@ -39,6 +39,7 @@ import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueSerializer.Format;
+import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemento;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -496,11 +497,36 @@ final class _ObjectMemento implements HasLogicalType, Serializable {
         return cardinality;
     }
 
-    Bookmark asBookmark() {
+    public Bookmark asBookmark() {
+        val bookmark = asStrictBookmark();
+        return bookmark!=null
+                ? bookmark
+                : asPseudoBookmark();
+    }
+
+    /**
+     * Returns a bookmark only if
+     * {@link org.apache.isis.viewer.wicket.viewer.services.mementos.ObjectMementoWkt.RecreateStrategy#LOOKUP} and
+     * {@link #getCardinality() sort} is {@link Cardinality#SCALAR scalar}.
+     * Returns {@code null} otherwise.
+     */
+    private Bookmark asStrictBookmark() {
         ensureScalar();
         return bookmark;
     }
 
+    /**
+     * In a strict sense, bookmarks are only available for viewmodels, entities and managed beans,
+     * not for values or enums. However, the {@link Bookmark} as an immutable value,
+     * is also perfectly suitable to represent an enum value or any value type.
+     * @apiNote this is an intermediate refactoring step,
+     * possibly providing a way of getting rid of {@link ObjectMemento} entirely,
+     * with {@link Bookmark} being the replacement
+     */
+    private Bookmark asPseudoBookmark() {
+        return cardinality.asPseudoBookmark(this);
+    }
+
     /**
      * Lazily looks up {@link ManagedObject} if required.
      *
@@ -528,10 +554,6 @@ final class _ObjectMemento implements HasLogicalType, Serializable {
         return cardinality.asAdapter(this, mmc);
     }
 
-    public Bookmark asPseudoBookmark() {
-        return cardinality.asPseudoBookmark(this);
-    }
-
     @Override
     public int hashCode() {
         return cardinality.hashCode(this);
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java
index 6ba17abe83..b976b08069 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java
@@ -108,7 +108,7 @@ extends ModelAbstract<ManagedObject> {
 
     public final Bookmark asBookmarkIfSupported() {
         return memento!=null
-                ? memento.asBookmarkIfSupported()
+                ? memento.bookmark()
                 : null;
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2.java
index 038e39196f..cc6491b24c 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2.java
@@ -170,7 +170,7 @@ implements
         return LambdaModel.<String>of(()->{
             val memento = memento();
             return memento != null
-                    ? memento.asPseudoBookmark().getIdentifier()
+                    ? memento.bookmark().getIdentifier()
                     : null;
         });
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
index 656f730441..706c6f83ad 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
@@ -76,7 +76,7 @@ extends ChoiceProvider<ObjectMemento> {
         if (choiceMemento == null) {
             return PlaceholderLiteral.NULL_REPRESENTATION.asText(this::translate);
         }
-        return choiceMemento.asPseudoBookmark().stringify();
+        return choiceMemento.bookmark().stringify();
     }
 
     @Override
diff --git a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ObjectAdapterMementoProviderForValueChoicesTest.java b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ObjectAdapterMementoProviderForValueChoicesTest.java
index 029055d8ef..77c6a41196 100644
--- a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ObjectAdapterMementoProviderForValueChoicesTest.java
+++ b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ObjectAdapterMementoProviderForValueChoicesTest.java
@@ -114,7 +114,7 @@ public class ObjectAdapterMementoProviderForValueChoicesTest {
             allowing(mock).getLogicalType();
             will(returnValue(logicalType));
 
-            allowing(mock).asPseudoBookmark();
+            allowing(mock).bookmark();
             will(returnValue(Bookmark.forLogicalTypeAndIdentifier(logicalType, id)));
         }});
         return mock;