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 caf46ec34b ISIS-3167: some ManagedObject hierarchy cleanups
caf46ec34b is described below

commit caf46ec34bb56d38570393e0b745540b90c1d749
Author: Andi Huber <[email protected]>
AuthorDate: Sat Aug 27 16:13:13 2022 +0200

    ISIS-3167: some ManagedObject hierarchy cleanups
---
 .../isis/core/metamodel/object/ManagedObject.java  |  2 +-
 .../isis/core/metamodel/object/ManagedObjects.java |  1 -
 .../metamodel/object/_ManagedObjectPacked.java     |  7 ++++---
 ...tAbstract.java => _ManagedObjectSpecified.java} | 12 ++----------
 .../object/_ManagedObjectUnspecified.java          | 22 +++++++++++++++++++++-
 .../object/_ManagedObjectWithBookmark.java         |  2 +-
 .../specimpl/ObjectActionParameterAbstract.java    |  3 ++-
 7 files changed, 31 insertions(+), 18 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObject.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObject.java
index 2f9b070143..6a9858336f 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObject.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObject.java
@@ -205,7 +205,7 @@ public interface ManagedObject extends HasMetaModelContext {
 
     /** has no ObjectSpecification and no value (pojo) */
     static ManagedObject unspecified() {
-        return _ManagedObjectAbstract.UNSPECIFIED;
+        return _ManagedObjectUnspecified.INSTANCE;
     }
 
     /** has an ObjectSpecification, but no value (pojo) */
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObjects.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObjects.java
index 98e5f6530a..eff4348342 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObjects.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/ManagedObjects.java
@@ -231,7 +231,6 @@ public final class ManagedObjects {
     public static ManagedObject pack(
             final ObjectSpecification elementSpec,
             final Can<ManagedObject> nonScalar) {
-
         return PackedManagedObject.pack(elementSpec, nonScalar);
     }
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectPacked.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectPacked.java
index 8bba1b6e56..d0fe434271 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectPacked.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectPacked.java
@@ -30,17 +30,18 @@ import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
+import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
 
 @RequiredArgsConstructor
 @ToString
 final class _ManagedObjectPacked
-extends _ManagedObjectAbstract
+extends _ManagedObjectSpecified
 implements PackedManagedObject {
 
-    final ObjectSpecification elementSpec;
-    final Can<ManagedObject> nonScalar;
+    final @NonNull ObjectSpecification elementSpec;
+    final @NonNull Can<ManagedObject> nonScalar;
 
     @Override
     public ObjectSpecification getSpecification() {
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectSpecified.java
similarity index 75%
rename from 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectAbstract.java
rename to 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectSpecified.java
index f6cd5842d1..8536725ee7 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectSpecified.java
@@ -20,22 +20,14 @@ package org.apache.isis.core.metamodel.object;
 
 import java.util.function.Supplier;
 
-import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
-abstract class _ManagedObjectAbstract
+abstract class _ManagedObjectSpecified
 implements ManagedObject {
 
-    static final ManagedObject UNSPECIFIED = new _ManagedObjectUnspecified();
-
     @Override
     public final MetaModelContext getMetaModelContext() {
-        return ManagedObjects.spec(this)
-                .map(ObjectSpecification::getMetaModelContext)
-                .orElseThrow(()->_Exceptions
-                        .illegalArgument("Can only retrieve MetaModelContext 
from ManagedObjects "
-                                + "that have an ObjectSpecification."));
+        return getSpecification().getMetaModelContext();
     }
 
     @Override
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectUnspecified.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectUnspecified.java
index d74e9f5cbf..49d6c014b1 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectUnspecified.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectUnspecified.java
@@ -25,9 +25,13 @@ import org.springframework.lang.Nullable;
 
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
-final class _ManagedObjectUnspecified extends _ManagedObjectAbstract {
+final class _ManagedObjectUnspecified
+implements ManagedObject {
+
+    static final ManagedObject INSTANCE = new _ManagedObjectUnspecified();
 
     @Override
     public ObjectSpecification getSpecification() {
@@ -58,4 +62,20 @@ final class _ManagedObjectUnspecified extends 
_ManagedObjectAbstract {
     public void refreshViewmodel(final @Nullable Supplier<Bookmark> 
bookmarkSupplier) {
     }
 
+    @Override
+    public MetaModelContext getMetaModelContext() {
+        throw _Exceptions
+                .illegalArgument("Can only retrieve MetaModelContext from 
ManagedObjects "
+                        + "that have an ObjectSpecification.");
+    }
+
+    @Override
+    public Supplier<ManagedObject> asSupplier() {
+        return ()->this;
+    }
+
+    @Override
+    public void assertSpecIsInSyncWithPojo() {
+    }
+
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithBookmark.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithBookmark.java
index 50e0ddd12f..8117a44fbc 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithBookmark.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithBookmark.java
@@ -37,7 +37,7 @@ import lombok.NonNull;
 import lombok.val;
 
 abstract class _ManagedObjectWithBookmark
-extends _ManagedObjectAbstract {
+extends _ManagedObjectSpecified {
 
     protected final _Lazy<Optional<Bookmark>> bookmarkLazy =
             _Lazy.threadSafe(()->bookmark(this));
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 72137a4f62..b6259542a2 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -46,6 +46,7 @@ import 
org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import 
org.apache.isis.core.metamodel.interactions.managed.ParameterNegotiationModel;
 import org.apache.isis.core.metamodel.object.ManagedObject;
 import org.apache.isis.core.metamodel.object.ManagedObjects;
+import org.apache.isis.core.metamodel.object.PackedManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
@@ -245,7 +246,7 @@ implements
             // post processing each entry
             .map(obj->ManagedObjects.emptyToDefault(paramSpec, !isOptional(), 
obj));
             // pack up
-            val packed = ManagedObjects.pack(paramSpec, nonScalarDefaults);
+            val packed = PackedManagedObject.pack(paramSpec, 
nonScalarDefaults);
             return packed;
         }
 

Reply via email to