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 bde480bb66 ISIS-3167: prepare for new ManagedObject factories
bde480bb66 is described below

commit bde480bb6646e6be1f3e47c40ef78ae7d9cae7c0
Author: Andi Huber <[email protected]>
AuthorDate: Mon Aug 29 06:22:01 2022 +0200

    ISIS-3167: prepare for new ManagedObject factories
---
 .../isis/core/metamodel/object/ManagedObject.java  | 120 ++++++++++++++++++---
 .../isis/core/metamodel/object/ManagedObjects.java |   6 --
 .../core/metamodel/object/PackedManagedObject.java |   7 --
 .../metamodel/object/_ManagedObjectPacked.java     |  15 +--
 .../metamodel/object/_ManagedObjectSpecified.java  |  13 +--
 .../object/_ManagedObjectWithBookmark.java         |   4 +
 .../object/_ManagedObjectWithEagerSpec.java        |  15 +--
 .../object/_ManagedObjectWithLazySpec.java         |   3 +-
 .../metamodel/objectmanager/ObjectManager.java     |   3 +-
 .../schema/SchemaValueMarshallerAbstract.java      |   7 +-
 .../specimpl/ObjectActionParameterAbstract.java    |   3 +-
 .../title/TitleAnnotationFacetFactoryTest.java     |   9 ++
 .../memento/ObjectMementoServiceDefault.java       |   2 +-
 13 files changed, 152 insertions(+), 55 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 172f71ec2b..66c9375153 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
@@ -39,6 +39,7 @@ import lombok.Getter;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
+import lombok.extern.log4j.Log4j2;
 
 /**
  * Represents an instance of some element of the meta-model managed by the 
framework,
@@ -55,6 +56,7 @@ public interface ManagedObject extends HasMetaModelContext {
      */
     @Getter
     @RequiredArgsConstructor
+    @Log4j2
     enum Specialization {
         /**
          * <h1>Contract</h1><ul>
@@ -232,6 +234,34 @@ public interface ManagedObject extends HasMetaModelContext 
{
          */
         public boolean isPacked() { return this == PACKED; }
 
+        public static Specialization inferFrom(
+                final @Nullable ObjectSpecification spec,
+                final @Nullable Object pojo) {
+            if(spec==null) {
+                return UNSPECIFIED;
+            }
+            if(spec.isNonScalar()) {
+                return PACKED;
+            }
+            if(pojo==null) {
+                return EMPTY;
+            }
+            if(spec.isValue()) {
+                return VALUE;
+            }
+            if(spec.isInjectable()) {
+                return SERVICE;
+            }
+            if(spec.isViewModel()) {
+                return VIEWMODEL;
+            }
+            if(spec.isEntity()) {
+                return ENTITY;
+            }
+            log.warn("failed specialization attempt for {}", spec);
+            return UNSPECIFIED;
+        }
+
     }
 
     /**
@@ -332,10 +362,79 @@ public interface ManagedObject extends 
HasMetaModelContext {
 
     // -- FACTORIES
 
-    public static ManagedObject notBookmarked(
+    /**
+     * Factory for Specialization#UNSPECIFIED.
+     * @see Specialization.TypePolicy#NO_TYPE
+     * @see Specialization.BookmarkPolicy#NO_BOOKMARK
+     * @see Specialization.PojoPolicy#NO_POJO
+     */
+    static ManagedObject unspecified() {
+        return _ManagedObjectUnspecified.INSTANCE;
+    }
+    /**
+     * EMPTY
+     * @see Specialization.TypePolicy#ABSTRACT_TYPE_ALLOWED
+     * @see Specialization.BookmarkPolicy#NO_BOOKMARK
+     * @see Specialization.PojoPolicy#NO_POJO
+     */
+    static ManagedObject empty(final @NonNull ObjectSpecification spec) {
+        return new _ManagedObjectWithEagerSpec(spec, null);
+    }
+    /**
+     * VALUE
+     * @see Specialization.TypePolicy#EXACT_TYPE_REQUIRED
+     * @see Specialization.BookmarkPolicy#IMMUTABLE
+     * @see Specialization.PojoPolicy#IMMUTABLE
+     */
+    static ManagedObject value() {
+        return null; //FIXME
+    }
+    /**
+     * SERVICE
+     * @see Specialization.TypePolicy#EXACT_TYPE_REQUIRED
+     * @see Specialization.BookmarkPolicy#IMMUTABLE
+     * @see Specialization.PojoPolicy#IMMUTABLE
+     */
+    static ManagedObject service() {
+        return null; //FIXME
+    }
+    /**
+     * VIEWMODEL
+     * @see Specialization.TypePolicy#EXACT_TYPE_REQUIRED
+     * @see Specialization.BookmarkPolicy#REFRESHABLE
+     * @see Specialization.PojoPolicy#STATEFUL
+     */
+    static ManagedObject viewmodel() {
+        return null; //FIXME
+    }
+    /**
+     * ENTITY
+     * @see Specialization.TypePolicy#EXACT_TYPE_REQUIRED
+     * @see Specialization.BookmarkPolicy#IMMUTABLE
+     * @see Specialization.PojoPolicy#REFETCHABLE
+     */
+    static ManagedObject entity() {
+        return null; //FIXME
+    }
+    /**
+     * PACKED
+     * @see Specialization.TypePolicy#ABSTRACT_TYPE_ALLOWED
+     * @see Specialization.BookmarkPolicy#NO_BOOKMARK
+     * @see Specialization.PojoPolicy#PACKED
+     */
+    static PackedManagedObject packed(
+            final @NonNull ObjectSpecification elementSpec,
+            final Can<ManagedObject> nonScalar) {
+        return new _ManagedObjectPacked(elementSpec, nonScalar);
+    }
+
+    // -- FACTORIES LEGACY
+
+    @Deprecated
+    static ManagedObject notBookmarked(
             final ObjectSpecification spec,
             final Object pojo) {
-        return _ManagedObjectWithEagerSpec.of(spec, pojo);
+        return new _ManagedObjectWithEagerSpec(spec, pojo);
     }
 
     /**
@@ -344,7 +443,8 @@ public interface ManagedObject extends HasMetaModelContext {
      * @param spec
      * @param pojo - might also be a collection of pojos (null-able)
      */
