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

ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/main by this push:
     new b70365a931c CAUSEWAY-3859: Java record refactoring (part 43)
b70365a931c is described below

commit b70365a931c649bd424bc2da6f99deff50161236
Author: Andi Huber <[email protected]>
AuthorDate: Tue Feb 25 19:11:38 2025 +0100

    CAUSEWAY-3859: Java record refactoring (part 43)
---
 .../select2}/ChoiceProviderForReferencesTest.java  |  3 +--
 .../select2}/ChoiceProviderForValuesTest.java      |  3 +--
 .../select2}/ChoiceProviderTestAbstract.java       |  2 +-
 .../choices/AttributePanelWithSelect.java          | 31 ++--------------------
 .../choices/ObjectChoicesAttributePanel.java       |  2 +-
 .../choices/ValueChoicesAttributePanel.java        |  2 +-
 .../widgets/select2/ChoiceProviderRecord.java      | 28 +++++++++----------
 .../ui/components/widgets/select2/MultiChoice.java |  6 -----
 .../ui/components/widgets/select2/Select2.java     | 19 ++++++++++---
 9 files changed, 36 insertions(+), 60 deletions(-)

diff --git 
a/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/widgets/choices/ChoiceProviderForReferencesTest.java
 
b/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderForReferencesTest.java
similarity index 94%
rename from 
viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/widgets/choices/ChoiceProviderForReferencesTest.java
rename to 
viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderForReferencesTest.java
index 1ca28ceddf3..e94e4e3eb6a 100644
--- 
a/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/widgets/choices/ChoiceProviderForReferencesTest.java
+++ 
b/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderForReferencesTest.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.wicket.ui.test.components.widgets.choices;
+package org.apache.causeway.viewer.wicket.ui.components.widgets.select2;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -28,7 +28,6 @@
 import org.apache.causeway.core.metamodel._testing._TestDummies;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento;
