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/06 08:21:22 UTC
(causeway) 30/39: CAUSEWAY-4012: archives selector parameter column limit
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-4012
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 28066e5ea859d377eb81a611827f2ce62774284d
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Jun 6 06:13:41 2026 +0100
CAUSEWAY-4012: archives selector parameter column limit
---
.../.openspec.yaml | 0
.../design.md | 0
.../proposal.md | 0
.../parented-collection-selector-actions/spec.md | 0
.../tasks.md | 0
.../parented-collection-selector-actions/spec.md | 25 ++++++++++++++++------
6 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/openspec/changes/limit-selector-parameters-to-collection-columns/.openspec.yaml b/openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/.openspec.yaml
similarity index 100%
rename from openspec/changes/limit-selector-parameters-to-collection-columns/.openspec.yaml
rename to openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/.openspec.yaml
diff --git a/openspec/changes/limit-selector-parameters-to-collection-columns/design.md b/openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/design.md
similarity index 100%
rename from openspec/changes/limit-selector-parameters-to-collection-columns/design.md
rename to openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/design.md
diff --git a/openspec/changes/limit-selector-parameters-to-collection-columns/proposal.md b/openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/proposal.md
similarity index 100%
rename from openspec/changes/limit-selector-parameters-to-collection-columns/proposal.md
rename to openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/proposal.md
diff --git a/openspec/changes/limit-selector-parameters-to-collection-columns/specs/parented-collection-selector-actions/spec.md b/openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/specs/parented-collection-selector-actions/spec.md
similarity index 100%
rename from openspec/changes/limit-selector-parameters-to-collection-columns/specs/parented-collection-selector-actions/spec.md
rename to openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/specs/parented-collection-selector-actions/spec.md
diff --git a/openspec/changes/limit-selector-parameters-to-collection-columns/tasks.md b/openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/tasks.md
similarity index 100%
rename from openspec/changes/limit-selector-parameters-to-collection-columns/tasks.md
rename to openspec/changes/archive/2026-06-06-limit-selector-parameters-to-collection-columns/tasks.md
diff --git a/openspec/specs/parented-collection-selector-actions/spec.md b/openspec/specs/parented-collection-selector-actions/spec.md
index 28e005eea64..e9c4f80f45b 100644
--- a/openspec/specs/parented-collection-selector-actions/spec.md
+++ b/openspec/specs/parented-collection-selector-actions/spec.md
@@ -56,7 +56,8 @@ The synthetic selector action SHALL define one mandatory parent object parameter
The parent parameter SHALL be typed as the collection owner type.
The parent parameter SHALL default to the current action target.
The parent parameter SHALL be disabled so it cannot be changed by the user.
-The synthetic selector action SHALL define optional parameters for eligible scalar properties of the collection element type.
+The synthetic selector action SHALL define optional parameters only for eligible scalar properties of the collection element type that appear as columns of the associated parented collection.
+The synthetic selector action SHALL order child filter parameters according to the associated parented collection column order.
The synthetic selector action MUST NOT automatically create selector parameters for child collections or reference properties.
The synthetic selector action MUST NOT create selector parameters for blob or clob child properties.
The synthetic selector action MUST NOT create selector parameters for child properties whose ids are `logicalTypeName`, `id`, `version`, `objectIdentifier`, `datanucleusVersionLong`, or `datanucleusVersionTimestamp`.
@@ -78,23 +79,33 @@ The synthetic selector action MUST NOT create selector parameters for child prop
- **WHEN** the framework evaluates parameter usability for the selector action
- **THEN** the parent parameter is disabled
-#### Scenario: Scalar child properties become optional filters
-- **GIVEN** `LeaseItem` has scalar properties suitable for equality matching
+#### Scenario: Collection column scalar child properties become optional filters
+- **GIVEN** `Lease.items` renders eligible scalar child properties as collection columns
- **WHEN** the framework synthesizes the selector action for `Lease.items`
-- **THEN** the action has optional parameters corresponding to those scalar properties
+- **THEN** the action has optional parameters corresponding to those column-backed scalar properties
+
+#### Scenario: Scalar child properties that are not collection columns are excluded from automatic filters
+- **GIVEN** `LeaseItem` has an eligible scalar property that is not rendered as a column of `Lease.items`
+- **WHEN** the framework synthesizes the selector action for `Lease.items`
+- **THEN** the action does not create an automatic parameter for that non-column scalar property
+
+#### Scenario: Child filter parameters follow collection column order
+- **GIVEN** `Lease.items` renders eligible scalar child properties as columns in a configured order
+- **WHEN** the framework synthesizes the selector action for `Lease.items`
+- **THEN** the action lists child filter parameters in the same relative order as the collection columns
#### Scenario: Non-scalar child members are excluded from automatic filters
-- **GIVEN** `LeaseItem` has a child collection and a reference property
+- **GIVEN** `LeaseItem` has a child collection and a reference property that appear as collection columns
- **WHEN** the framework synthesizes the selector action for `Lease.items`
- **THEN** the action does not create automatic parameters for the child collection or reference property
#### Scenario: Blob and clob child properties are excluded from automatic filters
-- **GIVEN** `LeaseItem` has blob and clob properties
+- **GIVEN** `LeaseItem` has blob and clob properties that appear as collection columns
- **WHEN** the framework synthesizes the selector action for `Lease.items`
- **THEN** the action does not create automatic parameters for the blob or clob properties
#### Scenario: Technical metadata child properties are excluded from automatic filters
-- **GIVEN** `LeaseItem` has scalar properties named `logicalTypeName`, `id`, `version`, `objectIdentifier`, `datanucleusVersionLong`, and `datanucleusVersionTimestamp`
+- **GIVEN** `LeaseItem` has scalar properties named `logicalTypeName`, `id`, `version`, `objectIdentifier`, `datanucleusVersionLong`, and `datanucleusVersionTimestamp` that appear as collection columns
- **WHEN** the framework synthesizes the selector action for `Lease.items`
- **THEN** the action does not create automatic parameters for `logicalTypeName`, `id`, `version`, `objectIdentifier`, `datanucleusVersionLong`, or `datanucleusVersionTimestamp`