-    public static ManagedObject of(
+    @Deprecated
+    static ManagedObject of(
             final @NonNull ObjectSpecification spec,
             final @Nullable Object pojo) {
 
@@ -360,7 +460,8 @@ public interface ManagedObject extends HasMetaModelContext {
     /**
      * Optimized for cases, when the pojo's specification and bookmark are 
already available.
      */
-    public static ManagedObject bookmarked(
+    @Deprecated
+    static ManagedObject bookmarked(
             final @NonNull ObjectSpecification spec,
             final @NonNull Object pojo,
             final @NonNull Bookmark bookmark) {
@@ -386,7 +487,8 @@ public interface ManagedObject extends HasMetaModelContext {
      * @param specLoader
      * @param pojo
      */
-    public static ManagedObject lazy(
+    @Deprecated
+    static ManagedObject lazy(
             final SpecificationLoader specLoader,
             final Object pojo) {
 
@@ -400,14 +502,6 @@ public interface ManagedObject extends HasMetaModelContext 
{
         return adapter;
     }
 
-    /** has no ObjectSpecification and no value (pojo) */
-    static ManagedObject unspecified() {
-        return _ManagedObjectUnspecified.INSTANCE;
-    }
 
-    /** has an ObjectSpecification, but no value (pojo) */
-    static ManagedObject empty(final @NonNull ObjectSpecification spec) {
-        return _ManagedObjectWithEagerSpec.of(spec, null);
-    }
 
 }
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 eff4348342..af9fed768f 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
@@ -228,12 +228,6 @@ public final class ManagedObjects {
 
     // -- PACKING
 
-    public static ManagedObject pack(
-            final ObjectSpecification elementSpec,
-            final Can<ManagedObject> nonScalar) {
-        return PackedManagedObject.pack(elementSpec, nonScalar);
-    }
-
     public static Can<ManagedObject> unpack(
             final ObjectSpecification elementSpec, // no longer req.
             final ManagedObject nonScalar) {
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/PackedManagedObject.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/PackedManagedObject.java
index 46c3d57574..0821945fb4 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/PackedManagedObject.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/PackedManagedObject.java
@@ -19,7 +19,6 @@
 package org.apache.isis.core.metamodel.object;
 
 import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 /**
  * 'Collection' of {@link ManagedObject}s.
@@ -28,12 +27,6 @@ import 
org.apache.isis.core.metamodel.spec.ObjectSpecification;
 public interface PackedManagedObject
 extends ManagedObject {
 
-    public static ManagedObject pack(
-            final ObjectSpecification elementSpec,
-            final Can<ManagedObject> nonScalar) {
-        return new _ManagedObjectPacked(elementSpec, nonScalar);
-    }
-
     Can<ManagedObject> unpack();
 
 }
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 adbc6cf7f9..a62ec2aab4 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
@@ -31,27 +31,28 @@ 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;
 
 /**
  * (package private) specialization corresponding to {@link 
Specialization#PACKED}
  * @see ManagedObject.Specialization#PACKED
  */
-@RequiredArgsConstructor
 @ToString
 final class _ManagedObjectPacked
 extends _ManagedObjectSpecified
 implements PackedManagedObject {
 
+    public _ManagedObjectPacked(
+            final ObjectSpecification elementSpec,
+            final Can<ManagedObject> nonScalar) {
+        super(Specialization.PACKED);
+        this.elementSpec = elementSpec;
+        this.nonScalar = nonScalar;
+    }
+
     final @NonNull ObjectSpecification elementSpec;
     final @NonNull Can<ManagedObject> nonScalar;
 
-    @Override
-    public Specialization getSpecialization() {
-        return Specialization.PACKED;
-    }
-
     @Override
     public ObjectSpecification getSpecification() {
         return elementSpec;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectSpecified.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectSpecified.java
index 49d2872b8e..2db5880d06 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectSpecified.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectSpecified.java
@@ -20,17 +20,18 @@ 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 lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.experimental.Accessors;
+
+@RequiredArgsConstructor
 abstract class _ManagedObjectSpecified
 implements ManagedObject {
 
-    @Override
-    public Specialization getSpecialization() {
-        //FIXME[ISIS-3167] implement for various sub types
-        throw _Exceptions.notImplemented();
-    }
+    @Getter(onMethod_ = {@Override}) @Accessors(makeFinal = true)
+    private final Specialization specialization;
 
     @Override
     public final MetaModelContext getMetaModelContext() {
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 8117a44fbc..1955374cbd 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
@@ -42,6 +42,10 @@ extends _ManagedObjectSpecified {
     protected final _Lazy<Optional<Bookmark>> bookmarkLazy =
             _Lazy.threadSafe(()->bookmark(this));
 
+    protected _ManagedObjectWithBookmark(final Specialization specialization) {
+        super(specialization);
+    }
+
     @Override
     public final Optional<Bookmark> getBookmark() {
         return bookmarkLazy.get();
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithEagerSpec.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithEagerSpec.java
index 923b4ecb92..307e140361 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithEagerSpec.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithEagerSpec.java
@@ -28,17 +28,12 @@ import org.apache.isis.commons.internal.assertions._Assert;
 import org.apache.isis.commons.internal.collections._Collections;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.NonNull;
 import lombok.ToString;
 import lombok.val;
 
-//@Value
-//@RequiredArgsConstructor(staticName="of", access = AccessLevel.PRIVATE)
-@AllArgsConstructor(staticName="of", access = AccessLevel.PACKAGE)
 @EqualsAndHashCode(of = "pojo", callSuper = false)
 @ToString(of = {"specification", "pojo"}) //ISIS-2317 make sure toString() is 
without side-effects
 @Getter
@@ -54,11 +49,19 @@ extends _ManagedObjectWithBookmark {
             
_Assert.assertFalse(_Collections.isCollectionOrArrayOrCanType(pojo.getClass()));
         }
 
-        val managedObject = _ManagedObjectWithEagerSpec.of(spec, pojo);
+        val managedObject = new _ManagedObjectWithEagerSpec(spec, pojo);
         managedObject.bookmarkLazy.set(Optional.of(bookmark));
         return managedObject;
     }
 
+    _ManagedObjectWithEagerSpec(
+            final ObjectSpecification spec,
+            final Object pojo) {
+        super(ManagedObject.Specialization.inferFrom(spec, pojo));
+        this.specification = spec;
+        this.pojo = pojo;
+    }
+
     @NonNull private final ObjectSpecification specification;
     @Nullable private /*final*/ Object pojo;
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithLazySpec.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithLazySpec.java
index 14d9d79fd5..7b52c25002 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithLazySpec.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectWithLazySpec.java
@@ -38,9 +38,10 @@ extends _ManagedObjectWithBookmark {
 
     private final _Lazy<ObjectSpecification> specification = 
_Lazy.threadSafe(this::loadSpec);
 
-    public _ManagedObjectWithLazySpec(
+    _ManagedObjectWithLazySpec(
             final @NonNull Function<Class<?>, ObjectSpecification> specLoader,
             final @NonNull Object pojo) {
+        super(ManagedObject.Specialization.UNSPECIFIED); // FIXME
         this.specLoader = specLoader;
         this.pojo = pojo;
     }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
index 98187c545c..07b9b73210 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
@@ -29,7 +29,6 @@ import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
 import org.apache.isis.core.metamodel.object.ManagedObject;
-import org.apache.isis.core.metamodel.object.PackedManagedObject;
 import org.apache.isis.core.metamodel.objectmanager.create.ObjectCreator;
 import org.apache.isis.core.metamodel.objectmanager.detach.ObjectDetacher;
 import org.apache.isis.core.metamodel.objectmanager.identify.ObjectBookmarker;
@@ -160,7 +159,7 @@ public interface ObjectManager {
         }
         return spec.isScalar()
                 ? managedObjectEagerlyBookmarkedIfRequired(spec, pojo, 
entityAdaptingMode)
-                : PackedManagedObject.pack(
+                : ManagedObject.packed(
                         
spec.getElementSpecification().orElseGet(fallbackElementType),
                         _NullSafe.streamAutodetect(pojo)
                         .map(element->adapt(element, entityAdaptingMode))
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/schema/SchemaValueMarshallerAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/schema/SchemaValueMarshallerAbstract.java
index 374b56838d..6800507f7c 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/schema/SchemaValueMarshallerAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/schema/SchemaValueMarshallerAbstract.java
@@ -37,7 +37,6 @@ import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import 
org.apache.isis.core.metamodel.facets.actions.action.invocation.IdentifierUtil;
 import org.apache.isis.core.metamodel.object.ManagedObject;
-import org.apache.isis.core.metamodel.object.PackedManagedObject;
 import org.apache.isis.core.metamodel.objectmanager.load.ObjectLoader;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -275,7 +274,7 @@ implements SchemaValueMarshaller {
             final @NonNull Cardinality cardinalityConstraint) {
 
         return cardinalityConstraint.isMultiple()
-                ? PackedManagedObject.pack(
+                ? ManagedObject.packed(
                         valueTypeHelper.getElementType(),
                         recoverCollectionOfValues(valueTypeHelper, 
valueDto.getCollection()))
                 : recoverScalarValue(valueTypeHelper, valueDto);
@@ -287,7 +286,7 @@ implements SchemaValueMarshaller {
             final @NonNull Cardinality cardinalityConstraint) {
 
         return cardinalityConstraint.isMultiple()
-                ? PackedManagedObject.pack(
+                ? ManagedObject.packed(
                         feature.getElementType(),
                         
recoverCollectionOfReferences(valueDto.getCollection()))
                 : recoverReferenceFrom(valueDto.getReference());
@@ -345,7 +344,7 @@ implements SchemaValueMarshaller {
                 || (valueWithTypeDto.isNull()!=null
                     && valueWithTypeDto.isNull())) {
             return cardinalityConstraint.isMultiple()
-                    ? PackedManagedObject.pack(feature.getElementType(), 
Can.empty())
+                    ? ManagedObject.packed(feature.getElementType(), 
Can.empty())
                     : ManagedObject.empty(feature.getElementType());
         }
 
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 b6259542a2..4b8d06cc6a 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,7 +46,6 @@ 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;
@@ -246,7 +245,7 @@ implements
             // post processing each entry
             .map(obj->ManagedObjects.emptyToDefault(paramSpec, !isOptional(), 
obj));
             // pack up
-            val packed = PackedManagedObject.pack(paramSpec, 
nonScalarDefaults);
+            val packed = ManagedObject.packed(paramSpec, nonScalarDefaults);
             return packed;
         }
 
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleAnnotationFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleAnnotationFacetFactoryTest.java
index ad5743e674..4de5c842e9 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleAnnotationFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleAnnotationFacetFactoryTest.java
@@ -154,6 +154,9 @@ extends AbstractFacetFactoryJUnit4TestCase {
             allowing(mockStringSpec).getCorrespondingClass();
             will(returnValue(String.class));
 
+            allowing(mockStringSpec).isValue();
+            will(returnValue(true));
+
             allowing(mockStringSpec).isScalar();
             will(returnValue(true));
 
@@ -257,6 +260,9 @@ extends AbstractFacetFactoryJUnit4TestCase {
                 allowing(mockStringSpec).isEntity();
                 will(returnValue(false));
 
+                allowing(mockStringSpec).isValue();
+                will(returnValue(true));
+
                 
ignoring(mockStringSpec).assertPojoCompatible(with(any(String.class)));
 
                 allowing(mockSpecificationLoader).specForType(Integer.class);
@@ -265,6 +271,9 @@ extends AbstractFacetFactoryJUnit4TestCase {
                 allowing(mockIntegerSpec).getCorrespondingClass();
                 will(returnValue(Integer.class));
 
+                allowing(mockIntegerSpec).isValue();
+                will(returnValue(true));
+
                 allowing(mockIntegerSpec).isNonScalar();
                 will(returnValue(false));
 
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 900ed80e82..d398c0e8ed 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
@@ -152,7 +152,7 @@ public class ObjectMementoServiceDefault implements 
ObjectMementoService {
                     .map(this::reconstructObject)
                     .collect(Can.toCan());
 
-            return PackedManagedObject.pack(elementSpec, objects);
+            return ManagedObject.packed(elementSpec, objects);
         }
 
         if(memento instanceof ObjectMementoAdapter) {

Reply via email to