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 2019/12/05 16:51:21 UTC
[isis] branch master updated: ISIS-2177: move ObjectAdapterMemento
static methods to proper service
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 4e8676e ISIS-2177: move ObjectAdapterMemento static methods to proper service
4e8676e is described below
commit 4e8676e087bc7bf0302ccad2cc6c77f3f6d69006
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 5 17:51:08 2019 +0100
ISIS-2177: move ObjectAdapterMemento static methods to proper service
---
...apterMementoDefault.java => MementoHelper.java} | 130 ++++++++++-----------
.../isis/runtime/memento/MementoStoreLegacy.java | 16 ++-
.../java/org/apache/isis/runtime/memento/Null.java | 35 ------
.../isis/runtime/memento/ObjectAdapterMemento.java | 44 +------
...pport.java => ObjectAdapterMementoService.java} | 18 ++-
...ava => ObjectAdapterMementoServiceDefault.java} | 24 +---
.../apache/isis/runtime/memento/ObjectData.java | 18 ++-
.../wicket/model/models/EntityCollectionModel.java | 15 ++-
.../viewer/wicket/model/models/EntityModel.java | 4 +-
.../model/models/EntityModelForReference.java | 4 +-
.../viewer/wicket/model/models/ScalarModel.java | 18 ++-
.../viewer/wicket/model/models/ValueModel.java | 2 +-
.../ScalarModel_isScalarSubtypingAnyOf_Test.java | 4 +-
.../webapp/context/IsisWebAppCommonContext.java | 14 +--
14 files changed, 148 insertions(+), 198 deletions(-)
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/MementoHelper.java
similarity index 80%
rename from core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
rename to core/runtime/src/main/java/org/apache/isis/runtime/memento/MementoHelper.java
index e9b39de..5cef276 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/MementoHelper.java
@@ -24,12 +24,10 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.function.Function;
-import java.util.stream.Collectors;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.hint.HintStore;
import org.apache.isis.commons.internal.assertions._Assert;
-import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
@@ -41,8 +39,6 @@ import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecId;
import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.runtime.system.context.IsisContext;
-import org.apache.isis.runtime.system.persistence.PersistenceSession;
import static org.apache.isis.commons.internal.base._With.requires;
@@ -51,14 +47,14 @@ import lombok.NoArgsConstructor;
import lombok.val;
-final class ObjectAdapterMementoDefault implements Serializable {
+final class MementoHelper implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Factory method
*/
- public static ObjectAdapterMementoDefault createOrNull(ManagedObject adapter) {
+ public static MementoHelper createOrNull(ManagedObject adapter) {
if (adapter == null) {
return null;
}
@@ -66,28 +62,28 @@ final class ObjectAdapterMementoDefault implements Serializable {
if(pojo == null) {
return null;
}
- return new ObjectAdapterMementoDefault(adapter);
+ return new MementoHelper(adapter);
}
/**
* Factory method
*/
- static ObjectAdapterMementoDefault createPersistent(
+ static MementoHelper createPersistent(
RootOid rootOid,
SpecificationLoader specificationLoader) {
- return new ObjectAdapterMementoDefault(rootOid, specificationLoader);
+ return new MementoHelper(rootOid, specificationLoader);
}
- static ObjectAdapterMementoDefault createForList(
- ArrayList<ObjectAdapterMementoDefault> list,
+ static MementoHelper createForList(
+ ArrayList<MementoHelper> list,
ObjectSpecId objectSpecId) {
- return new ObjectAdapterMementoDefault(list, objectSpecId);
+ return new MementoHelper(list, objectSpecId);
}
- static ObjectAdapterMementoDefault createForList(
- Collection<ObjectAdapterMementoDefault> list,
+ static MementoHelper createForList(
+ Collection<MementoHelper> list,
ObjectSpecId objectSpecId) {
return list != null ? createForList(_Lists.newArrayList(list), objectSpecId) : null;
@@ -105,11 +101,11 @@ final class ObjectAdapterMementoDefault implements Serializable {
// return createForList(listOfMementos, specId);
// }
- static ObjectAdapterMementoDefault createForEncodeable(
+ static MementoHelper createForEncodeable(
ObjectSpecId specId,
String encodableValue) {
- return new ObjectAdapterMementoDefault(specId, encodableValue);
+ return new MementoHelper(specId, encodableValue);
}
enum Cardinality {
@@ -120,7 +116,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
@Override
public ManagedObject asAdapter(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
@@ -128,16 +124,16 @@ final class ObjectAdapterMementoDefault implements Serializable {
}
@Override
- public int hashCode(ObjectAdapterMementoDefault memento) {
+ public int hashCode(MementoHelper memento) {
return memento.recreateStrategy.hashCode(memento);
}
@Override
- public boolean equals(ObjectAdapterMementoDefault memento, Object other) {
- if (!(other instanceof ObjectAdapterMementoDefault)) {
+ public boolean equals(MementoHelper memento, Object other) {
+ if (!(other instanceof MementoHelper)) {
return false;
}
- final ObjectAdapterMementoDefault otherMemento = (ObjectAdapterMementoDefault) other;
+ final MementoHelper otherMemento = (MementoHelper) other;
if(otherMemento.cardinality != SCALAR) {
return false;
}
@@ -145,7 +141,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
}
@Override
- public String asString(final ObjectAdapterMementoDefault memento) {
+ public String asString(final MementoHelper memento) {
return memento.recreateStrategy.toString(memento);
}
},
@@ -156,7 +152,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
@Override
public ManagedObject asAdapter(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
@@ -167,16 +163,16 @@ final class ObjectAdapterMementoDefault implements Serializable {
}
@Override
- public int hashCode(ObjectAdapterMementoDefault memento) {
+ public int hashCode(MementoHelper memento) {
return memento.list.hashCode();
}
@Override
- public boolean equals(ObjectAdapterMementoDefault memento, Object other) {
- if (!(other instanceof ObjectAdapterMementoDefault)) {
+ public boolean equals(MementoHelper memento, Object other) {
+ if (!(other instanceof MementoHelper)) {
return false;
}
- final ObjectAdapterMementoDefault otherMemento = (ObjectAdapterMementoDefault) other;
+ final MementoHelper otherMemento = (MementoHelper) other;
if(otherMemento.cardinality != VECTOR) {
return false;
}
@@ -184,7 +180,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
}
@Override
- public String asString(ObjectAdapterMementoDefault memento) {
+ public String asString(MementoHelper memento) {
return memento.list.toString();
}
};
@@ -197,15 +193,15 @@ final class ObjectAdapterMementoDefault implements Serializable {
}
public abstract ManagedObject asAdapter(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader);
- public abstract int hashCode(ObjectAdapterMementoDefault memento);
+ public abstract int hashCode(MementoHelper memento);
- public abstract boolean equals(ObjectAdapterMementoDefault memento, Object other);
+ public abstract boolean equals(MementoHelper memento, Object other);
- public abstract String asString(ObjectAdapterMementoDefault memento);
+ public abstract String asString(MementoHelper memento);
}
enum RecreateStrategy {
@@ -217,7 +213,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
ENCODEABLE {
@Override
ManagedObject recreateAdapter(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
@@ -229,26 +225,26 @@ final class ObjectAdapterMementoDefault implements Serializable {
@Override
public boolean equals(
- ObjectAdapterMementoDefault memento,
- ObjectAdapterMementoDefault otherMemento) {
+ MementoHelper memento,
+ MementoHelper otherMemento) {
return otherMemento.recreateStrategy == ENCODEABLE &&
memento.encodableValue.equals(otherMemento.encodableValue);
}
@Override
- public int hashCode(ObjectAdapterMementoDefault memento) {
+ public int hashCode(MementoHelper memento) {
return memento.encodableValue.hashCode();
}
@Override
- public String toString(ObjectAdapterMementoDefault memento) {
+ public String toString(MementoHelper memento) {
return memento.encodableValue;
}
@Override
public void resetVersion(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
}
@@ -260,7 +256,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
LOOKUP {
@Override
ManagedObject recreateAdapter(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
@@ -282,7 +278,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
@Override
public void resetVersion(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
@@ -295,17 +291,17 @@ final class ObjectAdapterMementoDefault implements Serializable {
}
@Override
- public boolean equals(ObjectAdapterMementoDefault oam, ObjectAdapterMementoDefault other) {
+ public boolean equals(MementoHelper oam, MementoHelper other) {
return other.recreateStrategy == LOOKUP && oam.persistentOidStr.equals(other.persistentOidStr);
}
@Override
- public int hashCode(ObjectAdapterMementoDefault oam) {
+ public int hashCode(MementoHelper oam) {
return oam.persistentOidStr.hashCode();
}
@Override
- public String toString(final ObjectAdapterMementoDefault oam) {
+ public String toString(final MementoHelper oam) {
return oam.persistentOidStr;
}
@@ -320,7 +316,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
*/
@Override
ManagedObject recreateAdapter(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
@@ -328,30 +324,30 @@ final class ObjectAdapterMementoDefault implements Serializable {
}
@Override
- public boolean equals(ObjectAdapterMementoDefault oam, ObjectAdapterMementoDefault other) {
+ public boolean equals(MementoHelper oam, MementoHelper other) {
return other.recreateStrategy == TRANSIENT && oam.transientMemento.equals(other.transientMemento);
}
@Override
- public int hashCode(ObjectAdapterMementoDefault oam) {
+ public int hashCode(MementoHelper oam) {
return oam.transientMemento.hashCode();
}
@Override
- public String toString(final ObjectAdapterMementoDefault oam) {
+ public String toString(final MementoHelper oam) {
return oam.transientMemento.toString();
}
@Override
public void resetVersion(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
}
};
public ManagedObject getAdapter(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
@@ -359,20 +355,20 @@ final class ObjectAdapterMementoDefault implements Serializable {
}
abstract ManagedObject recreateAdapter(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader);
public abstract boolean equals(
- ObjectAdapterMementoDefault memento,
- ObjectAdapterMementoDefault otherMemento);
+ MementoHelper memento,
+ MementoHelper otherMemento);
- public abstract int hashCode(ObjectAdapterMementoDefault memento);
+ public abstract int hashCode(MementoHelper memento);
- public abstract String toString(ObjectAdapterMementoDefault memento);
+ public abstract String toString(MementoHelper memento);
public abstract void resetVersion(
- ObjectAdapterMementoDefault memento,
+ MementoHelper memento,
MementoStore mementoStore,
SpecificationLoader specificationLoader);
}
@@ -433,10 +429,10 @@ final class ObjectAdapterMementoDefault implements Serializable {
/**
* populated only if {@link #getCardinality() sort} is {@link Cardinality#VECTOR vector}
*/
- private ArrayList<ObjectAdapterMementoDefault> list;
+ private ArrayList<MementoHelper> list;
- public ObjectAdapterMementoDefault(
- ArrayList<ObjectAdapterMementoDefault> list,
+ public MementoHelper(
+ ArrayList<MementoHelper> list,
ObjectSpecId objectSpecId) {
this.cardinality = Cardinality.VECTOR;
@@ -444,7 +440,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
this.objectSpecId = objectSpecId;
}
- private ObjectAdapterMementoDefault(RootOid rootOid, SpecificationLoader specificationLoader) {
+ private MementoHelper(RootOid rootOid, SpecificationLoader specificationLoader) {
// -- // TODO[2112] do we ever need to create ENCODEABLE here?
val specId = rootOid.getObjectSpecId();
@@ -471,7 +467,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
this.recreateStrategy = RecreateStrategy.LOOKUP;
}
- private ObjectAdapterMementoDefault(ManagedObject adapter) {
+ private MementoHelper(ManagedObject adapter) {
requires(adapter, "adapter");
@@ -481,7 +477,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
init(adapter);
}
- private ObjectAdapterMementoDefault(ObjectSpecId specId, String encodableValue) {
+ private MementoHelper(ObjectSpecId specId, String encodableValue) {
this.cardinality = Cardinality.SCALAR;
this.objectSpecId = specId;
this.encodableValue = encodableValue;
@@ -521,7 +517,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
return cardinality;
}
- ArrayList<ObjectAdapterMementoDefault> getList() {
+ ArrayList<MementoHelper> getList() {
ensureVector();
return list;
}
@@ -595,7 +591,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
* {@link ConcurrencyChecking concurrency checking} of the OID.
*/
boolean containedIn(
- List<ObjectAdapterMementoDefault> mementos,
+ List<MementoHelper> mementos,
MementoStore mementoStore,
SpecificationLoader specificationLoader) {
@@ -643,13 +639,13 @@ final class ObjectAdapterMementoDefault implements Serializable {
@NoArgsConstructor(access = AccessLevel.PRIVATE)
final static class Functions {
- public static Function<Object, ObjectAdapterMementoDefault> fromPojo(
+ public static Function<Object, MementoHelper> fromPojo(
final ObjectAdapterProvider adapterProvider) {
- return pojo->ObjectAdapterMementoDefault.createOrNull( adapterProvider.adapterFor(pojo) );
+ return pojo->MementoHelper.createOrNull( adapterProvider.adapterFor(pojo) );
}
- public static Function<ObjectAdapterMementoDefault, ManagedObject> fromMemento(
+ public static Function<MementoHelper, ManagedObject> fromMemento(
final MementoStore mementoStore,
final SpecificationLoader specificationLoader) {
@@ -663,7 +659,7 @@ final class ObjectAdapterMementoDefault implements Serializable {
};
}
- public static Function<ObjectAdapterMementoDefault, Object> toPojo(
+ public static Function<MementoHelper, Object> toPojo(
final MementoStore mementoStore,
final SpecificationLoader specificationLoader) {
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/MementoStoreLegacy.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/MementoStoreLegacy.java
index 70c8325..d4e0e90 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/MementoStoreLegacy.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/MementoStoreLegacy.java
@@ -48,6 +48,7 @@ import org.apache.isis.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
import org.apache.isis.runtime.persistence.adapter.PojoAdapter;
+import org.apache.isis.runtime.system.context.IsisContext;
import org.apache.isis.runtime.system.session.IsisSession;
import static org.apache.isis.commons.internal.functions._Predicates.not;
@@ -67,7 +68,7 @@ import lombok.extern.log4j.Log4j2;
final class MementoStoreLegacy implements MementoStore {
private final ObjectManager objectManager;
- private final ObjectAdapterProvider objectAdapterProvider;
+ //private final ObjectAdapterProvider objectAdapterProvider;
private final SpecificationLoader specificationLoader;
@Override
@@ -95,7 +96,7 @@ final class MementoStoreLegacy implements MementoStore {
_Assert.assertTrue("oid must be a RootOid representing an object because spec is not a collection and cannot be a value", oid instanceof RootOid);
RootOid typedOid = (RootOid) oid;
// recreate an adapter for the original OID
- adapter = objectAdapterProvider.adapterFor(typedOid);
+ adapter = objectAdapterProvider().adapterFor(typedOid);
updateObject(adapter, data);
}
@@ -105,7 +106,7 @@ final class MementoStoreLegacy implements MementoStore {
}
return adapter;
}
-
+
@Override
public ManagedObject adapterForListOfPojos(List<Object> listOfPojos) {
return ManagedObject.of(specificationLoader::loadSpecification, listOfPojos);
@@ -123,7 +124,7 @@ final class MementoStoreLegacy implements MementoStore {
// handle values
if (data instanceof StandaloneData) {
val standaloneData = (StandaloneData) data;
- return standaloneData.getAdapter(objectAdapterProvider, specificationLoader);
+ return standaloneData.getAdapter(objectAdapterProvider(), specificationLoader);
}
// reference to entity
@@ -132,7 +133,7 @@ final class MementoStoreLegacy implements MementoStore {
_Assert.assertTrue("can only create a reference to an entity", oid instanceof RootOid);
val rootOid = (RootOid) oid;
- val referencedAdapter = objectAdapterProvider.adapterFor(rootOid);
+ val referencedAdapter = objectAdapterProvider().adapterFor(rootOid);
if (data instanceof ObjectData) {
if (rootOid.isTransient()) {
@@ -289,5 +290,10 @@ final class MementoStoreLegacy implements MementoStore {
}
}
}
+
+ private ObjectAdapterProvider objectAdapterProvider() {
+ val objectAdapterProvider = (ObjectAdapterProvider) IsisContext.getPersistenceSession().get();
+ return objectAdapterProvider;
+ }
}
\ No newline at end of file
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/Null.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/Null.java
deleted file mode 100644
index 99cf93c..0000000
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/Null.java
+++ /dev/null
@@ -1,35 +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.runtime.memento;
-
-import java.io.Serializable;
-
-final class Null implements Serializable {
- private static final long serialVersionUID = 1L;
-
- public Null() {
- }
-
- @Override
- public String toString() {
- return "NULL";
- }
-
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento.java
index 9612aa3..896b216 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento.java
@@ -23,19 +23,14 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Optional;
-import java.util.stream.Collectors;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.collections.Cardinality;
-import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.metamodel.adapter.oid.RootOid;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecId;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.runtime.memento.ObjectAdapterMementoDefault.RecreateStrategy;
-
-import lombok.val;
+import org.apache.isis.runtime.memento.MementoHelper.RecreateStrategy;
/**
* @since 2.0
@@ -66,27 +61,6 @@ public interface ObjectAdapterMemento extends Serializable {
// -- FACTORIES
- static ObjectAdapterMemento ofRootOid(RootOid rootOid, ObjectAdapterMementoSupport support) {
- if(rootOid==null) {
- return null;
- }
- return support.mementoForRootOid(rootOid);
- }
-
- static ObjectAdapterMemento ofAdapter(ManagedObject adapter, ObjectAdapterMementoSupport support) {
- if(adapter==null) {
- return null;
- }
- return support.mementoForAdapter(adapter);
- }
-
- static ObjectAdapterMemento ofPojo(Object pojo, ObjectAdapterMementoSupport support) {
- if(pojo==null) {
- return null;
- }
- return support.mementoForPojo(pojo);
- }
-
static ObjectAdapterMemento wrapMementoList(
Collection<ObjectAdapterMemento> container,
ObjectSpecId specId) {
@@ -110,20 +84,4 @@ public interface ObjectAdapterMemento extends Serializable {
}
- static ObjectAdapterMemento ofIterablePojos(
- Object iterablePojos,
- ObjectSpecId specId,
- ObjectAdapterMementoSupport support) {
-
- val listOfMementos = _NullSafe.stream((Iterable<?>) iterablePojos)
- .map(pojo->ofPojo(pojo, support))
- .collect(Collectors.toList());
- val memento =
- ObjectAdapterMemento.wrapMementoList(listOfMementos, specId);
- return memento;
- }
-
-
-
-
}
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoService.java
similarity index 67%
rename from core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport.java
rename to core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoService.java
index 9c409ae..b5c6d59 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoService.java
@@ -18,22 +18,38 @@
*/
package org.apache.isis.runtime.memento;
+import java.util.stream.Collectors;
+
+import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.metamodel.adapter.oid.RootOid;
import org.apache.isis.metamodel.spec.ManagedObject;
+import org.apache.isis.metamodel.spec.ObjectSpecId;
+
+import lombok.val;
/**
* @since 2.0
*
*
*/
-public interface ObjectAdapterMementoSupport {
+public interface ObjectAdapterMementoService {
ObjectAdapterMemento mementoForRootOid(RootOid rootOid);
ObjectAdapterMemento mementoForAdapter(ManagedObject adapter);
ObjectAdapterMemento mementoForPojo(Object pojo);
+
+ default ObjectAdapterMemento mementoForPojos(Iterable<Object> iterablePojos, ObjectSpecId specId) {
+ val listOfMementos = _NullSafe.stream(iterablePojos)
+ .map(pojo->mementoForPojo(pojo))
+ .collect(Collectors.toList());
+ val memento =
+ ObjectAdapterMemento.wrapMementoList(listOfMementos, specId);
+ return memento;
+ }
ManagedObject reconstructObject(ObjectAdapterMemento memento);
+
}
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoServiceDefault.java
similarity index 79%
rename from core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
rename to core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoServiceDefault.java
index acf41f5..c5eee01 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoServiceDefault.java
@@ -42,8 +42,8 @@ import lombok.val;
*
*/
@Service @Singleton
-public class ObjectAdapterMementoSupport_usingDefault
-implements ObjectAdapterMementoSupport {
+public class ObjectAdapterMementoServiceDefault
+implements ObjectAdapterMementoService {
@Inject @Getter private SpecificationLoader specificationLoader;
@Inject private ObjectManager objectManager;
@@ -51,13 +51,13 @@ implements ObjectAdapterMementoSupport {
@Override
public ObjectAdapterMemento mementoForRootOid(RootOid rootOid) {
- val delegate = ObjectAdapterMementoDefault.createPersistent(rootOid, specificationLoader);
+ val delegate = MementoHelper.createPersistent(rootOid, specificationLoader);
return ObjectAdapterMementoDelegator.of(delegate);
}
@Override
public ObjectAdapterMemento mementoForAdapter(ManagedObject adapter) {
- val delegate = ObjectAdapterMementoDefault.createOrNull(adapter);
+ val delegate = MementoHelper.createOrNull(adapter);
if(delegate==null) {
return null;
}
@@ -76,22 +76,10 @@ implements ObjectAdapterMementoSupport {
return null;
}
if(mementoStore==null) {
- val objectAdapterProvider = (ObjectAdapterProvider) IsisContext.getPersistenceSession().get();
- mementoStore = new MementoStoreLegacy(objectManager, objectAdapterProvider, specificationLoader);
+ mementoStore = new MementoStoreLegacy(objectManager, specificationLoader);
}
-
return memento.reconstructObject(mementoStore, specificationLoader);
-
-// val specId = memento.getObjectSpecId();
-// val spec = specificationLoader.loadSpecification(specId);
-//
-// if(memento.getIdentifier()==null) {
-// System.out.println("#### has no id: " + memento);
-// }
-//
-// val objectLoadRequest = ObjectLoader.Request.of(spec, memento.getIdentifier());
-// return objectManager.loadObject(objectLoadRequest);
}
@RequiredArgsConstructor(staticName = "of")
@@ -99,7 +87,7 @@ implements ObjectAdapterMementoSupport {
private static final long serialVersionUID = 1L;
- private final ObjectAdapterMementoDefault delegate;
+ private final MementoHelper delegate;
@Override
public String asString() {
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectData.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectData.java
index 40730f1..e880f51 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectData.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectData.java
@@ -25,11 +25,12 @@ import java.util.Map;
import org.apache.isis.metamodel.adapter.oid.Oid;
+import lombok.NoArgsConstructor;
+
final class ObjectData extends Data {
private static final long serialVersionUID = 3772154051989942219L;
- private final static Serializable NO_ENTRY = new Null();
private final Map<String, Object> fields = new HashMap<String, Object>();
public ObjectData(final Oid oid, final String className) {
@@ -56,6 +57,21 @@ final class ObjectData extends Data {
public String toString() {
return fields.toString();
}
+
+ // -- HELPER
+
+ private final static Serializable NO_ENTRY = new EmptyEntry();
+
+ @NoArgsConstructor
+ private final static class EmptyEntry implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String toString() {
+ return "NULL";
+ }
+
+ }
}
diff --git a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index 142a641..c379a87 100644
--- a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -47,7 +47,7 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.spec.feature.ObjectAction;
import org.apache.isis.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.runtime.memento.ObjectAdapterMemento;
-import org.apache.isis.runtime.memento.ObjectAdapterMementoSupport;
+import org.apache.isis.runtime.memento.ObjectAdapterMementoService;
import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.links.LinksProvider;
@@ -93,11 +93,11 @@ implements LinksProvider, UiHintContainer {
// rather than the compile-time type
val lowestCommonSuperclassFinder = new LowestCommonSuperclassFinder();
- val mementoSupport = model.getMementoSupport();
+ val mementoService = model.getMementoService();
val mementoList = streamElementsOf(collectionAsAdapter) // pojos
.peek(lowestCommonSuperclassFinder::collect)
- .map(pojo->ObjectAdapterMemento.ofPojo(pojo, mementoSupport))
+ .map(mementoService::mementoForPojo)
.collect(Collectors.toList());
val specificationLoader = model.getSpecificationLoader();
@@ -198,10 +198,10 @@ implements LinksProvider, UiHintContainer {
void setObject(EntityCollectionModel colModel, List<ManagedObject> adapterList) {
//XXX lombok issue, cannot use val here
- ObjectAdapterMementoSupport mementoSupport = colModel.getMementoSupport();
+ final ObjectAdapterMementoService mementoService = colModel.getMementoService();
colModel.mementoList = _NullSafe.stream(adapterList)
- .map(adapter->ObjectAdapterMemento.ofAdapter(adapter, mementoSupport))
+ .map(mementoService::mementoForAdapter)
.filter(_NullSafe::isPresent)
.collect(Collectors.toList());
}
@@ -479,7 +479,7 @@ implements LinksProvider, UiHintContainer {
*/
public void setObjectList(ManagedObject resultAdapter) {
this.mementoList = streamElementsOf(resultAdapter)
- .map(pojo->ObjectAdapterMemento.ofPojo(pojo, super.getMementoSupport()))
+ .map(super.getMementoService()::mementoForPojo)
.collect(Collectors.toList());
}
@@ -514,8 +514,7 @@ implements LinksProvider, UiHintContainer {
public void toggleSelectionOn(ManagedObject selectedAdapter) {
- ObjectAdapterMemento selectedAsMemento = ObjectAdapterMemento
- .ofAdapter(selectedAdapter, super.getMementoSupport());
+ val selectedAsMemento = super.getMementoService().mementoForAdapter(selectedAdapter);
// try to remove; if couldn't, then mustn't have been in there, in which case add.
boolean removed = toggledMementosList.remove(selectedAsMemento);
diff --git a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 73f163b..06593a3 100644
--- a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -341,7 +341,7 @@ implements ObjectAdapterModel, UiHintContainer {
@Override
public void setObject(ManagedObject adapter) {
super.setObject(adapter);
- adapterMemento = ObjectAdapterMemento.ofAdapter(adapter, super.getMementoSupport());
+ adapterMemento = super.getMementoService().mementoForAdapter(adapter);
}
public void setObjectMemento(final ObjectAdapterMemento adapterMemento) {
@@ -491,7 +491,7 @@ implements ObjectAdapterModel, UiHintContainer {
return pending;
}
val adapter = entityModel.getObject();
- return ObjectAdapterMemento.ofAdapter(adapter, entityModel.getMementoSupport());
+ return entityModel.getMementoService().mementoForAdapter(adapter);
}
@Override
diff --git a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModelForReference.java b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModelForReference.java
index eb77373..4aafc86 100644
--- a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModelForReference.java
+++ b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModelForReference.java
@@ -95,11 +95,11 @@ public class EntityModelForReference implements ObjectAdapterModel {
@Override
public PageParameters getPageParameters() {
- val mementoSupport = scalarModel.getMementoSupport();
+ val mementoService = scalarModel.getMementoService();
val hintStore = scalarModel.getCommonContext().lookupServiceElseFail(HintStore.class);
val pageParameters = createPageParameters(getObject());
- val objectAdapterMemento = ObjectAdapterMemento.ofAdapter(getObject(), mementoSupport);
+ val objectAdapterMemento = mementoService.mementoForAdapter(getObject());
HintPageParameterSerializer.hintStoreToPageParameters(pageParameters, objectAdapterMemento, hintStore);
return pageParameters;
diff --git a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index d88883a..cbeee5c 100644
--- a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -28,6 +28,7 @@ import java.util.stream.Stream;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.metamodel.consent.Consent;
@@ -56,6 +57,8 @@ import org.apache.isis.viewer.wicket.model.links.LinksProvider;
import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
+import lombok.val;
+
/**
@@ -837,8 +840,9 @@ implements LinksProvider, FormExecutorContext, ActionArgumentModel {
}
if(isCollection()) {
- ObjectAdapterMemento memento = ObjectAdapterMemento
- .ofIterablePojos(pojo, getTypeOfSpecification().getSpecId(), super.getMementoSupport());
+ val memento = super.getMementoService()
+ .mementoForPojos(_Casts.uncheckedCast(pojo), getTypeOfSpecification().getSpecId());
+
super.setObjectMemento(memento); // associated value
} else {
super.setObject(adapter); // associated value
@@ -859,12 +863,14 @@ implements LinksProvider, FormExecutorContext, ActionArgumentModel {
public void setPendingAdapter(final ManagedObject objectAdapter) {
if(isCollection()) {
- Object pojo = objectAdapter.getPojo();
- ObjectAdapterMemento memento = ObjectAdapterMemento
- .ofIterablePojos(pojo, getTypeOfSpecification().getSpecId(), super.getMementoSupport());
+ val pojos = objectAdapter.getPojo();
+ val memento = super.getMementoService()
+ .mementoForPojos(_Casts.uncheckedCast(pojos), getTypeOfSpecification().getSpecId());
setPending(memento);
} else {
- setPending(ObjectAdapterMemento.ofAdapter(objectAdapter, super.getMementoSupport()));
+ val memento = super.getMementoService()
+ .mementoForAdapter(objectAdapter);
+ setPending(memento);
}
}
diff --git a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ValueModel.java b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ValueModel.java
index ffa585b..63992cc 100644
--- a/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ValueModel.java
+++ b/core/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ValueModel.java
@@ -35,7 +35,7 @@ public class ValueModel extends ModelAbstract<ManagedObject> {
public ValueModel(IsisWebAppCommonContext commonContext, ManagedObject adapter) {
super(commonContext);
- adapterMemento = ObjectAdapterMemento.ofAdapter(adapter, super.getMementoSupport());
+ adapterMemento = super.getMementoService().mementoForAdapter(adapter);
}
@Override
diff --git a/core/viewers/wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java b/core/viewers/wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
index 459607c..65c5e4f 100644
--- a/core/viewers/wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
+++ b/core/viewers/wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
@@ -28,7 +28,7 @@ import org.apache.isis.metamodel.MetaModelContext;
import org.apache.isis.metamodel.MetaModelContext_forTesting;
import org.apache.isis.metamodel.objectmanager.ObjectManager;
import org.apache.isis.metamodel.spec.ObjectSpecification;
-import org.apache.isis.runtime.memento.ObjectAdapterMementoSupport;
+import org.apache.isis.runtime.memento.ObjectAdapterMementoService;
import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.webapp.context.IsisWebAppCommonContext;
@@ -45,7 +45,7 @@ public class ScalarModel_isScalarSubtypingAnyOf_Test {
@Mock ObjectSpecification mockObjectSpecification;
@Mock EntityModel mockEntityModel;
- @Mock ObjectAdapterMementoSupport mockObjectAdapterMementoSupport;
+ @Mock ObjectAdapterMementoService mockObjectAdapterMementoSupport;
@Mock ObjectManager mockObjectManager;
MetaModelContext metaModelContext;
diff --git a/core/webapp/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java b/core/webapp/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java
index 5a16b78..0b19630 100644
--- a/core/webapp/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java
+++ b/core/webapp/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java
@@ -33,7 +33,7 @@ import org.apache.isis.metamodel.adapter.oid.RootOid;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
import org.apache.isis.runtime.memento.ObjectAdapterMemento;
-import org.apache.isis.runtime.memento.ObjectAdapterMementoSupport;
+import org.apache.isis.runtime.memento.ObjectAdapterMementoService;
import org.apache.isis.runtime.system.session.IsisSession;
import lombok.AccessLevel;
@@ -63,7 +63,7 @@ public class IsisWebAppCommonContext implements MetaModelContext.Delegating {
private final MenuBarsService menuBarsService = lookupServiceElseFail(MenuBarsService.class);
@Getter(lazy = true, value = AccessLevel.PRIVATE)
- private final ObjectAdapterMementoSupport mementoSupport = lookupServiceElseFail(ObjectAdapterMementoSupport.class);
+ private final ObjectAdapterMementoService mementoService = lookupServiceElseFail(ObjectAdapterMementoService.class);
@Getter(lazy = true)
private final Function<Object, ManagedObject> pojoToAdapter = metaModelContext.getObjectManager()::adapt;
@@ -93,15 +93,15 @@ public class IsisWebAppCommonContext implements MetaModelContext.Delegating {
}
public ObjectAdapterMemento mementoFor(ManagedObject adapter) {
- return ObjectAdapterMemento.ofAdapter(adapter, getMementoSupport());
+ return getMementoService().mementoForAdapter(adapter);
}
public ObjectAdapterMemento mementoFor(RootOid rootOid) {
- return ObjectAdapterMemento.ofRootOid(rootOid, getMementoSupport());
+ return getMementoService().mementoForRootOid(rootOid);
}
public ManagedObject reconstructObject(ObjectAdapterMemento memento) {
- return getMementoSupport().reconstructObject(memento);
+ return getMementoService().reconstructObject(memento);
}
// -- COMMON CONTEXT PROVIDER INTERFACE
@@ -128,8 +128,8 @@ public class IsisWebAppCommonContext implements MetaModelContext.Delegating {
return getCommonContext().getSpecificationLoader();
}
- default ObjectAdapterMementoSupport getMementoSupport() {
- return getCommonContext().getMementoSupport();
+ default ObjectAdapterMementoService getMementoService() {
+ return getCommonContext().getMementoService();
}
default Function<Object, ManagedObject> getPojoToAdapter() {