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 8cc310bd48b CAUSEWAY-3859: Java record refactoring (part 48)
8cc310bd48b is described below
commit 8cc310bd48b1202456d60fadc586ec2d2a4ab187
Author: Andi Huber <[email protected]>
AuthorDate: Wed Feb 26 10:21:25 2025 +0100
CAUSEWAY-3859: Java record refactoring (part 48)
---
.../itemreuse/ReuseIfRowIndexEqualsStrategy.java | 4 +--
.../models/AttributeModelWithMultiChoice.java | 31 ++++----------------
.../models/AttributeModelWithSingleChoice.java | 32 ++++-----------------
.../wicket/model/models/ScalarConvertingModel.java | 14 ++++-----
.../wicket/model/models/ScalarUnwrappingModel.java | 22 +++++----------
.../wicket/model/models/coll/DataRowWkt.java | 33 ++++------------------
.../CollectionContentsSortableDataProvider.java | 2 +-
.../ui/components/widgets/select2/Select2.java | 5 ++--
8 files changed, 38 insertions(+), 105 deletions(-)
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/itemreuse/ReuseIfRowIndexEqualsStrategy.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/itemreuse/ReuseIfRowIndexEqualsStrategy.java
index c5778ea4f42..6542532f44b 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/itemreuse/ReuseIfRowIndexEqualsStrategy.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/itemreuse/ReuseIfRowIndexEqualsStrategy.java
@@ -108,8 +108,8 @@ Optional<Item<T>> getItem(final IModel<T> model) {
}
private static int rowIndex(final IModel<?> model) {
- return model instanceof DataRowWkt
- ? ((DataRowWkt)model).getRowIndex()
+ return model instanceof DataRowWkt dataRowWkt
+ ? dataRowWkt.rowIndex()
: -1;
}
}
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/AttributeModelWithMultiChoice.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/AttributeModelWithMultiChoice.java
index 18a72889c5a..e0143674fef 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/AttributeModelWithMultiChoice.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/AttributeModelWithMultiChoice.java
@@ -21,14 +21,13 @@
import java.util.ArrayList;
import java.util.stream.Collectors;
-import org.apache.wicket.model.ChainingModel;
+import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.core.metamodel.object.ManagedObjects;
import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento;
-import org.jspecify.annotations.NonNull;
import lombok.extern.log4j.Log4j2;
/**
@@ -37,32 +36,14 @@
* with the parent {@link UiAttributeWkt}, allowing also for pending values.
*/
@Log4j2
-public class AttributeModelWithMultiChoice
-extends ChainingModel<ArrayList<ObjectMemento>>
-implements
- AttributeModelWithChoice<ArrayList<ObjectMemento>> {
-
- private static final long serialVersionUID = 1L;
-
- // -- FACTORY
-
- public static AttributeModelWithMultiChoice chain(final @NonNull
UiAttributeWkt attributeModel) {
- return new AttributeModelWithMultiChoice(attributeModel);
- }
-
- // -- CONSTRUCTION
-
- private AttributeModelWithMultiChoice(final UiAttributeWkt attributeModel)
{
- super(attributeModel); // chaining to attributeModel
- }
-
+public record AttributeModelWithMultiChoice(
/**
* chaining idiom: the {@link UiAttributeWkt} we are chained to
*/
- @Override
- public UiAttributeWkt attributeModel() {
- return (UiAttributeWkt) super.getTarget();
- }
+ UiAttributeWkt attributeModel)
+implements
+ IModel<ArrayList<ObjectMemento>>,
+ AttributeModelWithChoice<ArrayList<ObjectMemento>> {
@Override
public ArrayList<ObjectMemento> getObject() {
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/AttributeModelWithSingleChoice.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/AttributeModelWithSingleChoice.java
index 28ea1bc61b9..19f2d0407c2 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/AttributeModelWithSingleChoice.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/AttributeModelWithSingleChoice.java
@@ -18,45 +18,25 @@
*/
package org.apache.causeway.viewer.wicket.model.models;
-import org.apache.wicket.model.ChainingModel;
+import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.causeway.core.metamodel.objectmanager.memento.ObjectMemento;
-import org.jspecify.annotations.NonNull;
-
/**
* For widgets that use a <tt>org.wicketstuff.select2.Select2Choice</tt>;
* synchronizes the {@link Model} of the <tt>Select2Choice</tt>
* with the parent {@link UiAttributeWkt}.
*/
//@Log4j2
-public class AttributeModelWithSingleChoice
-extends ChainingModel<ObjectMemento>
-implements
- AttributeModelWithChoice<ObjectMemento> {
-
- private static final long serialVersionUID = 1L;
-
- // -- FACTORY
-
- public static AttributeModelWithSingleChoice chain(final @NonNull
UiAttributeWkt attributeModel) {
- return new AttributeModelWithSingleChoice(attributeModel);
- }
-
- // -- CONSTRUCTION
-
- private AttributeModelWithSingleChoice(final UiAttributeWkt
attributeModel) {
- super(attributeModel); // chaining to attributeModel
- }
-
+public record AttributeModelWithSingleChoice(
/**
* chaining idiom: the {@link UiAttributeWkt} we are chained to
*/
- @Override
- public UiAttributeWkt attributeModel() {
- return (UiAttributeWkt) super.getTarget();
- }
+ UiAttributeWkt attributeModel)
+implements
+ IModel<ObjectMemento>,
+ AttributeModelWithChoice<ObjectMemento> {
@Override
public ObjectMemento getObject() {
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarConvertingModel.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarConvertingModel.java
index ffa448cc6c5..e17fb0c6092 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarConvertingModel.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarConvertingModel.java
@@ -18,27 +18,27 @@
*/
package org.apache.causeway.viewer.wicket.model.models;
-import org.apache.wicket.model.ChainingModel;
-
+import org.apache.wicket.model.IModel;
+import org.jspecify.annotations.NonNull;
import org.jspecify.annotations.Nullable;
import org.apache.causeway.commons.internal.base._Casts;
import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.core.metamodel.object.ManagedObjects;
-import org.jspecify.annotations.NonNull;
-
/**
* @param <T> foreign type
* @param <V> scalar value type
*/
public abstract class ScalarConvertingModel<T, V>
-extends ChainingModel<T> {
+implements IModel<T> {
private static final long serialVersionUID = 1L;
+ private final UiAttributeWkt attributeModel;
+
protected ScalarConvertingModel(final @NonNull UiAttributeWkt
attributeModel) {
- super(attributeModel);
+ this.attributeModel = attributeModel;
}
@Override
@@ -68,7 +68,7 @@ public T getObject() {
// -- HELPER
protected UiAttributeWkt attributeModel() {
- return (UiAttributeWkt) super.getTarget();
+ return attributeModel;
}
}
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarUnwrappingModel.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarUnwrappingModel.java
index 081862f6992..32cda600685 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarUnwrappingModel.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ScalarUnwrappingModel.java
@@ -18,7 +18,8 @@
*/
package org.apache.causeway.viewer.wicket.model.models;
-import org.apache.wicket.model.ChainingModel;
+import org.apache.wicket.model.IModel;
+import org.jspecify.annotations.NonNull;
import org.springframework.util.ClassUtils;
@@ -27,24 +28,19 @@
import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.core.metamodel.object.MmUnwrapUtils;
-import lombok.Getter;
-import org.jspecify.annotations.NonNull;
-
/**
* Wraps and unwraps the contained value within {@link ManagedObject},
* as provided by a {@link UiAttributeWkt}.
*/
-public class ScalarUnwrappingModel<T>
-extends ChainingModel<T> {
-
- private static final long serialVersionUID = 1L;
-
- @Getter @NonNull private final Class<T> type;
+public record ScalarUnwrappingModel<T>(
+ Class<T> type,
+ UiAttributeWkt attributeModel) implements IModel<T> {
+ // canonical constructor
public ScalarUnwrappingModel(
final @NonNull Class<T> type,
final @NonNull UiAttributeWkt attributeModel) {
- super(attributeModel);
+ this.attributeModel = attributeModel;
this.type = type;
_Assert.assertTrue(attributeModel.getElementType().isAssignableFrom(type), ()->
String.format("cannot possibly unwrap model of type %s into
target type %s",
@@ -82,8 +78,4 @@ private T unwrap(final ManagedObject objectAdapter) {
return _Casts.uncheckedCast(pojo);
}
- private UiAttributeWkt attributeModel() {
- return (UiAttributeWkt) super.getTarget();
- }
-
}
\ No newline at end of file
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/coll/DataRowWkt.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/coll/DataRowWkt.java
index 5888c26620e..63fea77a2c7 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/coll/DataRowWkt.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/coll/DataRowWkt.java
@@ -20,35 +20,18 @@
import java.util.Optional;
-import org.apache.wicket.model.ChainingModel;
+import org.apache.wicket.model.IModel;
import org.apache.causeway.core.metamodel.tabular.DataRow;
import org.apache.causeway.core.metamodel.tabular.DataTableInteractive;
-import lombok.Getter;
-
-public final class DataRowWkt
-extends ChainingModel<DataRow> {
-
- private static final long serialVersionUID = 1L;
-
- public static DataRowWkt chain(
- final CollectionModel collectionModel,
- final DataRow dataRow) {
- return new DataRowWkt(collectionModel, dataRow);
- }
-
- @Getter private final int rowIndex;
-
- private DataRowWkt(
- final CollectionModel collectionModel,
- final DataRow dataRow) {
- super(collectionModel);
- this.rowIndex = dataRow.rowIndex();
- }
+public record DataRowWkt(
+ int rowIndex,
+ CollectionModel collectionModel)
+implements IModel<DataRow> {
@Override
- public final DataRow getObject() {
+ public DataRow getObject() {
return dataRow().orElse(null);
}
@@ -70,10 +53,6 @@ public boolean isTableDataLoaded() {
// -- HELPER
- private CollectionModel collectionModel() {
- return (CollectionModel) super.getTarget();
- }
-
private DataTableInteractive dataTable() {
return collectionModel().getObject();
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/present/ajaxtable/CollectionContentsSortableDataProvider.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/present/ajaxtable/CollectionContentsSortableDataProvider.java
index 5eb592d6b7e..c0730aed743 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/present/ajaxtable/CollectionContentsSortableDataProvider.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/present/ajaxtable/CollectionContentsSortableDataProvider.java
@@ -67,7 +67,7 @@ public DataTableInteractive getDataTableModel() {
@Override
public IModel<DataRow> model(final DataRow dataRow) {
- return DataRowWkt.chain(collectionModel, dataRow);
+ return new DataRowWkt(dataRow.rowIndex(), collectionModel);
}
@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 2b77b6b1d5e..68274d4c2a6 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
@@ -24,6 +24,7 @@
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.Model;
import org.wicketstuff.select2.AbstractSelect2Choice;
+
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;
@@ -42,11 +43,11 @@ static Select2 create(
var choiceProvider = new ChoiceProvider(attributeModel);
var select2 = attributeModel.isSingular()
? new SingleChoice(id,
-
AttributeModelWithSingleChoice.chain(attributeModel),
+ new
AttributeModelWithSingleChoice(attributeModel),
attributeModel,
choiceProvider)
: new MultiChoice(id,
-
_Casts.uncheckedCast(AttributeModelWithMultiChoice.chain(attributeModel)),
+ _Casts.uncheckedCast(new
AttributeModelWithMultiChoice(attributeModel)),
attributeModel,
choiceProvider);
var component = select2.component();