You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2026/05/20 13:47:35 UTC

(causeway) branch 3997-v2.col.ord.patch updated: CAUSEWAY-3997: [v2] fix for potentially wrong Where context (backport)

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

andi-huber pushed a commit to branch 3997-v2.col.ord.patch
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/3997-v2.col.ord.patch by this push:
     new 24d42ea4b33 CAUSEWAY-3997: [v2] fix for potentially wrong Where context (backport)
24d42ea4b33 is described below

commit 24d42ea4b3373b013262c5ba4207fed264f90fb1
Author: andi-huber <ah...@apache.org>
AuthorDate: Wed May 20 15:47:21 2026 +0200

    CAUSEWAY-3997: [v2] fix for potentially wrong Where context (backport)
---
 .../spec/feature/ObjectActionContainer.java        |  4 ++-
 .../specimpl/dflt/ObjectSpecificationDefault.java  |  7 +++--
 .../specimpl/dflt/_MembersAsColumns.java           |  5 ++--
 .../wicket/model/models/EntityCollectionModel.java | 30 +++++++++++-----------
 .../viewer/wicket/model/models/UiObjectWkt.java    |  2 +-
 .../CollectionContentsAsAjaxTablePanel.java        |  4 +--
 .../ajaxtable/columns/ActionColumn.java            |  7 +++--
 .../ajaxtable/columns/SingularColumn.java          |  2 +-
 8 files changed, 30 insertions(+), 31 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/ObjectActionContainer.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/ObjectActionContainer.java
index cb6ade78d65..405a4bab327 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/ObjectActionContainer.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/spec/feature/ObjectActionContainer.java
@@ -23,6 +23,7 @@
 import java.util.stream.Stream;
 
 import org.apache.causeway.applib.Identifier;
+import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.commons.collections.ImmutableEnumSet;
 import org.apache.causeway.commons.internal.exceptions._Exceptions;
 import org.apache.causeway.core.metamodel.spec.ActionScope;
