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 3ef5e520a1 ISIS-3199: purge ObjectMementoService
3ef5e520a1 is described below
commit 3ef5e520a103160ebcea725657587616d4fb5e9d
Author: Andi Huber <[email protected]>
AuthorDate: Mon Sep 5 16:50:31 2022 +0200
ISIS-3199: purge ObjectMementoService
---
.../_testing/MetaModelContext_forTesting.java | 12 +-
.../_testing/ObjectMementoService_forTesting.java | 55 --------
.../metamodel/object/_ManagedObjectSpecified.java | 31 ++++-
.../metamodel/objectmanager/ObjectManager.java | 6 +-
.../objectmanager/ObjectManagerDefault.java | 49 +++++--
.../memento/ObjectMementoForScalar.java} | 23 ++--
.../memento/ObjectMementoService.java | 48 -------
.../objectmanager}/memento/_Recreatable.java | 14 +-
.../objectmanager}/memento/_RecreatableLookup.java | 8 +-
.../memento/_RecreatableSerializable.java | 10 +-
.../objectmanager}/memento/_RecreatableValue.java | 10 +-
.../IsisModuleCoreRuntimeServices.java | 2 -
.../memento/ObjectMementoServiceDefault.java | 141 ---------------------
.../choices/ChoiceProviderTestAbstract.java | 16 ---
14 files changed, 102 insertions(+), 323 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
index 8eac24bd36..c99e0b0456 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
@@ -79,7 +79,6 @@ import
org.apache.isis.core.metamodel.facets.object.value.annotcfg.ValueFacetFor
import org.apache.isis.core.metamodel.object.ManagedObject;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
import org.apache.isis.core.metamodel.objectmanager.ObjectManagerDefault;
-import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoService;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModelAbstract;
import
org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilterDefault;
@@ -257,8 +256,7 @@ implements MetaModelContext {
_ManagedBeanAdapter.forTestingLazy(JaxbService.class,
this::getJaxbService),
_ManagedBeanAdapter.forTestingLazy(MenuBarsService.class,
this::getMenuBarsService),
_ManagedBeanAdapter.forTestingLazy(LayoutService.class,
this::getLayoutService),
-
_ManagedBeanAdapter.forTestingLazy(SpecificationLoader.class,
this::getSpecificationLoader),
-
_ManagedBeanAdapter.forTestingLazy(ObjectMementoService.class,
this::getObjectMementoService)
+
_ManagedBeanAdapter.forTestingLazy(SpecificationLoader.class,
this::getSpecificationLoader)
)
);
}
@@ -379,14 +377,6 @@ implements MetaModelContext {
@Builder.Default
private final MessageService messageService = new MessageServiceNoop();
- private ObjectMementoService objectMementoService;
- private ObjectMementoService getObjectMementoService(){
- if(objectMementoService==null) {
- objectMementoService = new ObjectMementoService_forTesting();
- }
- return objectMementoService;
- }
-
@Override
public ManagedObject getHomePageAdapter() {
// not supported
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/ObjectMementoService_forTesting.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/ObjectMementoService_forTesting.java
deleted file mode 100644
index a57c4f73cb..0000000000
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/ObjectMementoService_forTesting.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel._testing;
-
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.core.metamodel.object.ManagedObject;
-import org.apache.isis.core.metamodel.object.PackedManagedObject;
-import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemento;
-import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoService;
-
-public class ObjectMementoService_forTesting
-implements ObjectMementoService {
-
- @Override
- public ObjectMemento mementoForSingle(final ManagedObject adapter) {
- return null;
- }
-
- @Override
- public ObjectMemento mementoForMulti(final PackedManagedObject adapter) {
- return null;
- }
-
- @Override
- public ObjectMemento mementoForPojo(final Object pojo) {
- return null;
- }
-
- @Override
- public ObjectMemento mementoForPojos(final LogicalType logicalType, final
Iterable<Object> iterablePojos) {
- return null;
- }
-
- @Override
- public ManagedObject reconstructObject(final ObjectMemento memento) {
- return null;
- }
-
-}
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 1921b99926..00e11aaa64 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
@@ -18,9 +18,13 @@
*/
package org.apache.isis.core.metamodel.object;
+import java.util.ArrayList;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Supplier;
+import java.util.stream.Collectors;
+
+import org.springframework.lang.Nullable;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.internal.assertions._Assert;
@@ -28,7 +32,9 @@ import
org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facets.object.title.TitleRenderRequest;
import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemento;
-import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoService;
+import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoCollection;
+import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoForEmpty;
+import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoForScalar;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import lombok.AccessLevel;
@@ -93,12 +99,27 @@ implements ManagedObject {
@Override
public Optional<ObjectMemento> getMemento() {
return this instanceof PackedManagedObject
- ?
Optional.ofNullable(objectMementoService().mementoForMulti((PackedManagedObject)this))
- :
Optional.ofNullable(objectMementoService().mementoForSingle(this));
+ ?
Optional.ofNullable(mementoForPacked((PackedManagedObject)this))
+ : Optional.ofNullable(mementoForScalar(this));
+ }
+
+ private ObjectMemento mementoForScalar(@Nullable final ManagedObject
adapter) {
+ MmAssertionUtil.assertPojoIsScalar(adapter);
+ return ObjectMementoForScalar.create(adapter)
+ .map(ObjectMemento.class::cast)
+ .orElseGet(()->
+ ManagedObjects.isSpecified(adapter)
+ ? new ObjectMementoForEmpty(adapter.getLogicalType())
+ : null);
}
- private ObjectMementoService objectMementoService() {
- return
getServiceRegistry().lookupServiceElseFail(ObjectMementoService.class);
+ private ObjectMemento mementoForPacked(@Nullable final PackedManagedObject
packedAdapter) {
+ val listOfMementos = packedAdapter.unpack().stream()
+ .map(this::mementoForScalar)
+ .collect(Collectors.toCollection(ArrayList::new)); //
ArrayList is serializable
+ return ObjectMementoCollection.of(
+ listOfMementos,
+ packedAdapter.getLogicalType());
}
//XXX compares pojos by their 'equals' semantics -
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 a6322cf434..b682900b55 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
@@ -69,10 +69,10 @@ public interface ObjectManager extends HasMetaModelContext {
_Exceptions.unrecoverable("failed to create memento for
%s", object.getSpecification()));
}
- default ManagedObject demementify(final ObjectMemento memento) {
- return loadObjectElseFail(memento.getBookmark());
+ ManagedObject demementify(final ObjectMemento memento);
+ default ManagedObject demementify(final ObjectSpecification spec, final
ObjectMemento memento) {
+ return demementify(memento);
}
- ManagedObject demementify(final ObjectSpecification spec, final
ObjectMemento memento);
// -- SHORTCUTS
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
index c86a762cae..9680b90de7 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
@@ -24,18 +24,21 @@ import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.lang.Nullable;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.object.ManagedObject;
import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemento;
-import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoService;
+import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoCollection;
+import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoForEmpty;
+import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoForScalar;
import org.apache.isis.core.metamodel.objectmanager.query.ObjectBulkLoader;
import org.apache.isis.core.metamodel.objectmanager.serialize.ObjectSerializer;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -54,10 +57,6 @@ public class ObjectManagerDefault implements ObjectManager {
@Getter(onMethod_ = {@Override})
private final MetaModelContext metaModelContext;
- // resolve lazily (dependency cycle, simple JUnit support)
- private _Lazy<ObjectMementoService> objectMementoService =
_Lazy.threadSafe(()->
-
getServiceRegistry().lookupServiceElseFail(ObjectMementoService.class));
-
@Getter(onMethod_ = {@Override}) private ObjectLoader objectLoader;
@Getter(onMethod_ = {@Override}) private ObjectBulkLoader objectBulkLoader;
@Getter(onMethod_ = {@Override}) private ObjectCreator objectCreator;
@@ -74,10 +73,42 @@ public class ObjectManagerDefault implements ObjectManager {
}
@Override
- public ManagedObject demementify(final ObjectSpecification spec, final
ObjectMemento memento) {
- return objectMementoService.get().reconstructObject(memento);
+ public ManagedObject demementify(final @Nullable ObjectMemento memento) {
+
+ if(memento==null) {
+ return null;
+ }
+
+ if(memento instanceof ObjectMementoForEmpty) {
+ val objectMementoForEmpty = (ObjectMementoForEmpty) memento;
+ val logicalType = objectMementoForEmpty.getLogicalType();
+ val spec =
getSpecificationLoader().specForLogicalType(logicalType);
+ return spec.isPresent()
+ ? ManagedObject.empty(spec.get())
+ : ManagedObject.unspecified();
+ }
+
+ if(memento instanceof ObjectMementoCollection) {
+ val objectMementoCollection = (ObjectMementoCollection) memento;
+
+ val elementSpec =
getSpecificationLoader().specForLogicalTypeNameElseFail(memento.getLogicalTypeName());
+
+ val objects = objectMementoCollection.unwrapList().stream()
+ .map(this::demementify)
+ .collect(Can.toCan());
+
+ return ManagedObject.packed(elementSpec, objects);
+ }
+
+ if(memento instanceof ObjectMementoForScalar) {
+ val objectMementoAdapter = (ObjectMementoForScalar) memento;
+ return
objectMementoAdapter.reconstructObject(getMetaModelContext());
+ }
+
+ throw _Exceptions.unrecoverable("unsupported ObjectMemento type %s",
memento.getClass());
}
+
// JUnit support
public static ObjectManager forTesting(final MetaModelContext
metaModelContext) {
val objectManager = new ObjectManagerDefault(metaModelContext);
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMementoForScalar.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoForScalar.java
similarity index 87%
rename from
core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMementoForScalar.java
rename to
core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoForScalar.java
index 9553ce4494..8967684dc3 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMementoForScalar.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoForScalar.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.runtimeservices.memento;
+package org.apache.isis.core.metamodel.objectmanager.memento;
import java.io.Serializable;
import java.util.Optional;
@@ -32,30 +32,29 @@ import
org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.object.ManagedObject;
import org.apache.isis.core.metamodel.object.ManagedObjects;
import org.apache.isis.core.metamodel.object.MmTitleUtil;
-import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemento;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import lombok.Getter;
import lombok.NonNull;
import lombok.val;
-final class _ObjectMementoForScalar
+public final class ObjectMementoForScalar
implements HasLogicalType, Serializable, ObjectMemento {
private static final long serialVersionUID = 1L;
// -- FACTORIES
- public static Optional<_ObjectMementoForScalar> create(final @Nullable
ManagedObject adapter) {
+ public static Optional<ObjectMementoForScalar> create(final @Nullable
ManagedObject adapter) {
return ManagedObjects.isNullOrUnspecifiedOrEmpty(adapter)
? Optional.empty()
- : Optional.of(new _ObjectMementoForScalar(adapter));
+ : Optional.of(new ObjectMementoForScalar(adapter));
}
- static _ObjectMementoForScalar createPersistent(
+ static ObjectMementoForScalar createPersistent(
final Bookmark bookmark,
final SpecificationLoader specificationLoader) {
- return new _ObjectMementoForScalar(bookmark, specificationLoader);
+ return new ObjectMementoForScalar(bookmark, specificationLoader);
}
// --
@@ -69,7 +68,7 @@ implements HasLogicalType, Serializable, ObjectMemento {
byte[] serializedPayload;
- private _ObjectMementoForScalar(
+ private ObjectMementoForScalar(
final @NonNull Bookmark bookmark,
final @NonNull SpecificationLoader specLoader) {
@@ -89,7 +88,7 @@ implements HasLogicalType, Serializable, ObjectMemento {
: _Recreatable.RecreateStrategy.LOOKUP;
}
- private _ObjectMementoForScalar(final @NonNull ManagedObject adapter) {
+ private ObjectMementoForScalar(final @NonNull ManagedObject adapter) {
this.logicalType = adapter.getLogicalType();
this.title = MmTitleUtil.titleOf(adapter);
@@ -140,7 +139,7 @@ implements HasLogicalType, Serializable, ObjectMemento {
}
- ManagedObject reconstructObject(final MetaModelContext mmc) {
+ public ManagedObject reconstructObject(final MetaModelContext mmc) {
val spec = mmc.getSpecificationLoader()
.specForLogicalType(logicalType).orElse(null);
if(spec==null) {
@@ -163,10 +162,10 @@ implements HasLogicalType, Serializable, ObjectMemento {
@Override
public boolean equals(final Object other) {
- if (!(other instanceof _ObjectMementoForScalar)) {
+ if (!(other instanceof ObjectMementoForScalar)) {
return false;
}
- return recreateStrategy.equals(this, (_ObjectMementoForScalar) other);
+ return recreateStrategy.equals(this, (ObjectMementoForScalar) other);
}
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoService.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoService.java
deleted file mode 100644
index dcecb2dbd0..0000000000
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/ObjectMementoService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.objectmanager.memento;
-
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.core.metamodel.object.ManagedObject;
-import org.apache.isis.core.metamodel.object.PackedManagedObject;
-
-import lombok.NonNull;
-
-/**
- * @since 2.0
- */
-public interface ObjectMementoService {
-
- ObjectMemento mementoForSingle(ManagedObject adapter);
- ObjectMemento mementoForMulti(PackedManagedObject adapter);
-
- default ObjectMemento mementoForAnyCardinality(@NonNull final
ManagedObject adapterAny) {
- if(adapterAny instanceof PackedManagedObject) {
- return mementoForMulti((PackedManagedObject) adapterAny);
- }
- return mementoForSingle(adapterAny);
- }
-
- ObjectMemento mementoForPojo(Object pojo);
-
- ObjectMemento mementoForPojos(LogicalType logicalType, Iterable<Object>
iterablePojos);
-
- ManagedObject reconstructObject(ObjectMemento memento);
-
-}
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_Recreatable.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_Recreatable.java
similarity index 78%
rename from
core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_Recreatable.java
rename to
core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_Recreatable.java
index 2bcb565ff7..50dd84f829 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_Recreatable.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_Recreatable.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.runtimeservices.memento;
+package org.apache.isis.core.metamodel.objectmanager.memento;
import org.apache.isis.applib.services.bookmark.Oid;
import org.apache.isis.core.metamodel.context.MetaModelContext;
@@ -49,26 +49,26 @@ interface _Recreatable {
private final _Recreatable delegate;
@Override
- public ManagedObject recreateObject(final _ObjectMementoForScalar
memento, final MetaModelContext mmc) {
+ public ManagedObject recreateObject(final ObjectMementoForScalar
memento, final MetaModelContext mmc) {
return delegate.recreateObject(memento, mmc);
}
@Override
- public boolean equals(final _ObjectMementoForScalar memento, final
_ObjectMementoForScalar otherMemento) {
+ public boolean equals(final ObjectMementoForScalar memento, final
ObjectMementoForScalar otherMemento) {
return delegate.equals(memento, otherMemento);
}
@Override
- public int hashCode(final _ObjectMementoForScalar memento) {
+ public int hashCode(final ObjectMementoForScalar memento) {
return delegate.hashCode();
}
}
- ManagedObject recreateObject(_ObjectMementoForScalar memento,
MetaModelContext mmc);
+ ManagedObject recreateObject(ObjectMementoForScalar memento,
MetaModelContext mmc);
- boolean equals(_ObjectMementoForScalar memento, _ObjectMementoForScalar
otherMemento);
+ boolean equals(ObjectMementoForScalar memento, ObjectMementoForScalar
otherMemento);
- int hashCode(_ObjectMementoForScalar memento);
+ int hashCode(ObjectMementoForScalar memento);
}
\ No newline at end of file
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_RecreatableLookup.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_RecreatableLookup.java
similarity index 87%
rename from
core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_RecreatableLookup.java
rename to
core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_RecreatableLookup.java
index d18bffd951..3557408cbe 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_RecreatableLookup.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_RecreatableLookup.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.runtimeservices.memento;
+package org.apache.isis.core.metamodel.objectmanager.memento;
import org.springframework.lang.Nullable;
@@ -32,7 +32,7 @@ class _RecreatableLookup implements _Recreatable{
@Override
public @Nullable ManagedObject recreateObject(
- final _ObjectMementoForScalar memento,
+ final ObjectMementoForScalar memento,
final MetaModelContext mmc) {
if(memento.bookmark==null) {
@@ -47,13 +47,13 @@ class _RecreatableLookup implements _Recreatable{
}
@Override
- public boolean equals(final _ObjectMementoForScalar oam, final
_ObjectMementoForScalar other) {
+ public boolean equals(final ObjectMementoForScalar oam, final
ObjectMementoForScalar other) {
return other.recreateStrategy == RecreateStrategy.LOOKUP
&& oam.bookmark.equals(other.bookmark);
}
@Override
- public int hashCode(final _ObjectMementoForScalar oam) {
+ public int hashCode(final ObjectMementoForScalar oam) {
return oam.bookmark.hashCode();
}
}
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_RecreatableSerializable.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_RecreatableSerializable.java
similarity index 87%
rename from
core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_RecreatableSerializable.java
rename to
core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_RecreatableSerializable.java
index fbd1d9552f..bbc3023b8a 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_RecreatableSerializable.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_RecreatableSerializable.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.runtimeservices.memento;
+package org.apache.isis.core.metamodel.objectmanager.memento;
import java.util.Objects;
@@ -28,7 +28,7 @@ class _RecreatableSerializable implements _Recreatable{
@Override
public ManagedObject recreateObject(
- final _ObjectMementoForScalar memento,
+ final ObjectMementoForScalar memento,
final MetaModelContext mmc) {
ObjectSpecification spec = mmc.getSpecificationLoader()
.specForLogicalTypeElseFail(memento.logicalType);
@@ -38,15 +38,15 @@ class _RecreatableSerializable implements _Recreatable{
@Override
public boolean equals(
- final _ObjectMementoForScalar memento,
- final _ObjectMementoForScalar otherMemento) {
+ final ObjectMementoForScalar memento,
+ final ObjectMementoForScalar otherMemento) {
return otherMemento.recreateStrategy == RecreateStrategy.SERIALIZABLE
&& Objects.equals(memento.logicalType,
otherMemento.logicalType)
&& Objects.equals(memento.serializedPayload,
otherMemento.serializedPayload);
}
@Override
- public int hashCode(final _ObjectMementoForScalar memento) {
+ public int hashCode(final ObjectMementoForScalar memento) {
// thats where we stored the hash of the originating pojo
return memento.bookmark.getIdentifier().hashCode();
}
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_RecreatableValue.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_RecreatableValue.java
similarity index 83%
rename from
core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_RecreatableValue.java
rename to
core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_RecreatableValue.java
index d2f13d93e4..f381ea3787 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_RecreatableValue.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/memento/_RecreatableValue.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.runtimeservices.memento;
+package org.apache.isis.core.metamodel.objectmanager.memento;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.object.ManagedObject;
@@ -25,7 +25,7 @@ class _RecreatableValue implements _Recreatable{
@Override
public ManagedObject recreateObject(
- final _ObjectMementoForScalar memento,
+ final ObjectMementoForScalar memento,
final MetaModelContext mmc) {
return mmc.getObjectManager().loadObjectElseFail(memento.bookmark);
@@ -33,15 +33,15 @@ class _RecreatableValue implements _Recreatable{
@Override
public boolean equals(
- final _ObjectMementoForScalar memento,
- final _ObjectMementoForScalar otherMemento) {
+ final ObjectMementoForScalar memento,
+ final ObjectMementoForScalar otherMemento) {
return otherMemento.recreateStrategy == RecreateStrategy.VALUE
&& memento.bookmark.equals(otherMemento.bookmark);
}
@Override
- public int hashCode(final _ObjectMementoForScalar memento) {
+ public int hashCode(final ObjectMementoForScalar memento) {
return memento.bookmark.hashCode();
}
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
index a5bf42d8fa..f073423d5f 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
+++
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
@@ -44,7 +44,6 @@ import
org.apache.isis.core.runtimeservices.interaction.InteractionDtoFactoryDef
import org.apache.isis.core.runtimeservices.jaxb.JaxbServiceDefault;
import org.apache.isis.core.runtimeservices.locale.LanguageProviderDefault;
import org.apache.isis.core.runtimeservices.locale.LocaleChoiceProviderDefault;
-import
org.apache.isis.core.runtimeservices.memento.ObjectMementoServiceDefault;
import
org.apache.isis.core.runtimeservices.menubars.MenuBarsLoaderServiceDefault;
import
org.apache.isis.core.runtimeservices.menubars.bootstrap.MenuBarsServiceBS;
import org.apache.isis.core.runtimeservices.message.MessageServiceDefault;
@@ -109,7 +108,6 @@ import
org.apache.isis.core.runtimeservices.xmlsnapshot.XmlSnapshotServiceDefaul
MessageServiceDefault.class,
ObjectIconServiceDefault.class,
ObjectLifecyclePublisherDefault.class,
- ObjectMementoServiceDefault.class,
PlaceholderRenderServiceDefault.class,
LifecycleCallbackNotifier.class,
SchemaValueMarshallerDefault.class,
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
deleted file mode 100644
index acb2f6c490..0000000000
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/ObjectMementoServiceDefault.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.runtimeservices.memento;
-
-import java.util.ArrayList;
-import java.util.stream.Collectors;
-
-import javax.annotation.Priority;
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.lang.Nullable;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.applib.id.LogicalType;
-import org.apache.isis.commons.collections.Can;
-import org.apache.isis.commons.internal.base._NullSafe;
-import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.object.ManagedObject;
-import org.apache.isis.core.metamodel.object.ManagedObjects;
-import org.apache.isis.core.metamodel.object.MmAssertionUtil;
-import org.apache.isis.core.metamodel.object.PackedManagedObject;
-import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
-import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemento;
-import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoCollection;
-import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoForEmpty;
-import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoService;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
-
-import lombok.Getter;
-import lombok.val;
-
-/**
- *
- * @since 2.0
- *
- */
-@Service
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE +
".ObjectMementoServiceDefault")
-@Priority(PriorityPrecedence.MIDPOINT)
-@Qualifier("Default")
-public class ObjectMementoServiceDefault implements ObjectMementoService {
-
- @Inject @Getter private SpecificationLoader specificationLoader;
- @Inject private MetaModelContext mmc;
- @Inject private ObjectManager objectManager;
-
- @Override
- public ObjectMemento mementoForSingle(@Nullable final ManagedObject
adapter) {
- MmAssertionUtil.assertPojoIsScalar(adapter);
-
- return _ObjectMementoForScalar.create(adapter)
- .map(ObjectMemento.class::cast)
- .orElseGet(()->
- ManagedObjects.isSpecified(adapter)
- ? new ObjectMementoForEmpty(adapter.getLogicalType())
- : null);
- }
-
- @Override
- public ObjectMemento mementoForMulti(@Nullable final PackedManagedObject
packedAdapter) {
- val listOfMementos = packedAdapter.unpack().stream()
- .map(this::mementoForSingle)
- .collect(Collectors.toCollection(ArrayList::new)); //
ArrayList is serializable
- return ObjectMementoCollection.of(
- listOfMementos,
- packedAdapter.getLogicalType());
- }
-
- @Override
- public ObjectMemento mementoForPojo(final Object pojo) {
- val managedObject = objectManager.adapt(pojo);
- return mementoForSingle(managedObject);
- }
-
- @Override
- public ObjectMemento mementoForPojos(final LogicalType logicalType, final
Iterable<Object> iterablePojos) {
- val listOfMementos = _NullSafe.stream(iterablePojos)
- .map(pojo->mementoForPojo(pojo))
- .collect(Collectors.toCollection(ArrayList::new)); //
ArrayList is serializable
-
- return ObjectMementoCollection.of(listOfMementos, logicalType);
- }
-
- @Override
- public ManagedObject reconstructObject(@Nullable final ObjectMemento
memento) {
-
- if(memento==null) {
- return null;
- }
-
- if(memento instanceof ObjectMementoForEmpty) {
- val objectMementoForEmpty = (ObjectMementoForEmpty) memento;
- val logicalType = objectMementoForEmpty.getLogicalType();
- val spec = specificationLoader.specForLogicalType(logicalType);
- return spec.isPresent()
- ? ManagedObject.empty(spec.get())
- : ManagedObject.unspecified();
- }
-
- if(memento instanceof ObjectMementoCollection) {
- val objectMementoCollection = (ObjectMementoCollection) memento;
-
- val elementSpec =
specificationLoader.specForLogicalTypeNameElseFail(memento.getLogicalTypeName());
-
- val objects = objectMementoCollection.unwrapList().stream()
- .map(this::reconstructObject)
- .collect(Can.toCan());
-
- return ManagedObject.packed(elementSpec, objects);
- }
-
- if(memento instanceof _ObjectMementoForScalar) {
- val objectMementoAdapter = (_ObjectMementoForScalar) memento;
- return objectMementoAdapter.reconstructObject(mmc);
- }
-
- throw _Exceptions.unrecoverable("unsupported ObjectMemento type %s",
memento.getClass());
- }
-
-}
diff --git
a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/choices/ChoiceProviderTestAbstract.java
b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/choices/ChoiceProviderTestAbstract.java
index 785e142cc8..2cd32a71f4 100644
---
a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/choices/ChoiceProviderTestAbstract.java
+++
b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/choices/ChoiceProviderTestAbstract.java
@@ -18,20 +18,16 @@
*/
package org.apache.isis.viewer.wicket.ui.components.widgets.choices;
-import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.apache.isis.commons.collections.Can;
-import org.apache.isis.commons.internal.ioc._ManagedBeanAdapter;
import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.object.ManagedObject;
-import
org.apache.isis.core.metamodel.objectmanager.memento.ObjectMementoService;
import org.apache.isis.core.metamodel.valuesemantics.BigDecimalValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.IntValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.UUIDValueSemantics;
-import
org.apache.isis.core.runtimeservices.memento.ObjectMementoServiceDefault;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import lombok.val;
@@ -40,24 +36,13 @@ abstract class ChoiceProviderTestAbstract {
protected MetaModelContext mmc;
- private ObjectMementoServiceDefault mementoService() {
- return mmc.getServiceInjector().injectServicesInto(new
ObjectMementoServiceDefault());
- }
-
protected void setUp() {
mmc = MetaModelContext_forTesting.builder()
-
.singletonProvider(_ManagedBeanAdapter.forTestingLazy(ObjectMementoService.class,
this::mementoService))
.build()
.withValueSemantics(new BigDecimalValueSemantics())
.withValueSemantics(new IntValueSemantics())
.withValueSemantics(new UUIDValueSemantics())
;
-
- // verify
- {
- val mementoService =
mmc.getServiceRegistry().lookupServiceElseFail(ObjectMementoService.class);
- assertEquals(ObjectMementoServiceDefault.class,
mementoService.getClass());
- }
}
protected ScalarModel mockScalarModel(final Can<ManagedObject> choices,
final boolean isRequired) {
@@ -69,5 +54,4 @@ abstract class ChoiceProviderTestAbstract {
return mockScalarModel;
}
-
}