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