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;
}