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();