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
+ ));
}
}