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 09:36:03 UTC

[isis] branch master updated: ISIS-2340: ManagedObjects: move and gather entity utility methods (3)

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 f17548a  ISIS-2340: ManagedObjects: move and gather entity utility methods (3)
f17548a is described below

commit f17548a1f03bccb7766fe8a7ec622e45cf8a63cf
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jun 5 11:35:48 2020 +0200

    ISIS-2340: ManagedObjects: move and gather entity utility methods (3)
---
 .../isis/core/metamodel/spec/ManagedObject.java    | 26 ----------------------
 .../isis/core/metamodel/spec/ManagedObjects.java   | 22 +++++++++++++++++-
 .../specimpl/OneToManyAssociationDefault.java      |  3 ++-
 .../specimpl/OneToOneAssociationDefault.java       |  3 ++-
 .../domainobjects/DomainObjectReprRenderer.java    | 12 ----------
 5 files changed, 25 insertions(+), 41 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 7e6fd41..4bc1963 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
@@ -25,7 +25,6 @@ import java.util.function.Function;
 import javax.annotation.Nullable;
 
 import org.apache.isis.applib.domain.DomainObjectList;
-import org.apache.isis.applib.services.repository.EntityState;
 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;
@@ -33,7 +32,6 @@ import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.objectmanager.create.ObjectCreator;
 import org.apache.isis.core.metamodel.objectmanager.load.ObjectLoader;
-import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault;
 
@@ -239,30 +237,6 @@ public interface ManagedObject {
 
     // -- DEPRECATIONS (REFACTORING)
 
-    static void _whenFirstIsBookmarkable_ensureSecondIsAsWell(
-            ManagedObject first,
-            ManagedObject second) {
-
-        if(ManagedObjects.isIdentifiable(first) && ManagedObjects.isSpecified(second)) {
-
-            val refSpec = second.getSpecification();
-
-            if(refSpec.isParented() || !refSpec.isEntity()) {
-                return;
-            }
-
-            val entityState = EntityUtil.getEntityState(second);
-            if(entityState != EntityState.PERSISTABLE_ATTACHED) {
-                throw _Exceptions.illegalArgument(
-                        "can't set a reference to a transient object [%s] from a persistent one [%s]",
-                        second,
-                        first.titleString(null));
-            }
-            
-        }
-
-    }
-
     // move this to ObjectManager?
     static ManagedObject _adapterOfRootOid(SpecificationLoader specificationLoader, RootOid rootOid) {
 
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 20ee19f..e6ba200 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
@@ -293,7 +293,7 @@ public final class ManagedObjects {
                 _Assert.assertEquals(
                         EntityState.PERSISTABLE_ATTACHED, 
                         entityState,
-                        ()-> String.format("entity %s is required to be attached (not detached) at this stage", 
+                        ()-> String.format("entity %s is required to be attached (not detached)", 
                                 managedObject.getSpecification().getSpecId()));
             }
             return managedObject;
@@ -326,6 +326,26 @@ public final class ManagedObjects {
             return managedObject.getObjectManager().loadObject(objectLoadRequest);
         }
         
+        public static void requiresWhenFirstIsBookmarkableSecondIsAttached(
+                ManagedObject first,
+                ManagedObject second) {
+
+            if(!ManagedObjects.isIdentifiable(first) || !ManagedObjects.isSpecified(second)) {
+                return;
+            }
+            val secondSpec = second.getSpecification();
+            if(secondSpec.isParented() || !secondSpec.isEntity()) {
+                return;
+            }
+
+            if(!EntityUtil.getEntityState(second).isAttached()) {
+                throw _Exceptions.illegalArgument(
+                        "can't set a reference to a transient object [%s] from a persistent one [%s]",
+                        second,
+                        first.titleString(null));
+            }
+        }
+        
         // -- SHORTCUTS
         
         public static boolean isDestroyed(@Nullable ManagedObject adapter) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index 2b0371c..0d73fad 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -43,6 +43,7 @@ import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 
@@ -196,7 +197,7 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
         }
         if (readWrite()) {
             
-            ManagedObject._whenFirstIsBookmarkable_ensureSecondIsAsWell(
+            EntityUtil.requiresWhenFirstIsBookmarkableSecondIsAttached(
                     ownerAdapter, 
                     referencedAdapter);
                     
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index fa44341..e33928c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -50,6 +50,7 @@ import org.apache.isis.core.metamodel.interactions.ValidityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.schema.cmd.v2.CommandDto;
@@ -193,7 +194,7 @@ implements OneToOneAssociation {
             return;
         }
         
-        ManagedObject._whenFirstIsBookmarkable_ensureSecondIsAsWell(ownerAdapter, newReferencedAdapter);
+        EntityUtil.requiresWhenFirstIsBookmarkableSecondIsAttached(ownerAdapter, newReferencedAdapter);
 
         propertySetterFacet.setProperty(this, ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
     }
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index b07b693..ee81816 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -281,18 +281,6 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
         getLinks().arrayAdd(link);
     }
 
-//    private String getDomainType() {
-//        return ManagedObjects.getDomainType(objectAdapter).orElse("?");
-//    }
-//
-//    private String getInstanceId() {
-//        return ManagedObject._instanceId(objectAdapter);
-//    }
-
-//    private String getOidStr() {
-//        return ManagedObjects.stringifyElseFail(objectAdapter);
-//    }
-
     private DomainObjectReprRenderer withMembers(final ManagedObject objectAdapter) {
         final JsonRepresentation appendTo =
                 mode.isUpdatePropertiesLinkArgs() ? representation : JsonRepresentation.newMap();