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/06/05 10:47:26 UTC

[isis] 01/02: ISIS-2340: ManagedObjects: move and gather entity utility methods (4)

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

commit 838e2670e0230797849dade7c840e0b23c0f4fce
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jun 5 12:43:13 2020 +0200

    ISIS-2340: ManagedObjects: move and gather entity utility methods (4)
---
 .../isis/core/metamodel/spec/ManagedObject.java    | 28 ----------------------
 .../isis/core/metamodel/spec/ManagedObjects.java   | 26 ++++++++++++++++++++
 .../repository/RepositoryServiceDefault.java       |  5 ++--
 .../handlers/DomainObjectInvocationHandler.java    |  3 ++-
 .../resources/DomainObjectResourceServerside.java  |  5 ++--
 5 files changed, 33 insertions(+), 34 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index 7e6ef18..b65cb7e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -27,7 +27,6 @@ import javax.annotation.Nullable;
 import org.apache.isis.core.commons.internal.base._Lazy;
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 
 import lombok.EqualsAndHashCode;
@@ -232,33 +231,6 @@ public interface ManagedObject {
 
     // -- DEPRECATIONS (REFACTORING)
 
-    static void _makePersistentInTransaction(ManagedObject adapter) {
-
-        val spec = adapter.getSpecification();
-        if(spec.isEntity()) {
-            val entityFacet = spec.getFacet(EntityFacet.class);
-            entityFacet.persist(spec, adapter.getPojo());
-            return;
-        }
-
-        throw _Exceptions.illegalArgument("not an entity type %s (sort=%s)", spec.getCorrespondingClass(), spec.getBeanSort());
-    }
-    
-    static void _destroyObjectInTransaction(ManagedObject adapter) {
-        // legacy of
-        //getPersistenceSession().destroyObjectInTransaction(adapter);
-        
-        val spec = adapter.getSpecification();
-        if(spec.isEntity()) {
-            val entityFacet = spec.getFacet(EntityFacet.class);
-            entityFacet.delete(spec, adapter.getPojo());
-            return;
-        }
-
-        throw _Exceptions.unexpectedCodeReach();
-    }
-
-
     static boolean _isParentedCollection(ManagedObject adapter) {
         
         //legacy of (FIXME not a perfect match)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
index 738a2c3..d576897 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -280,6 +280,32 @@ public final class ManagedObjects {
             return entityFacet.getEntityState(pojo);
         }
         
+        public static void persistInTransaction(ManagedObject managedObject) {
+            requiresEntity(managedObject);
+            val spec = managedObject.getSpecification();
+            val entityFacet = spec.getFacet(EntityFacet.class);
+            entityFacet.persist(spec, managedObject.getPojo());
+        }
+        
+        public static void destroyInTransaction(ManagedObject managedObject) {
+            requiresEntity(managedObject);
+            val spec = managedObject.getSpecification();
+            val entityFacet = spec.getFacet(EntityFacet.class);
+            entityFacet.delete(spec, managedObject.getPojo());
+        }
+        
+        public static void requiresEntity(ManagedObject managedObject) {
+            if(isNullOrUnspecifiedOrEmpty(managedObject)) {
+                throw _Exceptions.illegalArgument("requires an entity object but got null, unspecified or empty");
+            }
+            val spec = managedObject.getSpecification();
+            if(!spec.isEntity()) {
+                throw _Exceptions.illegalArgument("not an entity type %s (sort=%s)",
+                        spec.getCorrespondingClass(), 
+                        spec.getBeanSort());                
+            }
+        }
+        
         /**
          * @param managedObject
          * @return managedObject
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
index cca5c28..c3a078a 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
@@ -50,7 +50,6 @@ import org.apache.isis.core.commons.internal.base._NullSafe;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.objectmanager.query.ObjectBulkLoader;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.metamodel.spec.ManagedObjects.UnwrapUtil;
 
@@ -100,7 +99,7 @@ public class RepositoryServiceDefault implements RepositoryService {
         if(!EntityUtil.isDetached(adapter)) {
             return domainObject;
         }
-        ManagedObject._makePersistentInTransaction(adapter);
+        EntityUtil.persistInTransaction(adapter);
         return domainObject;
     }
 
@@ -119,7 +118,7 @@ public class RepositoryServiceDefault implements RepositoryService {
         }
         val adapter = objectManager.adapt(unwrapped(domainObject));
         if(EntityUtil.isAttached(adapter)) {
-            ManagedObject._destroyObjectInTransaction(adapter);   
+            EntityUtil.destroyInTransaction(adapter);   
         }
     }
 
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
index b373263..62072f7 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -53,6 +53,7 @@ import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.metamodel.spec.ManagedObjects.UnwrapUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -384,7 +385,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         val spec = targetAdapter.getSpecification();
         if(spec.isEntity()) {
             return runExecutionTask(()->{
-                ManagedObject._makePersistentInTransaction(targetAdapter);
+                EntityUtil.persistInTransaction(targetAdapter);
                 return null;
             }); 
         }
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
index 54cbe2f..a1d4d83 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainObjectResourceServerside.java
@@ -61,6 +61,7 @@ import org.apache.isis.core.metamodel.interactions.managed.PropertyInteraction;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.runtime.iactn.IsisInteractionTracker;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.Rel;
@@ -137,8 +138,8 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
             throw RestfulObjectsApplicationException.createWithBody(HttpStatusCode.BAD_REQUEST, objectRepr, validity.getReason());
         }
 
-        ManagedObject._makePersistentInTransaction(adapter);
-
+        EntityUtil.persistInTransaction(adapter);
+        
         val domainResourceHelper = DomainResourceHelper.ofObjectResource(resourceContext, adapter);
 
         return domainResourceHelper.objectRepresentation();