@@ -143,8 +144,9 @@ default Stream<ObjectAction> streamAnyActions(final MixedIn mixedIn) {
     
     /**
      * Actions visible in dedicated actions-column, honoring order and visibility.
+     * @param where either {@link Where#STANDALONE_TABLES} or {@link Where#PARENTED_TABLES}
      */
-    Stream<ObjectAction> streamActionsForColumnRendering(Identifier memberIdentifier);
+    Stream<ObjectAction> streamActionsForColumnRendering(Where where);
 
     // -- ACTION STREAM (NO INHERITANCE)
 
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 534ff749785..82c4b8553ea 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -25,8 +25,8 @@
 import java.util.function.BiConsumer;
 import java.util.stream.Stream;
 
-import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.Introspection.IntrospectionPolicy;
+import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.commons.collections.ImmutableEnumSet;
 import org.apache.causeway.commons.internal.base._Casts;
@@ -320,10 +320,9 @@ public Stream<ObjectAssociation> streamAssociationsForColumnRendering(ColumnQuer
 	}
     
     @Override
-    public Stream<ObjectAction> streamActionsForColumnRendering(
-            final Identifier memberIdentifier) {
+    public Stream<ObjectAction> streamActionsForColumnRendering(final Where where) {
         return new _MembersAsColumns(getMetaModelContext())
-                .streamActionsForColumnRendering(this, memberIdentifier);
+                .streamActionsForColumnRendering(this, where);
     }
 
     // -- DETERMINE INJECTABILITY
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/_MembersAsColumns.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/_MembersAsColumns.java
index 663b2410fb9..87283bba1bf 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/_MembersAsColumns.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/dflt/_MembersAsColumns.java
@@ -29,7 +29,6 @@
 import java.util.Optional;
 import java.util.stream.Stream;
 
-import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.applib.layout.component.PropertyLayoutData;
 import org.apache.causeway.applib.services.tablecol.TableColumnOrderService;
@@ -66,12 +65,12 @@ public class _MembersAsColumns {
 
     public Stream<ObjectAction> streamActionsForColumnRendering(
             final ObjectSpecification elementType,
-            final Identifier memberIdentifier) {
+            final Where where) {
         if(elementType.isValue())
 			return Stream.empty();
 
         return elementType.streamRuntimeActions(MixedIn.INCLUDED)
-            .filter(ObjectAction.Predicates.visibleAccordingToHiddenFacet(Where.STANDALONE_TABLES))
+            .filter(ObjectAction.Predicates.visibleAccordingToHiddenFacet(where))
             .sorted((a, b)->a.getCanonicalFriendlyName().compareTo(b.getCanonicalFriendlyName()));
     }
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/EntityCollectionModel.java b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/EntityCollectionModel.java
index 89926b8c11f..ccc4142c05e 100644
--- a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/EntityCollectionModel.java
@@ -20,10 +20,9 @@
 
 import java.util.Optional;
 
-import org.apache.wicket.model.IModel;
-
 import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.TableDecorator;
+import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.applib.services.bookmark.Bookmark;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
@@ -31,8 +30,8 @@
 import org.apache.causeway.core.metamodel.tabular.interactive.DataTableInteractive;
 import org.apache.causeway.viewer.commons.model.hints.RenderingHint;
 import org.apache.causeway.viewer.wicket.model.links.LinksProvider;
+import org.apache.wicket.model.IModel;
 
-import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
 public interface EntityCollectionModel
@@ -56,25 +55,26 @@ public enum Variant {
         /**
          * A collection of an entity (eg Order/OrderDetail).
          */
-        PARENTED(RenderingHint.PARENTED_PROPERTY_COLUMN, 12),
-        ;
+        PARENTED(RenderingHint.PARENTED_PROPERTY_COLUMN, 12);
 
-        @Getter private final RenderingHint columnRenderingHint;
-        @Getter private final int pageSizeDefault;
+        public final RenderingHint columnRenderingHint;
+        public final int pageSizeDefault;
 
-        public RenderingHint getTitleColumnRenderingHint() {
+        public boolean isStandalone() { return this == STANDALONE; }
+        public boolean isParented() { return this == PARENTED; }
+        
+        public RenderingHint titleColumnRenderingHint() {
             return isParented()
                 ? RenderingHint.PARENTED_TITLE_COLUMN
                 : RenderingHint.STANDALONE_TITLE_COLUMN;
         }
 
-        public boolean isStandalone() {
-            return this == STANDALONE;
-        }
-
-        public boolean isParented() {
-            return this == PARENTED;
+        public Where whereContext() {
+            return isParented()
+                ? Where.PARENTED_TABLES
+                : Where.STANDALONE_TABLES;
         }
+        
     }
 
     // -- IDENTITY
@@ -116,7 +116,7 @@ default String getName() {
     }
 
     default int getPageSize() {
-        return getDataTableModel().getPageSize(getVariant().getPageSizeDefault());
+        return getDataTableModel().getPageSize(getVariant().pageSizeDefault);
     }
 
     default Optional<TableDecorator> getTableDecoratorIfAny() {
diff --git a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiObjectWkt.java b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiObjectWkt.java
index cf3e8c80c63..535509dc0a0 100644
--- a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiObjectWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiObjectWkt.java
@@ -92,7 +92,7 @@ public static UiObjectWkt ofAdapterForCollection(
             final ManagedObject adapter,
             final @NonNull EntityCollectionModel.Variant variant) {
         return new UiObjectWkt(BookmarkedObjectWkt.ofAdapter(adapter),
-                ViewOrEditMode.VIEWING, variant.getTitleColumnRenderingHint());
+                ViewOrEditMode.VIEWING, variant.titleColumnRenderingHint());
     }
 
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index 0ce2456878a..02369e6d2d9 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -213,8 +213,8 @@ private void addActionsColumnIfRequired(
             final ObjectSpecification elementType,
             final List<GenericColumn> columns) {
         var collectionModel = getModel();
-        var memberIdentifier = collectionModel.getIdentifier();
-        ActionColumn.create(memberIdentifier, elementType, collectionModel.getVariant()).ifPresent(columns::add);
+        ActionColumn.create(elementType, collectionModel.getVariant())
+        	.ifPresent(columns::add);
     }
 
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ActionColumn.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ActionColumn.java
index 6862e5cba1c..7db72561210 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ActionColumn.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ActionColumn.java
@@ -20,7 +20,6 @@
 
 import java.util.Optional;
 
-import org.apache.causeway.applib.Identifier;
 import org.apache.causeway.applib.annotation.Where;
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.commons.internal.base._StableValue;
@@ -43,15 +42,15 @@ public final class ActionColumn
     private static final long serialVersionUID = 1L;
 
     public static Optional<ActionColumn> create(
-            final @NonNull Identifier featureId,
             final @NonNull ObjectSpecification elementType,
             final @NonNull Variant collectionVariant) {
     	var wktConfig = elementType.getMetaModelContext().getConfiguration().getViewer().getWicket();
         if(!wktConfig.isActionColumnEnabled()) return Optional.empty();
 
-        var actions = elementType.streamActionsForColumnRendering(featureId)
+        var actions = elementType.streamActionsForColumnRendering(collectionVariant.whereContext())
                 .collect(Can.toCan());
-        if(actions.isEmpty()) return Optional.empty();
+        if(actions.isEmpty()) 
+        	return Optional.empty();
 
         return Optional.of(new ActionColumn(elementType, actions, collectionVariant));
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/SingularColumn.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/SingularColumn.java
index cc220db9015..db3e61f79b3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/SingularColumn.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/SingularColumn.java
@@ -58,7 +58,7 @@ protected Component createCellComponent(
                 .getPropertyModel(
                         property,
                         ViewOrEditMode.VIEWING,
-                        collectionVariant.getColumnRenderingHint());
+                        collectionVariant.columnRenderingHint);
 
         return findComponentFactory(UiComponentType.SCALAR_NAME_AND_VALUE, scalarModel)
                 .createComponent(componentId, scalarModel);