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 2020/12/22 20:29:07 UTC
[isis] branch master updated: ISIS-2033: dn integration: simplify
(2)
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 75c5e81 ISIS-2033: dn integration: simplify (2)
75c5e81 is described below
commit 75c5e8101a218ac7c6e4e785b9e7368ee105f8b1
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Dec 22 21:28:51 2020 +0100
ISIS-2033: dn integration: simplify (2)
---
.../persistence/PersistenceSession5.java | 21 ++-------
.../jdo/integration/persistence/_Utils.java | 55 ++++++++++------------
2 files changed, 28 insertions(+), 48 deletions(-)
diff --git a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/PersistenceSession5.java b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/PersistenceSession5.java
index 0a5c7b5..c91e8bc 100644
--- a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/PersistenceSession5.java
+++ b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/PersistenceSession5.java
@@ -565,12 +565,8 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
@Override
public ManagedObject initializeEntity(final Persistable pojo) {
-// // need to do eagerly, because (if a viewModel then) a
-// // viewModel's #viewModelMemento might need to use services
-// serviceInjector.injectServicesInto(pojo); //redundant
-
- final RootOid originalOid = _Utils.createRootOid(getMetaModelContext(), getJdoPersistenceManager(), pojo);
- final ManagedObject entity = _Utils.recreatePojo(getMetaModelContext(), originalOid, pojo);
+ final ManagedObject entity = _Utils
+ .identify(getMetaModelContext(), getJdoPersistenceManager(), pojo);
getEntityChangeTracker().recognizeLoaded(entity);
@@ -582,7 +578,6 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
return JdoObjectIdSerializer.identifierForElseFail(getJdoPersistenceManager(), pojo);
}
-
/**
* Called either when an entity is initially persisted, or when an entity is updated; fires the appropriate
* lifecycle callback.
@@ -623,21 +618,13 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
@Override
public void enlistUpdatingAndInvokeIsisUpdatingCallback(final Persistable pojo) {
- val entity = _Utils.fetchPersistent(getMetaModelContext(), getJdoPersistenceManager(), pojo);
- if (entity == null) {
- throw _Exceptions
- .noSuchElement("DN could not find objectId for pojo (unexpected); pojo=[%s]", pojo);
- }
+ val entity = _Utils.fetchEntityElseFail(getMetaModelContext(), getJdoPersistenceManager(), pojo);
getEntityChangeTracker().enlistUpdating(entity);
}
@Override
public void invokeIsisUpdatedCallback(Persistable pojo) {
- val entity = _Utils.fetchPersistent(getMetaModelContext(), getJdoPersistenceManager(), pojo);
- if (entity == null) {
- throw _Exceptions
- .noSuchElement("DN could not find objectId for pojo (unexpected); pojo=[%s]", pojo);
- }
+ val entity = _Utils.fetchEntityElseFail(getMetaModelContext(), getJdoPersistenceManager(), pojo);
// the callback and transaction.enlist are done in the preStore callback
// (can't be done here, as the enlist requires to capture the 'before' values)
getEntityChangeTracker().recognizeUpdating(entity);
diff --git a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/_Utils.java b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/_Utils.java
index 17e1442..7eab3e9 100644
--- a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/_Utils.java
+++ b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/_Utils.java
@@ -24,6 +24,8 @@ import javax.jdo.listener.InstanceLifecycleEvent;
import org.datanucleus.enhancement.Persistable;
+import org.apache.isis.commons.functional.Result;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.context.MetaModelContext;
@@ -77,48 +79,39 @@ final class _Utils {
return adapter;
}
- static RootOid createRootOid(
+ static ManagedObject fetchEntityElseFail(
final @NonNull MetaModelContext mmc,
final @NonNull PersistenceManager pm,
- final @NonNull Object pojo) {
+ final @Nullable Object pojo) {
+
+ return Result.of(()->{
+
+ if (pm.getObjectId(pojo) == null) {
+ throw _Exceptions
+ .noSuchElement("DN could not find objectId for pojo (unexpected); pojo=[%s]", pojo);
+ }
+ final ManagedObject adapter = identify(mmc, pm, pojo);
+ return adapter;
+
+ })
+ .orElseFail();
+ }
+ static ManagedObject identify(
+ final @NonNull MetaModelContext mmc,
+ final @NonNull PersistenceManager pm,
+ final @NonNull Object pojo) {
+
val spec = mmc.getSpecification(pojo.getClass());
final String identifier = JdoObjectIdSerializer.identifierForElseFail(pm, pojo);
final ObjectSpecId objectSpecId = spec.getSpecId();
- return Oid.Factory.root(objectSpecId, identifier);
- }
-
- static ManagedObject recreatePojo(
- final @NonNull MetaModelContext mmc,
- final @NonNull RootOid rootOid,
- final @NonNull Object recreatedPojo) {
+ final RootOid rootOid = Oid.Factory.root(objectSpecId, identifier);
- val spec = mmc.getSpecification(recreatedPojo.getClass());
-
- final ManagedObject createdAdapter = ManagedObject.identified(spec, recreatedPojo, rootOid);
+ final ManagedObject createdAdapter = ManagedObject.identified(spec, pojo, rootOid);
return injectServices(mmc, createdAdapter);
}
- static ManagedObject fetchPersistent(
- final @NonNull MetaModelContext mmc,
- final @NonNull PersistenceManager pm,
- final Object pojo) {
- if (pm.getObjectId(pojo) == null) {
- return null;
- }
- final RootOid oid = createRootOid(mmc, pm, pojo);
- final ManagedObject adapter = recreatePojo(mmc, oid, pojo);
- return adapter;
- }
-
-
-// @SuppressWarnings("unused")
-// private static Object jdoObjectIdFor(InstanceLifecycleEvent event) {
-// final Persistable persistable = persistableFor(event);
-// final Object jdoObjectId = persistable.dnGetObjectId();
-// return jdoObjectId;
-// }
}