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)