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 5cfc8c8dfd9 CAUSEWAY-3859: Java record refactoring (part 47)
5cfc8c8dfd9 is described below
commit 5cfc8c8dfd9e7a360988c0938a891697229c1634
Author: Andi Huber <[email protected]>
AuthorDate: Wed Feb 26 09:58:42 2025 +0100
CAUSEWAY-3859: Java record refactoring (part 47)
---
.../metamodel/object/_ManagedObjectViewmodel.java | 8 +--
.../wicket/model/src/main/java/module-info.java | 1 -
.../viewer/wicket/model/links/MenuablesModel.java | 54 ----------------
...ooleanModel.java => BooleanAttributeModel.java} | 33 +++-------
.../wicket/model/models/ChainingObjectModel.java | 22 ++-----
.../wicket/model/models/DelegatingModel.java | 71 ++++++++++++++++++++++
.../viewer/wicket/model/models/UiAttributeWkt.java | 7 +--
.../model/models/binding/BooleanBinding.java | 69 ---------------------
.../wicket/model/models/coll/DataRowToggleWkt.java | 34 +++++++----
.../models/interaction/prop/UiPropertyWkt.java | 3 +-
.../entityactions/ActionLinksPanel.java | 2 +-
.../serviceactions/CssSubMenuItemsPanel.java | 2 +-
.../attributes/bool/BooleanAttributePanel.java | 4 +-
.../components/menuable/MenuablePanelAbstract.java | 16 +++--
.../apache/causeway/viewer/wicket/ui/util/Wkt.java | 5 +-
15 files changed, 131 insertions(+), 200 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_ManagedObjectViewmodel.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_ManagedObjectViewmodel.java
index dff112ebe92..5f85fd9f3d4 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_ManagedObjectViewmodel.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/_ManagedObjectViewmodel.java
@@ -97,12 +97,10 @@ private Optional<Bookmark> createBookmark() {
@Override
public final void refreshViewmodel(final @Nullable Supplier<Bookmark>
bookmarkSupplier) {
var shouldRefresh = getTransactionService().currentTransactionId()
- .map(this::shouldRefresh)
- .orElse(true); // if there is no current transaction, refresh
regardless; unexpected state, might fail later
+ .map(this::shouldRefresh)
+ .orElse(true); // if there is no current transaction, refresh
regardless; unexpected state, might fail later
- if(!shouldRefresh) {
- return;
- }
+ if(!shouldRefresh) return;
if(isBookmarkMemoized()) {
reloadViewmodelFromMemoizedBookmark();
diff --git a/viewers/wicket/model/src/main/java/module-info.java
b/viewers/wicket/model/src/main/java/module-info.java
index 64caf1367c5..843c3b1e60d 100644
--- a/viewers/wicket/model/src/main/java/module-info.java
+++ b/viewers/wicket/model/src/main/java/module-info.java
@@ -23,7 +23,6 @@
exports org.apache.causeway.viewer.wicket.model.hints;
exports org.apache.causeway.viewer.wicket.model.itemreuse;
exports org.apache.causeway.viewer.wicket.model.models;
- exports org.apache.causeway.viewer.wicket.model.models.binding;
exports org.apache.causeway.viewer.wicket.model;
exports org.apache.causeway.viewer.wicket.model.links;
exports org.apache.causeway.viewer.wicket.model.models.interaction.act;
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/links/MenuablesModel.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/links/MenuablesModel.java
deleted file mode 100644
index ae75975d36d..00000000000
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/links/MenuablesModel.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.causeway.viewer.wicket.model.links;
-
-import java.util.stream.Stream;
-
-import org.apache.wicket.model.ChainingModel;
-
-import org.apache.causeway.commons.collections.Can;
-
-import org.jspecify.annotations.NonNull;
-
-public class MenuablesModel
-extends ChainingModel<Can<? extends Menuable>> {
-
- private static final long serialVersionUID = 1L;
-
- public MenuablesModel(final @NonNull Can<? extends Menuable> menuables) {
- super(menuables);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public final Can<? extends Menuable> getObject() {
- return ((Can<? extends Menuable>)super.getTarget());
- }
-
- public final Can<? extends Menuable> menuables() {
- return getObject();
- }
-
- public final <T extends Menuable> Stream<T> streamMenuables(final Class<T>
linkType) {
- return menuables().stream()
- .filter(linkType::isInstance)
- .map(linkType::cast);
- }
-
-}
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BooleanModel.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BooleanAttributeModel.java
similarity index 75%
rename from
viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BooleanModel.java
rename to
viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BooleanAttributeModel.java
index a6d99450233..c34fa994d01 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BooleanModel.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BooleanAttributeModel.java
@@ -18,30 +18,19 @@
*/
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.object.ManagedObject;
-import org.jspecify.annotations.NonNull;
+public record BooleanAttributeModel(
+ boolean isPrimitive,
+ UiAttributeWkt attributeModel) implements IModel<Boolean> {
-public class BooleanModel
-extends ChainingModel<Boolean> {
-
- private static final long serialVersionUID = 1L;
-
- public static BooleanModel forAttributeModel(final @NonNull UiAttributeWkt
attributeModel) {
- return new BooleanModel(attributeModel);
- }
-
- final boolean isPrimitive;
-
- protected BooleanModel(final UiAttributeWkt attributeModel) {
- super(attributeModel);
-
- var spec = attributeModel().getElementType();
- this.isPrimitive = spec.getFullIdentifier().equals("boolean");
+ public BooleanAttributeModel(final UiAttributeWkt attributeModel) {
+ this(
+
attributeModel.getElementType().getFullIdentifier().equals("boolean"),
+ attributeModel);
}
@Override
@@ -82,7 +71,7 @@ public IModel<String> asStringModel(
private static final long serialVersionUID = 1L;
@Override public String getObject() {
- final Boolean bool = BooleanModel.this.getObject();
+ final Boolean bool = BooleanAttributeModel.this.getObject();
return bool == null
? notSetLiteral // '(not set)'
: bool
@@ -92,10 +81,4 @@ public IModel<String> asStringModel(
};
}
- // -- HELPER
-
- protected UiAttributeWkt attributeModel() {
- return (UiAttributeWkt) super.getTarget();
- }
-
}
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ChainingObjectModel.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ChainingObjectModel.java
index 46a23b9f760..9fe882224c6 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ChainingObjectModel.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/ChainingObjectModel.java
@@ -18,8 +18,6 @@
*/
package org.apache.causeway.viewer.wicket.model.models;
-import org.apache.wicket.model.ChainingModel;
-
import org.apache.causeway.commons.internal.exceptions._Exceptions;
import org.apache.causeway.core.metamodel.commons.ViewOrEditMode;
import org.apache.causeway.core.metamodel.object.ManagedObject;
@@ -29,27 +27,17 @@
/**
* Wraps a {@link UiAttributeWkt} to act as an {@link ObjectAdapterModel}.
*/
-public final class ChainingObjectModel
-extends ChainingModel<ManagedObject>
+public record ChainingObjectModel(
+ /**
+ * chaining idiom: the {@link UiAttributeWkt} we are chained to
+ */
+ UiAttributeWkt attributeModel)
implements ObjectAdapterModel {
- private static final long serialVersionUID = 1L;
-
public static ChainingObjectModel chain(final UiAttributeWkt
attributeModel) {
return new ChainingObjectModel(attributeModel);
}
- private ChainingObjectModel(final UiAttributeWkt attributeModel) {
- super(attributeModel);
- }
-
- /**
- * chaining idiom: the {@link UiAttributeWkt} we are chained to
- */
- public UiAttributeWkt attributeModel() {
- return (UiAttributeWkt) super.getTarget();
- }
-
/**
* chaining idiom: the 'local' model derived from the chain
*/
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/DelegatingModel.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/DelegatingModel.java
new file mode 100644
index 00000000000..15fb80c9385
--- /dev/null
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/DelegatingModel.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.causeway.viewer.wicket.model.models;
+
+import org.apache.wicket.model.IModel;
+
+//TODO[causeway-viewer-wicket-model-CAUSEWAY-3859] intermediate refactoring
helper, perhaps remove later
+public class DelegatingModel<T> implements IModel<T> {
+ private static final long serialVersionUID = 1L;
+
+ private IModel<T> delegate;
+
+ public DelegatingModel(final IModel<T> modelObject) {
+ this.delegate = modelObject;
+ }
+
+ @Override
+ public final void detach() {
+ if(delegate!=null) delegate.detach();
+ }
+
+ @Override
+ public final void setObject(final T object) {
+ delegate.setObject(object);
+ }
+
+ @Override
+ public final T getObject() {
+ return delegate!=null
+ ? delegate.getObject()
+ : null;
+ }
+
+ public final IModel<?> getChainedModel() {
+ return delegate;
+ }
+
+ @Override
+ public String toString() {
+ return new StringBuilder("Model:classname=[")
+ .append(getClass().getName()).append(']')
+ .append(":nestedModel=[").append(delegate).append(']')
+ .toString();
+ }
+
+ public final Object getInnermostModelOrObject() {
+ Object object = delegate;
+ while (object instanceof IModel) {
+ Object tmp = ((IModel<?>)object).getObject();
+ if (tmp == object) break;
+ object = tmp;
+ }
+ return object;
+ }
+}
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiAttributeWkt.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiAttributeWkt.java
index 26f7ea5a18b..e4acd515bd6 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiAttributeWkt.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiAttributeWkt.java
@@ -22,9 +22,9 @@
import java.util.Optional;
import java.util.OptionalInt;
-import org.apache.wicket.model.ChainingModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.util.convert.IConverter;
+import org.jspecify.annotations.NonNull;
import org.apache.causeway.applib.annotation.PromptStyle;
import org.apache.causeway.commons.collections.Can;
@@ -42,7 +42,6 @@
import
org.apache.causeway.viewer.wicket.model.value.ConverterBasedOnValueSemantics;
import lombok.Getter;
-import org.jspecify.annotations.NonNull;
import lombok.Setter;
/**
@@ -64,8 +63,7 @@
*/
//@Log4j2
public abstract class UiAttributeWkt
-extends ChainingModel<ManagedObject>
-implements HasRenderingHints, UiAttribute, FormExecutorContext {
+implements IModel<ManagedObject>, HasRenderingHints, UiAttribute,
FormExecutorContext {
private static final long serialVersionUID = 1L;
@@ -98,7 +96,6 @@ protected UiAttributeWkt(
final @NonNull UiObjectWkt parentEntityModel,
final @NonNull ViewOrEditMode viewOrEdit,
final @NonNull RenderingHint renderingHint) {
- super(parentEntityModel); // the so called target model, we are
chaining us to
this.parentEntityModel = parentEntityModel;
this.renderingHint = renderingHint;
this.viewOrEditMode = viewOrEdit;
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/binding/BooleanBinding.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/binding/BooleanBinding.java
deleted file mode 100644
index c739874bfe5..00000000000
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/binding/BooleanBinding.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.causeway.viewer.wicket.model.models.binding;
-
-import java.util.Optional;
-
-import org.apache.wicket.model.ChainingModel;
-import org.apache.wicket.model.IModel;
-
-import org.jspecify.annotations.Nullable;
-
-import org.apache.causeway.commons.binding.Bindable;
-import org.apache.causeway.commons.internal.base._Casts;
-
-/**
- * Boolean {@link IModel} to bind to the associated {@code T} model`s
- * bindable boolean value.
- */
-public abstract class BooleanBinding<T>
-extends ChainingModel<Boolean> {
-
- private static final long serialVersionUID = 1L;
-
- protected BooleanBinding(final IModel<T> model) {
- super(model);
- }
-
- @Override
- public final Boolean getObject() {
- return getBindable(modelObject())
- .map(Bindable::getValue)
- .orElse(null);
- }
-
- @Override
- public final void setObject(final Boolean value) {
- getBindable(modelObject())
- .ifPresent(bindable->bindable.setValue(value));
- }
-
- protected abstract Optional<Bindable<Boolean>> getBindable(@Nullable T
model);
-
- /**
- * For BulkToggleWkt returns its DataTableModel.<br>
- * For DataRowToggleWkt returns its DataRow.
- */
- protected T modelObject() {
- var model = _Casts.<IModel<T>>uncheckedCast(super.getTarget());
- return model.getObject();
- }
-
-}
-
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/coll/DataRowToggleWkt.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/coll/DataRowToggleWkt.java
index c76ad5a2b62..43cff8bafeb 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/coll/DataRowToggleWkt.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/coll/DataRowToggleWkt.java
@@ -27,27 +27,39 @@
import org.apache.causeway.commons.binding.Bindable;
import org.apache.causeway.core.metamodel.tabular.DataRow;
import org.apache.causeway.core.metamodel.tabular.DataTableInteractive;
-import org.apache.causeway.viewer.wicket.model.models.binding.BooleanBinding;
/**
* Boolean {@link IModel} to bind to the associated {@link
DataTableInteractive}'s
* {@link DataRow} model to handle check-box selection.
*/
-public final class DataRowToggleWkt
-extends BooleanBinding<DataRow> {
+public record DataRowToggleWkt(
+ IModel<DataRow> delegate) implements IModel<Boolean> {
- private static final long serialVersionUID = 1L;
-
- public DataRowToggleWkt(final DataRowWkt dataRowWkt) {
- super(dataRowWkt);
+ @Override
+ public final Boolean getObject() {
+ return getBindable(modelObject())
+ .map(Bindable::getValue)
+ .orElse(null);
}
@Override
- protected Optional<Bindable<Boolean>> getBindable(
- final @Nullable DataRow dataRow) {
+ public final void setObject(final Boolean value) {
+ getBindable(modelObject())
+ .ifPresent(bindable->bindable.setValue(value));
+ }
+
+ private Optional<Bindable<Boolean>> getBindable(
+ final @Nullable DataRow dataRow) {
return dataRow!=null
- ? Optional.ofNullable(dataRow.selectToggleBindable())
- : Optional.empty();
+ ? Optional.ofNullable(dataRow.selectToggleBindable())
+ : Optional.empty();
+ }
+
+ /**
+ * For DataRowToggleWkt returns its DataRow.
+ */
+ private DataRow modelObject() {
+ return delegate.getObject();
}
}
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/interaction/prop/UiPropertyWkt.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/interaction/prop/UiPropertyWkt.java
index d4ff77c587a..ab9bd351d1e 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/interaction/prop/UiPropertyWkt.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/interaction/prop/UiPropertyWkt.java
@@ -28,6 +28,7 @@
import org.apache.causeway.viewer.commons.model.attrib.UiProperty;
import org.apache.causeway.viewer.commons.model.object.HasUiParentObject;
import org.apache.causeway.viewer.commons.model.object.UiObject;
+import org.apache.causeway.viewer.wicket.model.models.DelegatingModel;
/**
* <i>Property Interaction</i> model bound to its owner {@link
PropertyInteractionWkt}.
@@ -36,7 +37,7 @@
* @see ChainingModel
*/
public final class UiPropertyWkt
-extends ChainingModel<PropertyInteraction>
+extends DelegatingModel<PropertyInteraction>
implements
HasMetaModelContext,
HasUiParentObject<UiObject>,
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/entityactions/ActionLinksPanel.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/entityactions/ActionLinksPanel.java
index 61054192420..4de7779200c 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/entityactions/ActionLinksPanel.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/entityactions/ActionLinksPanel.java
@@ -118,7 +118,7 @@ protected ActionLinksPanel(
}
protected final Stream<ActionLink> streamActionLinks() {
- return menuablesModel().streamMenuables(ActionLink.class);
+ return streamMenuables(ActionLink.class);
}
protected final List<ActionLink> listOfActionLinks() {
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/CssSubMenuItemsPanel.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/CssSubMenuItemsPanel.java
index 9dc0e071e88..65dae68fc87 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/CssSubMenuItemsPanel.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionlinks/serviceactions/CssSubMenuItemsPanel.java
@@ -36,7 +36,7 @@ public CssSubMenuItemsPanel(final String id, final
Can<CssMenuItem> menuables) {
setRenderBodyOnly(true);
Wkt.repeatingViewAdd(this, getId(),
- menuablesModel().streamMenuables(CssMenuItem.class),
+ streamMenuables(CssMenuItem.class),
(container, menuable)->menuable.addTo(container));
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/bool/BooleanAttributePanel.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/bool/BooleanAttributePanel.java
index dfaec6f6a13..32144677f72 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/bool/BooleanAttributePanel.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/bool/BooleanAttributePanel.java
@@ -25,7 +25,7 @@
import org.apache.causeway.commons.internal.exceptions._Exceptions;
import org.apache.causeway.viewer.commons.model.components.UiString;
-import org.apache.causeway.viewer.wicket.model.models.BooleanModel;
+import org.apache.causeway.viewer.wicket.model.models.BooleanAttributeModel;
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.attributes.AttributeFragmentFactory.CompactFragment;
@@ -59,7 +59,7 @@ protected Optional<InputFragment> getInputFragmentType() {
protected FormComponent<Boolean> createFormComponent(final String id,
final UiAttributeWkt attributeModel) {
checkBox = Wkt.checkboxX(
id,
- BooleanModel.forAttributeModel(attributeModel),
+ new BooleanAttributeModel(attributeModel),
attributeModel.isRequired(),
CheckBoxXConfig.Sizes.xl);
return checkBox;
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/menuable/MenuablePanelAbstract.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/menuable/MenuablePanelAbstract.java
index 6b7668a4b6c..e8212739cbc 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/menuable/MenuablePanelAbstract.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/menuable/MenuablePanelAbstract.java
@@ -18,25 +18,31 @@
*/
package org.apache.causeway.viewer.wicket.ui.components.menuable;
+import java.util.stream.Stream;
+
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.viewer.wicket.model.links.Menuable;
-import org.apache.causeway.viewer.wicket.model.links.MenuablesModel;
import org.apache.causeway.viewer.wicket.ui.panels.PanelAbstract;
/**
* Common panel for drop-downs and sub-menus.
*/
public abstract class MenuablePanelAbstract
-extends PanelAbstract<Can<? extends Menuable>, MenuablesModel> {
+extends PanelAbstract<Can<? extends Menuable>, IModel<Can<? extends
Menuable>>> {
private static final long serialVersionUID = 1L;
protected MenuablePanelAbstract(final String id, final Can<? extends
Menuable> menuables) {
- super(id, new MenuablesModel(menuables));
+ super(id, Model.of(menuables));
}
- public final MenuablesModel menuablesModel() {
- return getModel();
+ protected final <T extends Menuable> Stream<T> streamMenuables(final
Class<T> linkType) {
+ return getModelObject().stream()
+ .filter(linkType::isInstance)
+ .map(linkType::cast);
}
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/Wkt.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/Wkt.java
index d0f5a1488f5..3bd8340a21a 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/Wkt.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/util/Wkt.java
@@ -532,9 +532,8 @@ public static AjaxCheckBox checkbox(
* enforce a page-reload as side-effect.
*/
private boolean hasMemoizedDataRow(final IModel<Boolean> model) {
- if(model instanceof DataRowToggleWkt) {
- var chainedModel =
((DataRowToggleWkt)model).getChainedModel();
- if(chainedModel instanceof DataRowWkt dataRowWkt) {
+ if(model instanceof DataRowToggleWkt dataRowToggleWkt) {
+ if(dataRowToggleWkt.delegate() instanceof DataRowWkt
dataRowWkt) {
return dataRowWkt.isTableDataLoaded();
}
}