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) {