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

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


The following commit(s) were added to refs/heads/maintenance-branch by this 
push:
     new cd9e90da0a CAUSEWAY-3802: checks visibility prior to obtaining data row
     new 4f95dca555 Merge branch 'CAUSEWAY-3802' into maintenance-branch
cd9e90da0a is described below

commit cd9e90da0ad281a64d607d669020be2cb477fb45
Author: Dan Haywood <[email protected]>
AuthorDate: Mon Jul 8 21:53:28 2024 +0100

    CAUSEWAY-3802: checks visibility prior to obtaining data row
---
 .../causeway/core/metamodel/tabular/simple/DataRow.java  | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/tabular/simple/DataRow.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/tabular/simple/DataRow.java
index 803d075ca4..45d69c8b9a 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/tabular/simple/DataRow.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/tabular/simple/DataRow.java
@@ -18,8 +18,12 @@
  */
 package org.apache.causeway.core.metamodel.tabular.simple;
 
+import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.commons.collections.Can;
+import org.apache.causeway.core.metamodel.consent.Consent;
 import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
+import 
org.apache.causeway.core.metamodel.interactions.managed.ManagedCollection;
+import org.apache.causeway.core.metamodel.interactions.managed.ManagedProperty;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.object.ManagedObjects;
 
@@ -52,8 +56,16 @@ public class DataRow {
             final InteractionInitiatedBy interactionInitiatedBy) {
         var assoc = column.getMetamodel();
         return assoc.getSpecialization().fold(
-                property->Can.of(property.get(getRowElement(), 
interactionInitiatedBy)),
-                
collection->ManagedObjects.unpack(collection.get(getRowElement(), 
interactionInitiatedBy)));
+                property-> Can.of(
+                        // similar to ManagedProperty#reassessPropertyValue
+                        property.isVisible(getRowElement(), 
interactionInitiatedBy, Where.ALL_TABLES).isAllowed()
+                                ? property.get(getRowElement(), 
interactionInitiatedBy)
+                                : 
ManagedObject.empty(property.getElementType())),
+                collection-> ManagedObjects.unpack(
+                        collection.isVisible(getRowElement(), 
interactionInitiatedBy, Where.ALL_TABLES).isAllowed()
+                                ? collection.get(getRowElement(), 
interactionInitiatedBy)
+                                : null
+                ));
     }
 
 }

Reply via email to