-import 
org.apache.causeway.viewer.wicket.ui.components.widgets.select2.ChoiceProviderRecord;
 
 class ChoiceProviderForReferencesTest extends ChoiceProviderTestAbstract {
 
diff --git 
a/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/widgets/choices/ChoiceProviderForValuesTest.java
 
b/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderForValuesTest.java
similarity index 94%
rename from 
viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/widgets/choices/ChoiceProviderForValuesTest.java
rename to 
viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderForValuesTest.java
index 7c09b121e0a..a2a8a368ded 100644
--- 
a/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/widgets/choices/ChoiceProviderForValuesTest.java
+++ 
b/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderForValuesTest.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.wicket.ui.test.components.widgets.choices;
+package org.apache.causeway.viewer.wicket.ui.components.widgets.select2;
 
 import java.math.BigDecimal;
 import java.util.UUID;
@@ -30,7 +30,6 @@
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento;
-import 
org.apache.causeway.viewer.wicket.ui.components.widgets.select2.ChoiceProviderRecord;
 
 class ChoiceProviderForValuesTest
 extends ChoiceProviderTestAbstract {
diff --git 
a/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/widgets/choices/ChoiceProviderTestAbstract.java
 
b/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderTestAbstract.java
similarity index 96%
rename from 
viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/widgets/choices/ChoiceProviderTestAbstract.java
rename to 
viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderTestAbstract.java
index 5452bcdf81f..ba6ae07e5b9 100644
--- 
a/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/test/components/widgets/choices/ChoiceProviderTestAbstract.java
+++ 
b/viewers/wicket/ui-test/src/test/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderTestAbstract.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.wicket.ui.test.components.widgets.choices;
+package org.apache.causeway.viewer.wicket.ui.components.widgets.select2;
 
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/AttributePanelWithSelect.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/AttributePanelWithSelect.java
index 3255ab28b9b..7746db9bddd 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/AttributePanelWithSelect.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/AttributePanelWithSelect.java
@@ -26,12 +26,10 @@
 import org.jspecify.annotations.Nullable;
 
 import org.apache.causeway.core.metamodel.object.ManagedObject;
-import org.apache.causeway.core.metamodel.util.Facets;
 import org.apache.causeway.viewer.commons.model.attrib.UiParameter;
 import org.apache.causeway.viewer.commons.model.components.UiString;
 import org.apache.causeway.viewer.wicket.model.models.UiAttributeWkt;
 import 
org.apache.causeway.viewer.wicket.ui.components.attributes.AttributePanelWithFormField;
-import 
org.apache.causeway.viewer.wicket.ui.components.widgets.select2.ChoiceProviderRecord;
 import org.apache.causeway.viewer.wicket.ui.components.widgets.select2.Select2;
 import org.apache.causeway.viewer.wicket.ui.util.Wkt;
 import org.apache.causeway.viewer.wicket.ui.util.Wkt.EventTopic;
@@ -55,30 +53,9 @@ protected AttributePanelWithSelect(
         setOutputMarkupId(true);
     }
 
-    protected final Select2 createSelect2(
-            final String id) {
-        var attributeModel = attributeModel();
-        var select2 = Select2.create(id, attributeModel,
-                new ChoiceProviderRecord(attributeModel),
+    protected final void createSelect2(final String id) {
+        this.select2 = Select2.create(id, attributeModel(),
                 getAttributeModelChangeDispatcher());
-        var settings = select2.settings();
-        settings.setPlaceholder(attributeModel.getFriendlyName());
-
-        switch(attributeModel.getChoiceProviderSort()) {
-        case CHOICES:
-            break;
-        case AUTO_COMPLETE:
-            
settings.setMinimumInputLength(attributeModel.getAutoCompleteMinLength());
-            break;
-        case OBJECT_AUTO_COMPLETE:
-            Facets.autoCompleteMinLength(attributeModel.getElementType())
-            .ifPresent(settings::setMinimumInputLength);
-            break;
-        case NO_CHOICES:
-        default:
-            // ignore if no choices
-        }
-        return select2;
     }
 
     // -- CUSTOM UPDATING BEHAVIOR
@@ -110,8 +87,6 @@ protected final UiString obtainOutputFormat() {
         return UiString.text(select2.obtainOutputFormatModel().getObject());
     }
 
-    // //////////////////////////////////////
-
     /**
      * Automatically "opens" the select2.
      */
@@ -122,8 +97,6 @@ protected final void onSwitchFormForInlinePrompt(
         Wkt.javaScriptAdd(target, EventTopic.OPEN_SELECT2, 
inlinePromptForm.getMarkupId());
     }
 
-    // //////////////////////////////////////
-
     /**
      * Refresh choices when changing.
      * <p>
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/ObjectChoicesAttributePanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/ObjectChoicesAttributePanel.java
index 385014ff46a..7c2a2c2959e 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/ObjectChoicesAttributePanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/ObjectChoicesAttributePanel.java
@@ -84,7 +84,7 @@ protected FormComponent<ManagedObject> 
createFormComponent(final String id, fina
         this.objectLink = new 
ChoiceFormComponent(UiComponentType.OBJECT_LINK.getId(), this);
         objectLink.setRequired(attributeModel.isRequired());
 
-        this.select2 = createSelect2(ID_AUTO_COMPLETE);
+        createSelect2(ID_AUTO_COMPLETE);
 
         objectLink.addOrReplace(select2.component());
         objectLink.setOutputMarkupId(true);
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/ValueChoicesAttributePanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/ValueChoicesAttributePanel.java
index 5215228bbfd..11788d98639 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/ValueChoicesAttributePanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/choices/ValueChoicesAttributePanel.java
@@ -57,7 +57,7 @@ protected Component createComponentForOutput(final String id) 
{
     protected FormComponent<ManagedObject> createFormComponent(
             final String id, final UiAttributeWkt attributeModel) {
         if(select2 == null) {
-            this.select2 = createSelect2(id);
+            createSelect2(id);
         } else {
             select2.clearInput();
         }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderRecord.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderRecord.java
index 367c7b359b3..5a157e741ca 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderRecord.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/ChoiceProviderRecord.java
@@ -39,7 +39,7 @@
 import org.apache.causeway.viewer.wicket.model.models.HasCommonContext;
 import org.apache.causeway.viewer.wicket.model.models.UiAttributeWkt;
 
-public record ChoiceProviderRecord(
+record ChoiceProviderRecord(
     UiAttributeWkt attributeModel,
     UiAttribute.ChoiceProviderSort choiceProviderSort)
 implements HasCommonContext, Serializable {
@@ -48,7 +48,7 @@ public ChoiceProviderRecord(
             final UiAttributeWkt attributeModel) {
         this(attributeModel, 
UiAttribute.ChoiceProviderSort.valueOf(attributeModel));
     }
-    
+
     /**
      * Get the value for displaying to an end user.
      */
@@ -70,7 +70,7 @@ public String getDisplayValue(final ObjectMemento 
choiceMemento) {
      */
     public String getIdValue(final ObjectMemento choiceMemento) {
         if (choiceMemento == null) return ObjectMemento.NULL_ID;
-        
+
         return ObjectMemento.enstringToUrlBase64(choiceMemento);
     }
 
@@ -107,32 +107,32 @@ public Collection<ObjectMemento> toChoices(final 
Collection<String> ids) {
                 .map(this::mementoFromIdWithNullHandling)
                 .collect(Collectors.toList());
     }
-    
+
     // -- UTIL
-    
+
     /** adapter method */
     ChoiceProvider<ObjectMemento> toSelect2ChoiceProvider() {
         var delegate = this;
         return new ChoiceProvider<ObjectMemento>() {
             private static final long serialVersionUID = 1L;
 
-            @Override public Collection<ObjectMemento> 
toChoices(Collection<String> ids) {
+            @Override public Collection<ObjectMemento> toChoices(final 
Collection<String> ids) {
                 return delegate.toChoices(ids);
             }
-            @Override public void query(String term, int page, 
Response<ObjectMemento> response) {
+            @Override public void query(final String term, final int page, 
final Response<ObjectMemento> response) {
                 delegate.query(term, page, response);
             }
-            @Override public String getIdValue(ObjectMemento object) {
+            @Override public String getIdValue(final ObjectMemento object) {
                 return delegate.getIdValue(object);
             }
-            @Override public String getDisplayValue(ObjectMemento object) {
+            @Override public String getDisplayValue(final ObjectMemento 
object) {
                 return delegate.getDisplayValue(object);
             }
         };
     }
-    
+
     // -- HELPER
-    
+
     private Can<ObjectMemento> queryAll() {
         return attributeModel().getChoices() // must not return detached 
entities
                 .map(ManagedObject::getMementoElseFail);
@@ -177,13 +177,13 @@ private Can<ManagedObject> reconstructPendingArgs(
 
        return pendingArgsList;
     }
-    
+
     private @Nullable ObjectMemento mementoFromIdWithNullHandling(final String 
id) {
         if(ObjectMemento.NULL_ID.equals(id)) return null;
-        
+
         return mementoFromId(id);
     }
-    
+
     /**
      * Whether to not prepend <code>null</code> as choice candidate.
      */
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/MultiChoice.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/MultiChoice.java
index 7205c4ab906..9e63ef742a6 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/MultiChoice.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/MultiChoice.java
@@ -63,12 +63,6 @@ record MultiChoice(
                 // --
 
             });
-
-        component.getSettings().setCloseOnSelect(true);
-        component.getSettings().setWidth("auto");
-        component.getSettings().setDropdownAutoWidth(true);
-
-        component.setOutputMarkupPlaceholderTag(true);
     }
 
     @Override
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2.java
 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2.java
index 37f9ce9739c..a8fe3b76e20 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2.java
@@ -29,6 +29,7 @@
 import org.apache.causeway.commons.internal.base._Casts;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento;
+import org.apache.causeway.core.metamodel.util.Facets;
 import 
org.apache.causeway.viewer.wicket.model.models.AttributeModelWithMultiChoice;
 import 
org.apache.causeway.viewer.wicket.model.models.AttributeModelWithSingleChoice;
 import org.apache.causeway.viewer.wicket.model.models.UiAttributeWkt;
@@ -39,8 +40,8 @@ public interface Select2 extends Serializable {
     static Select2 create(
         final String id,
         final UiAttributeWkt attributeModel,
-        final ChoiceProviderRecord choiceProvider,
         final AttributeModelChangeDispatcher select2ChangeDispatcher) {
+        var choiceProvider = new ChoiceProviderRecord(attributeModel);
         var select2 = attributeModel.isSingular()
                 ? new SingleChoice(id,
                                 
AttributeModelWithSingleChoice.chain(attributeModel),
@@ -51,11 +52,21 @@ static Select2 create(
                                 attributeModel,
                                 choiceProvider);
 
+        var settings = select2.settings();
+        settings.setCloseOnSelect(true);
+        settings.setDropdownAutoWidth(true);
+        settings.setWidth("100%");
+        settings.setPlaceholder(attributeModel.getFriendlyName());
+
+        switch(attributeModel.getChoiceProviderSort()) {
+            case 
AUTO_COMPLETE->settings.setMinimumInputLength(attributeModel.getAutoCompleteMinLength());
+            case 
OBJECT_AUTO_COMPLETE->Facets.autoCompleteMinLength(attributeModel.getElementType())
+                .ifPresent(settings::setMinimumInputLength);
+            case CHOICES, NO_CHOICES->{}
+        }
+
         var component = select2.component();
         component.setOutputMarkupPlaceholderTag(true);
-        component.getSettings().setCloseOnSelect(true);
-        component.getSettings().setDropdownAutoWidth(true);
-        component.getSettings().setWidth("100%");
         component.setLabel(Model.of(attributeModel.getFriendlyName()));
 
         // listen on select2:select/unselect events (client-side)

Reply via email to