You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2026/06/23 15:06:50 UTC

(causeway) branch CAUSEWAY-4039 updated: CAUSEWAY-4039 : save result adapter even if view model

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-4039
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/CAUSEWAY-4039 by this push:
     new 40f348f894c CAUSEWAY-4039 : save result adapter even if view model
40f348f894c is described below

commit 40f348f894cd18c796eb50d24bbe04c4778ca91b
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jun 23 16:06:38 2026 +0100

    CAUSEWAY-4039 : save result adapter even if view model
---
 ...tionInvocationFacetForParentedCollectionNavigation.java | 14 +++-----------
 .../ActionInvocationFacetForScalarReferenceNavigation.java | 14 +++-----------
 .../executor/MemberExecutorServiceDefault.java             |  8 ++------
 3 files changed, 8 insertions(+), 28 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/synthetic/ActionInvocationFacetForParentedCollectionNavigation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/synthetic/ActionInvocationFacetForParentedCollectionNavigation.java
index 540c7277a07..7aa95245c00 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/synthetic/ActionInvocationFacetForParentedCollectionNavigation.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/synthetic/ActionInvocationFacetForParentedCollectionNavigation.java
@@ -98,7 +98,7 @@ public ManagedObject invoke(
             throw new RecoverableException(validationMessage);
         }
         val singleMatch = matchResult.singleMatch();
-        setCommandResultIfBookmarkable(command, singleMatch, interactionInitiatedBy);
+        setCommandResultIfBookmarkable(command, singleMatch);
         return singleMatch;
     }
 
@@ -127,16 +127,8 @@ private void prepareCommandForPublishing(
 
     private void setCommandResultIfBookmarkable(
             final Command command,
-            final ManagedObject result,
-            final InteractionInitiatedBy interactionInitiatedBy) {
-        if(command == null || interactionInitiatedBy.isPassThrough() || command.getResult() != null) {
-            return;
-        }
-        val entityState = result.getEntityState();
-        if(!entityState.isPersistable() || !entityState.hasOid()) {
-            return;
-        }
-        result.getBookmark()
+            final ManagedObject resultAdapter) {
+        resultAdapter.getBookmark()
                 .ifPresent(bookmark -> command.updater().setResult(Try.success(bookmark)));
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/synthetic/ActionInvocationFacetForScalarReferenceNavigation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/synthetic/ActionInvocationFacetForScalarReferenceNavigation.java
index 957d85bec69..1ed38fb4855 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/synthetic/ActionInvocationFacetForScalarReferenceNavigation.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/synthetic/ActionInvocationFacetForScalarReferenceNavigation.java
@@ -86,7 +86,7 @@ public ManagedObject invoke(
         if (DisabledFacetForNullScalarReferenceNavigation.isNullReference(referencedObject)) {
             throw new RecoverableException(DisabledFacetForNullScalarReferenceNavigation.REASON);
         }
-        setCommandResultIfBookmarkable(command, referencedObject, interactionInitiatedBy);
+        setCommandResultIfBookmarkable(command, referencedObject);
         return referencedObject;
     }
 
@@ -115,16 +115,8 @@ private void prepareCommandForPublishing(
 
     private void setCommandResultIfBookmarkable(
             final Command command,
-            final ManagedObject result,
-            final InteractionInitiatedBy interactionInitiatedBy) {
-        if (command == null || interactionInitiatedBy.isPassThrough() || command.getResult() != null) {
-            return;
-        }
-        val entityState = result.getEntityState();
-        if (!entityState.isPersistable() || !entityState.hasOid()) {
-            return;
-        }
-        result.getBookmark()
+            final ManagedObject resultAdapter) {
+        resultAdapter.getBookmark()
                 .ifPresent(bookmark -> command.updater().setResult(Try.success(bookmark)));
     }
 
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java
index b0e075a08bc..ffd13dbe60b 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java
@@ -339,13 +339,9 @@ private Optional<ManagedObject> singletonResultCandidate(final ManagedObject res
     private void setCommandResultIfEntityScalar(
             final Command command,
             final ManagedObject resultAdapter) {
-        val entityState = resultAdapter.getEntityState();
-        if (!(entityState.isPersistable() || entityState.hasOid())) {
-            return;
-        }
+        final var entityState = resultAdapter.getEntityState();
         if(entityState.isPersistable()) {
-            if(entityState.isHollow()
-                    || entityState.isDetached()) {
+            if(entityState.isHollow() || entityState.isDetached()) {
                 // ensure that any still-to-be-persisted adapters get persisted to DB.
                 getTransactionService().flushTransaction();
             }