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 19:52:49 UTC
[isis] branch master updated: ISIS-2033: dn integration: simplify
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 7c6eb48 ISIS-2033: dn integration: simplify
7c6eb48 is described below
commit 7c6eb48d0ebcf21edc3eae533e9d825d7db6cb07
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Dec 22 20:52:34 2020 +0100
ISIS-2033: dn integration: simplify
---
.../IsisPlatformTransactionManagerForJdo.java | 2 +-
.../persistence/PersistenceSession5.java | 6 ++--
.../jdo/integration/persistence/_ContextUtil.java | 9 +++++
.../jdo/integration/persistence/_Utils.java | 40 ++++++----------------
4 files changed, 23 insertions(+), 34 deletions(-)
diff --git a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/IsisPlatformTransactionManagerForJdo.java b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/IsisPlatformTransactionManagerForJdo.java
index 7aeba8d..96a5106 100644
--- a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/IsisPlatformTransactionManagerForJdo.java
+++ b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/IsisPlatformTransactionManagerForJdo.java
@@ -87,7 +87,7 @@ public class IsisPlatformTransactionManagerForJdo extends AbstractPlatformTransa
if(!isInInteraction) {
- if(_Utils.isJUnitTest()) {
+ if(_ContextUtil.isJUnitTest()) {
throw _Exceptions.illegalState("No InteractionSession available. "
+ "Transactions are expected to be within scope of an InteractionSession."
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 c9a048d..0a5c7b5 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
@@ -569,7 +569,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
// // viewModel's #viewModelMemento might need to use services
// serviceInjector.injectServicesInto(pojo); //redundant
- final RootOid originalOid = _Utils.createRootOid(getMetaModelContext(), this, pojo);
+ final RootOid originalOid = _Utils.createRootOid(getMetaModelContext(), getJdoPersistenceManager(), pojo);
final ManagedObject entity = _Utils.recreatePojo(getMetaModelContext(), originalOid, pojo);
getEntityChangeTracker().recognizeLoaded(entity);
@@ -623,7 +623,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
@Override
public void enlistUpdatingAndInvokeIsisUpdatingCallback(final Persistable pojo) {
- val entity = _Utils.fetchPersistent(getMetaModelContext(), this, 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);
@@ -633,7 +633,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
@Override
public void invokeIsisUpdatedCallback(Persistable pojo) {
- val entity = _Utils.fetchPersistent(getMetaModelContext(), this, 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);
diff --git a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/_ContextUtil.java b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/_ContextUtil.java
index 05382b3..6143dc0 100644
--- a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/_ContextUtil.java
+++ b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/persistence/_ContextUtil.java
@@ -54,4 +54,13 @@ final class _ContextUtil {
return Optional.ofNullable(metaModelContext);
}
+ static boolean isJUnitTest() {
+ for (StackTraceElement element : Thread.currentThread().getStackTrace()) {
+ if (element.getClassName().startsWith("org.junit.")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
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 dfb3878..17e1442 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
@@ -19,18 +19,18 @@
package org.apache.isis.persistence.jdo.integration.persistence;
import javax.annotation.Nullable;
+import javax.jdo.PersistenceManager;
import javax.jdo.listener.InstanceLifecycleEvent;
import org.datanucleus.enhancement.Persistable;
-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;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.persistence.jdo.integration.oid.JdoObjectIdSerializer;
import lombok.NonNull;
import lombok.val;
@@ -45,15 +45,6 @@ final class _Utils {
return pojo!=null; // why would a Persistable ever be something different?
}
- static boolean isJUnitTest() {
- for (StackTraceElement element : Thread.currentThread().getStackTrace()) {
- if (element.getClassName().startsWith("org.junit.")) {
- return true;
- }
- }
- return false;
- }
-
@Nullable
static ManagedObject adapterFor(
final MetaModelContext mmc,
@@ -88,12 +79,12 @@ final class _Utils {
static RootOid createRootOid(
final @NonNull MetaModelContext mmc,
- final @NonNull IsisPersistenceSessionJdo persistenceSession, // TODO don't depend on session
+ final @NonNull PersistenceManager pm,
final @NonNull Object pojo) {
val spec = mmc.getSpecification(pojo.getClass());
- final String identifier = persistenceSession.identifierFor(pojo);
+ final String identifier = JdoObjectIdSerializer.identifierForElseFail(pm, pojo);
final ObjectSpecId objectSpecId = spec.getSpecId();
return Oid.Factory.root(objectSpecId, identifier);
@@ -101,38 +92,27 @@ final class _Utils {
static ManagedObject recreatePojo(
final @NonNull MetaModelContext mmc,
- final @NonNull RootOid oid,
+ final @NonNull RootOid rootOid,
final @NonNull Object recreatedPojo) {
val spec = mmc.getSpecification(recreatedPojo.getClass());
- final ManagedObject createdAdapter = createRootOrAggregatedAdapter(spec, oid, recreatedPojo);
+ final ManagedObject createdAdapter = ManagedObject.identified(spec, recreatedPojo, rootOid);
return injectServices(mmc, createdAdapter);
}
static ManagedObject fetchPersistent(
final @NonNull MetaModelContext mmc,
- final @NonNull IsisPersistenceSessionJdo persistenceSession, // TODO don't depend on session
+ final @NonNull PersistenceManager pm,
final Object pojo) {
- if (persistenceSession.getJdoPersistenceManager().getObjectId(pojo) == null) {
+ if (pm.getObjectId(pojo) == null) {
return null;
}
- final RootOid oid = createRootOid(mmc, persistenceSession, pojo);
+ final RootOid oid = createRootOid(mmc, pm, pojo);
final ManagedObject adapter = recreatePojo(mmc, oid, pojo);
return adapter;
}
-
- private static ManagedObject createRootOrAggregatedAdapter(
- final @NonNull ObjectSpecification spec,
- final RootOid oid,
- final Object pojo) {
-
- if(oid instanceof RootOid) {
- final RootOid rootOid = (RootOid) oid;
- return ManagedObject.identified(spec, pojo, rootOid);
- }
- throw _Exceptions.illegalArgument("Parented Oids are no longer supported, or cannot use Value Oid.");
- }
+
// @SuppressWarnings("unused")
// private static Object jdoObjectIdFor(InstanceLifecycleEvent event) {