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/01/22 19:48:21 UTC

[isis] branch master updated: ISIS-2158: fail more verbose if action result produces a detached entity

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 ad7c381  ISIS-2158: fail more verbose if action result produces a detached entity
ad7c381 is described below

commit ad7c38190f49ed1f2b47a9de6caccde39ce12d2f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jan 22 20:48:11 2020 +0100

    ISIS-2158: fail more verbose if action result produces a detached entity
---
 .../persistencecapable/JdoPersistenceCapableFacetImpl.java | 14 ++++++++++----
 .../isis/viewer/wicket/ui/panels/FormExecutorDefault.java  |  6 +++---
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetImpl.java b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetImpl.java
index 74f803b..81790fd 100644
--- a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetImpl.java
+++ b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetImpl.java
@@ -19,7 +19,6 @@
 package org.apache.isis.persistence.jdo.datanucleus5.metamodel.facets.object.persistencecapable;
 
 import java.lang.reflect.Method;
-import java.util.UUID;
 
 import javax.jdo.annotations.IdentityType;
 
@@ -64,7 +63,7 @@ public class JdoPersistenceCapableFacetImpl extends JdoPersistenceCapableFacetAb
     @Override
     public String identifierFor(ObjectSpecification spec, Object pojo) {
 
-        //TODO simplify, spec is already loaded
+        //TODO simplify?, spec is already loaded
         
         if(pojo==null || !isPersistableType(pojo.getClass())) {
             return "?";
@@ -76,8 +75,15 @@ public class JdoPersistenceCapableFacetImpl extends JdoPersistenceCapableFacetAb
             final String identifier = persistenceSession.identifierFor(pojo);
             return identifier;
         } else {
-            final String identifier = UUID.randomUUID().toString();
-            return identifier;    
+            
+            throw _Exceptions.illegalArgument(
+                    "The persistence layer does not recognize given object of type %s, "
+                    + "meaning the object has no identifier that associates it with the persistence layer. "
+                    + "(most likely, because the object is detached, eg. was not persisted after being new-ed up)", 
+                    pojo.getClass().getName());
+            
+            //final String identifier = UUID.randomUUID().toString();
+            //return identifier;    
         }
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index f61b6fb..7213fa3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -166,9 +166,9 @@ implements FormExecutor {
                 redirectFacet = actionModel.getActionMemento().getAction(getSpecificationLoader()).getFacet(RedirectFacet.class);
             }
 
-            if (shouldRedirect(targetAdapter, resultAdapter, redirectFacet) ||
-                    hasBlobsOrClobs(page)                                       ||
-                    targetIfAny == null                                             ) {
+            if (shouldRedirect(targetAdapter, resultAdapter, redirectFacet) 
+                    || hasBlobsOrClobs(page)                                       
+                    || targetIfAny == null) {
 
                 redirectTo(resultAdapter, targetIfAny);