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 2c0e94129fa CAUSEWAY-3859: Java record refactoring (part 40)
2c0e94129fa is described below
commit 2c0e94129fabe421fcc2c06107671c68e60dcb55
Author: andi-huber <[email protected]>
AuthorDate: Sat Feb 22 18:18:29 2025 +0100
CAUSEWAY-3859: Java record refactoring (part 40)
---
.../interactions/managed/ManagedProperty.java | 6 +--
.../commons/model/src/main/java/module-info.java | 1 -
.../commons/model/binding/BindingConverter.java | 45 -----------------
.../binding/BindingConverterForManagedObject.java | 45 -----------------
.../wicket/model/hints/CausewayEventAbstract.java | 18 +++----
.../wicket/model/modelhelpers/WhereAmIHelper.java | 55 +++++++-------------
.../wicket/model/models/BookmarkedPagesModel.java | 5 +-
.../wicket/model/models/InlinePromptContext.java | 32 ++++--------
.../viewer/wicket/model/models/UiAttributeWkt.java | 28 +++++-----
.../ui/app/registry/ComponentFactoryList.java | 14 ++---
.../ui/components/about/JarManifestAttributes.java | 49 +++++++-----------
.../ui/components/about/JarManifestListView.java | 4 +-
.../attributes/AttributeModelChangeDispatcher.java | 12 ++---
.../ui/components/attributes/AttributePanel.java | 29 ++++-------
.../wicket/ui/components/attributes/_Util.java | 4 +-
.../parented/ParentedCollectionPanelFactory.java | 16 ++----
...efault.java => TreeThemeProviderBootstrap.java} | 2 +-
.../components/widgets/actionlink/ActionLink.java | 2 +-
.../ui/components/widgets/select2/Select2.java | 10 ++--
.../viewer/wicket/ui/errors/StackTraceDetail.java | 59 +++++++++-------------
.../wicket/ui/errors/StackTraceListView.java | 7 +--
.../viewer/wicket/ui/pages/error/ErrorPage.java | 2 +-
.../wicket/ui/pages/obj/DomainObjectPage.java | 2 +-
.../wicket/ui/panels/FormExecutorDefault.java | 16 ++----
.../viewer/wicket/ui/panels/PanelBase.java | 4 +-
.../wicket/ui/panels/PromptFormAbstract.java | 2 +-
.../viewer/wicket/viewer/integration/Timing.java | 31 ------------
.../integration/WebRequestCycleForCauseway.java | 11 ++--
.../registries/pages/PageClassRegistryDefault.java | 13 ++---
.../wicket/viewer/wicketapp/_PageFactory.java | 21 ++------
30 files changed, 161 insertions(+), 384 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/managed/ManagedProperty.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/managed/ManagedProperty.java
index 06dbb14ec75..7c41fb77206 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/managed/ManagedProperty.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/managed/ManagedProperty.java
@@ -96,7 +96,6 @@ public Can<ObjectAction> getAssociatedActions() {
public Optional<InteractionVeto> checkValidity(final ManagedObject
proposedNewValue) {
try {
-
var validityConsent =
property.isAssociationValid(getOwner(), proposedNewValue,
InteractionInitiatedBy.USER);
@@ -117,11 +116,8 @@ public Optional<InteractionVeto> checkValidity(final
ManagedObject proposedNewVa
* @return non-empty if the interaction is not valid for given {@code
proposedNewValue}
*/
public Optional<InteractionVeto> modifyProperty(final @Nullable
ManagedObject newValue) {
-
var interactionVeto = checkValidity(newValue);
- if(interactionVeto.isPresent()) {
- return interactionVeto;
- }
+ if(interactionVeto.isPresent()) return interactionVeto;
var updatedOwner = property.set(getOwner(), newValue,
InteractionInitiatedBy.USER);
setOwner(updatedOwner);
diff --git a/viewers/commons/model/src/main/java/module-info.java
b/viewers/commons/model/src/main/java/module-info.java
index 0e85fee55be..9565c18ec76 100644
--- a/viewers/commons/model/src/main/java/module-info.java
+++ b/viewers/commons/model/src/main/java/module-info.java
@@ -20,7 +20,6 @@
exports org.apache.causeway.viewer.commons.model;
exports org.apache.causeway.viewer.commons.model.layout;
exports org.apache.causeway.viewer.commons.model.components;
- exports org.apache.causeway.viewer.commons.model.binding;
exports org.apache.causeway.viewer.commons.model.mixin;
exports org.apache.causeway.viewer.commons.model.object;
exports org.apache.causeway.viewer.commons.model.action;
diff --git
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/binding/BindingConverter.java
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/binding/BindingConverter.java
deleted file mode 100644
index 370d6df421d..00000000000
---
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/binding/BindingConverter.java
+++ /dev/null
@@ -1,45 +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.commons.model.binding;
-
-public interface BindingConverter<L, R> {
-
- L toLeft(R right);
- R toRight(L left);
-
- public static <T> BindingConverter<T, T> identity(final Class<T> type){
- return new BindingConverter<T, T>() {
- @Override public T toLeft(final T right) {
- return right;}
- @Override public T toRight(final T left) {
- return left;}
- };
- }
-
- public default BindingConverter<R, L> reverse() {
- var self = this;
- return new BindingConverter<R, L>() {
- @Override public R toLeft(final L right) {
- return self.toRight(right);}
- @Override public L toRight(final R left) {
- return self.toLeft(left);}
- };
- }
-
-}
diff --git
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/binding/BindingConverterForManagedObject.java
b/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/binding/BindingConverterForManagedObject.java
deleted file mode 100644
index 5d44d77bb4d..00000000000
---
a/viewers/commons/model/src/main/java/org/apache/causeway/viewer/commons/model/binding/BindingConverterForManagedObject.java
+++ /dev/null
@@ -1,45 +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.commons.model.binding;
-
-import org.apache.causeway.commons.internal.base._Casts;
-import org.apache.causeway.core.metamodel.object.ManagedObject;
-import org.apache.causeway.core.metamodel.object.MmUnwrapUtils;
-import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor(staticName = "of")
-public final class BindingConverterForManagedObject<T>
-implements BindingConverter<ManagedObject, T> {
-
- @Getter private final ObjectSpecification valueSpecification;
-
- @Override
- public ManagedObject toLeft(final T pojo) {
- return ManagedObject.value(getValueSpecification(), pojo);
- }
-
- @Override
- public T toRight(final ManagedObject adapter) {
- return _Casts.uncheckedCast(MmUnwrapUtils.single(adapter));
- }
-
-}
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/hints/CausewayEventAbstract.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/hints/CausewayEventAbstract.java
index 1f236d285b2..83cd2782889 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/hints/CausewayEventAbstract.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/hints/CausewayEventAbstract.java
@@ -24,18 +24,16 @@
import lombok.RequiredArgsConstructor;
/**
- * All Causeway-related events subclass from this, and fall into two
categories.
- *
+ * All Causeway-related events subclass from this and fall into two categories.
* <p>
- * Components that are raising events should create a subclass of {@link
org.apache.causeway.viewer.wicket.model.hints.CausewayEventLetterAbstract} (the
letter)
- * and then {@link
org.apache.wicket.Component#send(org.apache.wicket.event.IEventSink,
org.apache.wicket.event.Broadcast, Object) send} as a
- * {@link org.apache.wicket.event.Broadcast#EXACT exact} message to
<tt>PageAbstract</tt>.
- * </p>
- *
+ * Components that are raising events should create a subclass of
+ * {@link
org.apache.causeway.viewer.wicket.model.hints.CausewayEventLetterAbstract} (the
letter)
+ * and then {@link
org.apache.wicket.Component#send(org.apache.wicket.event.IEventSink,
org.apache.wicket.event.Broadcast, Object)}
+ * as a {@link org.apache.wicket.event.Broadcast#EXACT} message to
<tt>PageAbstract</tt>.
* <p>
- * Then, <tt>PageAbstract</tt> will wrap the letter into the {@link
org.apache.causeway.viewer.wicket.model.hints.CausewayEnvelopeEvent} (envelope)
and
- * send as a {@link org.apache.wicket.event.Broadcast#BREADTH down} to all its
components.
- * </p>
+ * Then <tt>PageAbstract</tt> will wrap the letter into the
+ * {@link org.apache.causeway.viewer.wicket.model.hints.CausewayEnvelopeEvent}
(envelope) and
+ * send as a {@link org.apache.wicket.event.Broadcast#BREADTH} to all its
components.
*/
@RequiredArgsConstructor
public abstract class CausewayEventAbstract {
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/modelhelpers/WhereAmIHelper.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/modelhelpers/WhereAmIHelper.java
index 1be671591b1..e35e7696151 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/modelhelpers/WhereAmIHelper.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/modelhelpers/WhereAmIHelper.java
@@ -19,52 +19,37 @@
package org.apache.causeway.viewer.wicket.model.modelhelpers;
import java.util.LinkedList;
+import java.util.List;
import java.util.stream.Stream;
-import org.apache.causeway.core.metamodel.context.MetaModelContext;
import org.apache.causeway.core.metamodel.util.pchain.ParentChain;
import org.apache.causeway.viewer.wicket.model.models.UiObjectWkt;
/**
- *
- * @implNote - previously this was called WhereAmIModel,
- * but it isn't really a model in the Wicket sense (it's not
serializable, for a start), hence renamed.
* @since 2.0
*/
-public class WhereAmIHelper {
+public record WhereAmIHelper(
+ /** immutable start node of the navigable parent chain */
+ UiObjectWkt startOfChain,
+ List<Object> reversedChainOfParents,
+ boolean isWhereAmIEnabled) {
public static WhereAmIHelper of(final UiObjectWkt startOfChain) {
- return new WhereAmIHelper(startOfChain);
- }
-
- private final LinkedList<Object> reversedChainOfParents = new
LinkedList<>();
- private final UiObjectWkt startOfChain;
- private final MetaModelContext commonContext;
-
- private final boolean isWhereAmIEnabled;
-
- public WhereAmIHelper(final UiObjectWkt startOfChain) {
- this.startOfChain = startOfChain;
- this.commonContext = startOfChain.getMetaModelContext();
-
- var settings =
commonContext.getConfiguration().getViewer().getWicket().getBreadcrumbs();
- this.isWhereAmIEnabled = settings.isEnabled();
+ var mmc = startOfChain.getMetaModelContext();
+ var settings =
mmc.getConfiguration().getViewer().getWicket().getBreadcrumbs();
+ var isWhereAmIEnabled = settings.isEnabled();
int maxChainLength = settings.getMaxParentChainLength();
var adapter = startOfChain.getObject();
final Object startNode = adapter.getPojo();
- ParentChain.of(commonContext.getSpecificationLoader())
- .streamParentChainOf(startNode, maxChainLength)
- .forEach(reversedChainOfParents::addFirst);
- }
+ var reversedChainOfParents = new LinkedList<Object>();
- /**
- *
- * @return the immutable start node of the navigable parent chain
- */
- public UiObjectWkt getStartOfChain() {
- return startOfChain;
+ ParentChain.of(mmc.getSpecificationLoader())
+ .streamParentChainOf(startNode, maxChainLength)
+ .forEach(reversedChainOfParents::addFirst);
+
+ return new WhereAmIHelper(startOfChain, reversedChainOfParents,
isWhereAmIEnabled);
}
/**
@@ -72,9 +57,8 @@ public UiObjectWkt getStartOfChain() {
* @return whether the where-am-I hint should be shown or hidden
*/
public boolean isShowWhereAmI() {
- if(!isWhereAmIEnabled) {
- return false; // this will prevent rendering
- }
+ if(!isWhereAmIEnabled) return false; // this will prevent rendering
+
return !reversedChainOfParents.isEmpty();
}
@@ -83,8 +67,7 @@ public boolean isShowWhereAmI() {
* @return reversed order stream of linked parent nodes, which does not
include the start node
*/
public Stream<UiObjectWkt> streamParentChainReversed() {
- if(!isWhereAmIEnabled)
- return Stream.empty(); //[ahuber] unexpected call, we could log a
warning
+ if(!isWhereAmIEnabled) return Stream.empty(); //unexpected call, we
could log a warning
return reversedChainOfParents.stream()
.map(this::toEntityModel);
@@ -93,7 +76,7 @@ public Stream<UiObjectWkt> streamParentChainReversed() {
// -- HELPER
private UiObjectWkt toEntityModel(final Object domainObject) {
- var objectAdapter =
commonContext.getObjectManager().adapt(domainObject);
+ var objectAdapter =
startOfChain.getMetaModelContext().getObjectManager().adapt(domainObject);
return UiObjectWkt.ofAdapter(objectAdapter);
}
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkedPagesModel.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkedPagesModel.java
index 34eec239364..68300d91f40 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkedPagesModel.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/BookmarkedPagesModel.java
@@ -33,10 +33,7 @@ public class BookmarkedPagesModel extends
ModelAbstract<List<BookmarkTreeNode>>
public void bookmarkPage(final BookmarkableModel bookmarkableModel) {
var bookmark = bookmarkableModel.toBookmark().orElse(null);
- if(bookmark == null) {
- // ignore
- return;
- }
+ if(bookmark == null) return; // ignore
var matchingRootNode = matchRootNode(bookmarkableModel).orElse(null);
diff --git
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/InlinePromptContext.java
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/InlinePromptContext.java
index d89d8768c49..c26cff4192c 100644
---
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/InlinePromptContext.java
+++
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/InlinePromptContext.java
@@ -27,21 +27,11 @@
import org.apache.causeway.commons.functional.Either;
import org.apache.causeway.commons.internal.functions._Functions;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-public class InlinePromptContext implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- private final UiAttributeWkt attributeModel;
-
- @Getter
- private final MarkupContainer scalarTypeContainer;
-
- private final Component scalarIfRegular;
- private final WebMarkupContainer scalarIfRegularInlinePromptForm;
+public record InlinePromptContext(
+ UiAttributeWkt attributeModel,
+ MarkupContainer scalarTypeContainer,
+ Component scalarIfRegular,
+ WebMarkupContainer scalarIfRegularInlinePromptForm) implements
Serializable {
public void onPrompt() {
scalarIfRegular.setVisible(false);
@@ -49,17 +39,15 @@ public void onPrompt() {
}
public void onCancel(final Either<ActionModel, PropertyModel> memberModel)
{
-
memberModel
- .accept(_Functions.noopConsumer(), prop->{
- // reset the UI form input field to the untouched property value
- var untouchedPropertyValue =
prop.getManagedProperty().getPropertyValue();
- attributeModel.setObject(untouchedPropertyValue);
- });
+ .accept(_Functions.noopConsumer(), prop->{
+ // reset the UI form input field to the untouched property
value
+ var untouchedPropertyValue =
prop.getManagedProperty().getPropertyValue();
+ attributeModel.setObject(untouchedPropertyValue);
+ });
scalarIfRegular.setVisible(true);
scalarIfRegularInlinePromptForm.setVisible(false);
-
}
}
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 b3521c9275a..26f7ea5a18b 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
@@ -218,33 +218,35 @@ public void setInlinePromptContext(final
InlinePromptContext inlinePromptContext
public final AssociatedActions getAssociatedActions() {
if (associatedActions == null) {
- associatedActions = new AssociatedActions(calcAssociatedActions());
+ associatedActions = AssociatedActions.of(calcAssociatedActions());
}
return associatedActions;
}
public final boolean hasAssociatedActionWithInlineAsIfEdit() {
- return
getAssociatedActions().getFirstAssociatedWithInlineAsIfEdit().isPresent();
+ return
getAssociatedActions().firstAssociatedWithInlineAsIfEdit().isPresent();
}
protected transient AssociatedActions associatedActions;
- public static class AssociatedActions {
- @Getter private final Optional<ObjectAction>
firstAssociatedWithInlineAsIfEdit;
- @Getter private final List<ObjectAction> remainingAssociated;
-
- AssociatedActions(final Can<ObjectAction> allAssociated) {
- firstAssociatedWithInlineAsIfEdit =
firstAssociatedActionWithInlineAsIfEdit(allAssociated);
- remainingAssociated = firstAssociatedWithInlineAsIfEdit.isPresent()
- ?
allAssociated.remove(firstAssociatedWithInlineAsIfEdit.get()).toList()
- : allAssociated.toList();
+ public record AssociatedActions(
+ Optional<ObjectAction> firstAssociatedWithInlineAsIfEdit,
+ List<ObjectAction> remainingAssociated) {
+
+ static AssociatedActions of(final Can<ObjectAction> allAssociated) {
+ Optional<ObjectAction> firstAssociatedWithInlineAsIfEdit =
firstAssociatedActionWithInlineAsIfEdit(allAssociated);
+ return new AssociatedActions(
+ firstAssociatedWithInlineAsIfEdit,
+ firstAssociatedWithInlineAsIfEdit.isPresent()
+ ?
allAssociated.remove(firstAssociatedWithInlineAsIfEdit.get()).toList()
+ : allAssociated.toList());
}
private static Optional<ObjectAction>
firstAssociatedActionWithInlineAsIfEdit(
final Can<ObjectAction> objectActions) {
return objectActions.stream()
-
.filter(act->ObjectAction.Util.promptStyleFor(act).isInlineAsIfEdit())
- .findFirst();
+
.filter(act->ObjectAction.Util.promptStyleFor(act).isInlineAsIfEdit())
+ .findFirst();
}
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/app/registry/ComponentFactoryList.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/app/registry/ComponentFactoryList.java
index 7225f164eeb..5fbef603afd 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/app/registry/ComponentFactoryList.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/app/registry/ComponentFactoryList.java
@@ -18,21 +18,23 @@
*/
package org.apache.causeway.viewer.wicket.ui.app.registry;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Stream;
-import org.apache.causeway.commons.internal.collections._Lists;
import org.apache.causeway.viewer.wicket.ui.ComponentFactory;
-public final class ComponentFactoryList implements Iterable<ComponentFactory> {
+public record ComponentFactoryList(
+ List<ComponentFactory> componentFactories) implements
Iterable<ComponentFactory> {
- private final List<ComponentFactory> componentFactories =
_Lists.newArrayList();
+ public ComponentFactoryList() {
+ this(new ArrayList<>());
+ }
public void add(final ComponentFactory componentFactory) {
- if(componentFactories.contains(componentFactory)) {
- return;
- }
+ if(componentFactories.contains(componentFactory)) return;
+
componentFactories.add(componentFactory);
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/about/JarManifestAttributes.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/about/JarManifestAttributes.java
index 2161791a9da..0c0eca22324 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/about/JarManifestAttributes.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/about/JarManifestAttributes.java
@@ -22,28 +22,9 @@
import java.net.URL;
import java.util.Map.Entry;
-class JarManifestAttributes implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- public static JarManifestAttributes jarName(String jarName) {
- return new JarManifestAttributes(JarManifestAttributes.Type.JAR_NAME,
jarName);
- }
-
- public static JarManifestAttributes jarUrl(URL jarUrl) {
- return new JarManifestAttributes(JarManifestAttributes.Type.JAR_URL,
jarUrl != null? jarUrl.toExternalForm(): "");
- }
-
- public static JarManifestAttributes attribute(Entry<Object,Object> entry) {
- StringBuilder buf = new StringBuilder();
- buf .append(" ")
- .append(entry.getKey())
- .append(": ")
- .append(entry.getValue())
- .append("\n")
- ;
- return new
JarManifestAttributes(JarManifestAttributes.Type.MANIFEST_ATTRIBUTE,
buf.toString());
- }
+record JarManifestAttributes(
+ Type type,
+ String line) implements Serializable {
enum Type {
JAR_NAME,
@@ -51,18 +32,22 @@ enum Type {
MANIFEST_ATTRIBUTE
}
- private final Type type;
- private final String line;
-
- public JarManifestAttributes(Type type, String line) {
- this.type = type;
- this.line = line;
+ public static JarManifestAttributes jarName(final String jarName) {
+ return new JarManifestAttributes(JarManifestAttributes.Type.JAR_NAME,
jarName);
}
- public JarManifestAttributes.Type getType() {
- return type;
+
+ public static JarManifestAttributes jarUrl(final URL jarUrl) {
+ return new JarManifestAttributes(JarManifestAttributes.Type.JAR_URL,
jarUrl != null? jarUrl.toExternalForm(): "");
}
- public String getLine() {
- return line;
+
+ public static JarManifestAttributes attribute(final Entry<Object,Object>
entry) {
+ var buf = new StringBuilder();
+ buf.append(" ")
+ .append(entry.getKey())
+ .append(": ")
+ .append(entry.getValue())
+ .append("\n");
+ return new
JarManifestAttributes(JarManifestAttributes.Type.MANIFEST_ATTRIBUTE,
buf.toString());
}
}
\ No newline at end of file
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/about/JarManifestListView.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/about/JarManifestListView.java
index 7c6aa4c2b99..17ebab250db 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/about/JarManifestListView.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/about/JarManifestListView.java
@@ -39,7 +39,7 @@ public JarManifestListView(final String id, final String
idLine, final List<JarM
@Override
protected void populateItem(final ListItem<JarManifestAttributes> item) {
final JarManifestAttributes detail = item.getModelObject();
- item.add(new AttributeAppender("class",
detail.getType().name().toLowerCase()));
- Wkt.labelAdd(item, idLine, detail.getLine());
+ item.add(new AttributeAppender("class",
detail.type().name().toLowerCase()));
+ Wkt.labelAdd(item, idLine, detail.line());
}
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributeModelChangeDispatcher.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributeModelChangeDispatcher.java
index 90e8d3af054..52ae0c5af2a 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributeModelChangeDispatcher.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributeModelChangeDispatcher.java
@@ -24,18 +24,18 @@
public interface AttributeModelChangeDispatcher {
- @NonNull Iterable<AttributeModelChangeListener> getChangeListeners();
- @NonNull AttributePanel getScalarPanel();
+ @NonNull Iterable<AttributeModelChangeListener> changeListeners();
+ @NonNull AttributePanel attributePanel();
default void notifyUpdate(final AjaxRequestTarget target) {
- for (var listener : getChangeListeners()) {
- listener.onUpdate(target, getScalarPanel());
+ for (var listener : changeListeners()) {
+ listener.onUpdate(target, attributePanel());
}
}
default void notifyError(final AjaxRequestTarget target) {
- for (var listener : getChangeListeners()) {
- listener.onError(target, getScalarPanel());
+ for (var listener : changeListeners()) {
+ listener.onError(target, attributePanel());
}
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributePanel.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributePanel.java
index 33b01d82198..bc249ff4bef 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributePanel.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributePanel.java
@@ -19,7 +19,7 @@
package org.apache.causeway.viewer.wicket.ui.components.attributes;
import java.io.Serializable;
-import java.util.Collections;
+import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Optional;
@@ -43,7 +43,6 @@
import org.apache.causeway.commons.collections.ImmutableEnumSet;
import org.apache.causeway.commons.internal.base._Casts;
import org.apache.causeway.commons.internal.base._Strings;
-import org.apache.causeway.commons.internal.collections._Lists;
import org.apache.causeway.commons.internal.debug._Probe;
import org.apache.causeway.commons.internal.debug._Probe.EntryPoint;
import org.apache.causeway.commons.internal.exceptions._Exceptions;
@@ -69,7 +68,6 @@
import lombok.AccessLevel;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import
de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
@@ -492,37 +490,28 @@ protected void installModelChangeBehavior() {
addOrReplaceBehavoir(AttributeModelDefaultChangeBehavior.class,
()->new AttributeModelDefaultChangeBehavior(this));
}
- @RequiredArgsConstructor
- static class AttributeModelChangeDispatcherImpl
- implements AttributeModelChangeDispatcher, Serializable {
- private static final long serialVersionUID = 1L;
- private final List<AttributeModelChangeListener> changeListeners =
_Lists.newArrayList();
-
- @Getter(onMethod_={@Override})
- private final AttributePanel scalarPanel;
+ record AttributeModelChangeDispatcherImpl(
+ AttributePanel attributePanel,
+ List<AttributeModelChangeListener> changeListeners) implements
AttributeModelChangeDispatcher, Serializable {
@Override
public void notifyUpdate(final AjaxRequestTarget target) {
_Probe.entryPoint(EntryPoint.USER_INTERACTION, "Wicket Ajax
Request, "
+ "originating from User either having changed a Property
value during inline editing "
+ "or having changed a Parameter value within an open
ActionPrompt.");
- _Xray.onParamOrPropertyEdited(scalarPanel);
+ _Xray.onParamOrPropertyEdited(attributePanel);
AttributeModelChangeDispatcher.super.notifyUpdate(target);
}
- @Override
- public @NonNull Iterable<AttributeModelChangeListener>
getChangeListeners() {
- return Collections.unmodifiableCollection(changeListeners);
- }
-
void addChangeListener(final AttributeModelChangeListener listener) {
changeListeners.add(listener);
}
+
}
@Getter
private final AttributeModelChangeDispatcher
attributeModelChangeDispatcher =
- new AttributeModelChangeDispatcherImpl(this);
+ new AttributeModelChangeDispatcherImpl(this, new ArrayList<>());
public void addChangeListener(final AttributeModelChangeListener listener)
{
((AttributeModelChangeDispatcherImpl)getAttributeModelChangeDispatcher()).addChangeListener(listener);
@@ -538,7 +527,7 @@ protected final <T extends Behavior> void
addOrReplaceBehavoir(
validationFeedbackReceiver.add(factory.get());
}
- // //////////////////////////////////////
+ // --
@Override
public void onUpdate(final AjaxRequestTarget target, final AttributePanel
scalarPanel) {
@@ -551,7 +540,7 @@ public void onUpdate(final AjaxRequestTarget target, final
AttributePanel scalar
public void onError(final AjaxRequestTarget target, final AttributePanel
scalarPanel) {
}
- // ///////////////////////////////////////////////////////////////////
+ // --
/**
* When label-position LEFT or TOP populates Wicket template
ID_SCALAR_NAME_BEFORE_VALUE,
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/_Util.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/_Util.java
index 73b8ec886e8..5cb192280a0 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/_Util.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/_Util.java
@@ -80,7 +80,7 @@ Optional<ActionModel>
lookupMixinForCompositeValueUpdate(final UiAttributeWkt at
Optional<ActionModel> lookupPropertyActionForInlineEdit(final
UiAttributeWkt attributeModel) {
// not editable property, but maybe one of the actions is.
return attributeModel.getAssociatedActions()
- .getFirstAssociatedWithInlineAsIfEdit()
+ .firstAssociatedWithInlineAsIfEdit()
.flatMap(action->toActionModelWithRuleChecking(action,
attributeModel));
}
@@ -88,7 +88,7 @@ Can<ActionModel> associatedActionModels(final UiAttributeWkt
attributeModel) {
// find associated actions for this scalar property (only properties
will have any.)
// convert those actions into UI layer widgets
return attributeModel.getAssociatedActions()
- .getRemainingAssociated()
+ .remainingAssociated()
.stream()
.map(act->ActionModel.forPropertyOrParameter(act,
attributeModel))
.collect(Can.toCan());
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/parented/ParentedCollectionPanelFactory.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/parented/ParentedCollectionPanelFactory.java
index d0753a6cf1e..9f3a1fc0019 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/parented/ParentedCollectionPanelFactory.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/collection/parented/ParentedCollectionPanelFactory.java
@@ -22,6 +22,7 @@
import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
+import org.jspecify.annotations.NonNull;
import org.apache.causeway.applib.layout.component.CollectionLayoutData;
import org.apache.causeway.viewer.commons.model.components.UiComponentType;
@@ -29,10 +30,6 @@
import org.apache.causeway.viewer.wicket.ui.ComponentFactory;
import
org.apache.causeway.viewer.wicket.ui.components.object.ObjectComponentFactoryAbstract;
-import lombok.Getter;
-import org.jspecify.annotations.NonNull;
-import lombok.RequiredArgsConstructor;
-
/**
* {@link ComponentFactory} for {@link ParentedCollectionPanel}.
*/
@@ -41,12 +38,9 @@ public class ParentedCollectionPanelFactory extends
ObjectComponentFactoryAbstra
/**
* Helper class, used to call this factory.
*/
- @RequiredArgsConstructor
- @Getter
- public static class CollectionOwnerAndLayout implements Serializable {
- private static final long serialVersionUID = 1L;
- final @NonNull UiObjectWkt owner;
- final @NonNull CollectionLayoutData layout;
+ public record CollectionOwnerAndLayout(
+ @NonNull UiObjectWkt owner,
+ @NonNull CollectionLayoutData layout) implements Serializable {
}
public ParentedCollectionPanelFactory() {
@@ -66,6 +60,6 @@ protected ApplicationAdvice appliesTo(final IModel<?> model) {
@Override
public Component createComponent(final String id, final IModel<?> model) {
var collectionOwnerAndId = (CollectionOwnerAndLayout)
model.getObject();
- return new ParentedCollectionPanel(id,
collectionOwnerAndId.getOwner(), collectionOwnerAndId.getLayout());
+ return new ParentedCollectionPanel(id, collectionOwnerAndId.owner(),
collectionOwnerAndId.layout());
}
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/themes/TreeThemeProviderDefault.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/themes/TreeThemeProviderBootstrap.java
similarity index 94%
rename from
viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/themes/TreeThemeProviderDefault.java
rename to
viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/themes/TreeThemeProviderBootstrap.java
index 75d2b33ef1e..295b71c40f3 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/themes/TreeThemeProviderDefault.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/tree/themes/TreeThemeProviderBootstrap.java
@@ -22,7 +22,7 @@
import
org.apache.causeway.viewer.wicket.ui.components.tree.themes.bootstrap.WktBootstrapTreeTheme;
-public class TreeThemeProviderDefault implements TreeThemeProvider {
+public class TreeThemeProviderBootstrap implements TreeThemeProvider {
// other options as provided by wicket-extensions: WindowsTheme, HumanTheme
private final Behavior bootstrapTheme = new WktBootstrapTreeTheme();
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/actionlink/ActionLink.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/actionlink/ActionLink.java
index 1b0cfb39c31..bbe700075fa 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/actionlink/ActionLink.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/actionlink/ActionLink.java
@@ -241,7 +241,7 @@ private void startDialogWithParams(final AjaxRequestTarget
target) {
private void startDialogInline(final AjaxRequestTarget target) {
var actionModel = this.getActionModel();
var inlinePromptContext = actionModel.getInlinePromptContext();
- var scalarTypeContainer = inlinePromptContext.getScalarTypeContainer();
+ var scalarTypeContainer = inlinePromptContext.scalarTypeContainer();
getComponentFactoryRegistry().addOrReplaceComponent(scalarTypeContainer,
FrameFragment.INLINE_PROMPT_FORM.getContainerId(),
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 a9b3ca9de30..f722355cfed 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
@@ -43,15 +43,12 @@
/**
* Wrapper around either a {@link Select2Choice} or a {@link
Select2MultiChoice}.
*/
-public class Select2
+public record Select2(
+ Either<Select2ChoiceExt, Select2MultiChoiceExt> select2Choice)
implements
Serializable,
HasCommonContext {
- private static final long serialVersionUID = 1L;
-
- final Either<Select2ChoiceExt, Select2MultiChoiceExt> select2Choice;
-
public static Select2 createSelect2(
final String id,
final UiAttributeWkt attributeModel,
@@ -78,7 +75,8 @@ public static Select2 createSelect2(
return select2;
}
- private Select2(final @NonNull Either<Select2ChoiceExt,
Select2MultiChoiceExt> select2Choice) {
+ // canonical constructor
+ public Select2(final @NonNull Either<Select2ChoiceExt,
Select2MultiChoiceExt> select2Choice) {
this.select2Choice = select2Choice;
asComponent().setOutputMarkupId(true);
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/StackTraceDetail.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/StackTraceDetail.java
index cf78aecfb21..3e95cb40082 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/StackTraceDetail.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/StackTraceDetail.java
@@ -20,30 +20,37 @@
import java.io.Serializable;
-public class StackTraceDetail implements Serializable {
+public record StackTraceDetail(
+ Type type,
+ String line) implements Serializable {
- private static final long serialVersionUID = 1L;
+ enum Type {
+ EXCEPTION_CLASS_NAME,
+ EXCEPTION_MESSAGE,
+ STACKTRACE_ELEMENT,
+ LITERAL
+ }
- public static StackTraceDetail exceptionClassName(Throwable cause) {
+ public static StackTraceDetail exceptionClassName(final Throwable cause) {
return new
StackTraceDetail(StackTraceDetail.Type.EXCEPTION_CLASS_NAME,
cause.getClass().getName());
}
- public static StackTraceDetail exceptionMessage(Throwable cause) {
+ public static StackTraceDetail exceptionMessage(final Throwable cause) {
return new StackTraceDetail(StackTraceDetail.Type.EXCEPTION_MESSAGE,
cause.getMessage());
}
- public static StackTraceDetail element(StackTraceElement el) {
- StringBuilder buf = new StringBuilder();
- buf .append(" ")
- .append(el.getClassName())
- .append("#")
- .append(el.getMethodName())
- .append("(")
- .append(el.getFileName())
- .append(":")
- .append(el.getLineNumber())
- .append(")\n")
- ;
+ public static StackTraceDetail element(final StackTraceElement el) {
+ var buf = new StringBuilder();
+ buf.append(" ")
+ .append(el.getClassName())
+ .append("#")
+ .append(el.getMethodName())
+ .append("(")
+ .append(el.getFileName())
+ .append(":")
+ .append(el.getLineNumber())
+ .append(")\n");
+
return new StackTraceDetail(StackTraceDetail.Type.STACKTRACE_ELEMENT,
buf.toString());
}
@@ -55,24 +62,4 @@ public static StackTraceDetail causedBy() {
return new StackTraceDetail(Type.LITERAL, "Caused by:");
}
- enum Type {
- EXCEPTION_CLASS_NAME,
- EXCEPTION_MESSAGE,
- STACKTRACE_ELEMENT,
- LITERAL
- }
- private final Type type;
- private final String line;
-
- public StackTraceDetail(Type type, String line) {
- this.type = type;
- this.line = line;
- }
- public StackTraceDetail.Type getType() {
- return type;
- }
- public String getLine() {
- return line;
- }
-
}
\ No newline at end of file
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/StackTraceListView.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/StackTraceListView.java
index a2146a072ca..ea8e852e323 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/StackTraceListView.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/errors/StackTraceListView.java
@@ -32,7 +32,8 @@ public final class StackTraceListView
private static final long serialVersionUID = 1L;
private final String idLine;
- public StackTraceListView(final String id, final String idLine, final
List<org.apache.causeway.viewer.wicket.ui.errors.StackTraceDetail> list) {
+ public StackTraceListView(final String id, final String idLine,
+ final
List<org.apache.causeway.viewer.wicket.ui.errors.StackTraceDetail> list) {
super(id, list);
this.idLine = idLine;
}
@@ -40,7 +41,7 @@ public StackTraceListView(final String id, final String
idLine, final List<org.a
@Override
protected void populateItem(final ListItem<StackTraceDetail> item) {
final StackTraceDetail detail = item.getModelObject();
- item.add(new AttributeAppender("class",
detail.getType().name().toLowerCase()));
- Wkt.labelAdd(item, idLine, detail.getLine());
+ item.add(new AttributeAppender("class",
detail.type().name().toLowerCase()));
+ Wkt.labelAdd(item, idLine, detail.line());
}
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/error/ErrorPage.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/error/ErrorPage.java
index dfd80244b3a..7a8861ff657 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/error/ErrorPage.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/error/ErrorPage.java
@@ -85,7 +85,7 @@ public ErrorPage(final ExceptionModel exceptionModel) {
}
protected List<String> transform(final List<StackTraceDetail> stackTrace) {
- return _Lists.map(stackTrace, (final StackTraceDetail
stackTraceDetail) -> stackTraceDetail.getLine());
+ return _Lists.map(stackTrace, StackTraceDetail::line);
}
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/obj/DomainObjectPage.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/obj/DomainObjectPage.java
index b57bbdce297..7802146841b 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/obj/DomainObjectPage.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/obj/DomainObjectPage.java
@@ -198,7 +198,7 @@ protected void addWhereAmIIfShown(
whereAmIModel.streamParentChainReversed().forEach(objectModel->
listItems.add(ObjectIconAndTitlePanelFactory.entityIconAndTitlePanel(listItems.newChildId(),
objectModel)));
- Wkt.labelAdd(listItems, listItems.newChildId(),
whereAmIModel.getStartOfChain().getTitle());
+ Wkt.labelAdd(listItems, listItems.newChildId(),
whereAmIModel.startOfChain().getTitle());
whereAmIContainer.addOrReplace(listItems);
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormExecutorDefault.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormExecutorDefault.java
index 7a83099a33c..93a3c7ecbde 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormExecutorDefault.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -40,10 +40,9 @@
import lombok.extern.log4j.Log4j2;
@Log4j2
-public final class FormExecutorDefault
-implements FormExecutor, HasCommonContext {
-
- private static final long serialVersionUID = 1L;
+public record FormExecutorDefault(
+ Either<ActionModel, PropertyModel> actionOrPropertyModel
+ ) implements FormExecutor, HasCommonContext {
// -- FACTORIES
@@ -59,15 +58,6 @@ public static FormExecutor forMember(final
Either<ActionModel, PropertyModel> ac
return new FormExecutorDefault(actionOrPropertyModel);
}
- // -- CONSTRUCTION
-
- private final Either<ActionModel, PropertyModel> actionOrPropertyModel;
-
- private FormExecutorDefault(
- final Either<ActionModel, PropertyModel> actionOrPropertyModel) {
- this.actionOrPropertyModel = actionOrPropertyModel;
- }
-
/**
* @return <tt>false</tt> - if invalid args;
* <tt>true</tt> if redirecting to new page, or repainting all components
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/PanelBase.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/PanelBase.java
index 5f53bfd5096..d18c47e7481 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/PanelBase.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/PanelBase.java
@@ -35,7 +35,7 @@
import
org.apache.causeway.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import
org.apache.causeway.viewer.wicket.ui.app.registry.HasComponentFactoryRegistry;
import
org.apache.causeway.viewer.wicket.ui.components.tree.themes.TreeThemeProvider;
-import
org.apache.causeway.viewer.wicket.ui.components.tree.themes.TreeThemeProviderDefault;
+import
org.apache.causeway.viewer.wicket.ui.components.tree.themes.TreeThemeProviderBootstrap;
import org.apache.causeway.viewer.wicket.ui.pages.EmailVerificationUrlService;
import org.apache.causeway.viewer.wicket.ui.pages.PageClassRegistry;
import org.apache.causeway.viewer.wicket.ui.pages.PageNavigationService;
@@ -75,7 +75,7 @@ public LanguageProvider getLanguageProvider() {
private transient TreeThemeProvider treeThemeProvider;
protected TreeThemeProvider getTreeThemeProvider() {
- return treeThemeProvider =
computeIfAbsentOrFallback(TreeThemeProvider.class, treeThemeProvider,
TreeThemeProviderDefault::new);
+ return treeThemeProvider =
computeIfAbsentOrFallback(TreeThemeProvider.class, treeThemeProvider,
TreeThemeProviderBootstrap::new);
}
private transient EmailNotificationService emailNotificationService;
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/PromptFormAbstract.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/PromptFormAbstract.java
index 3e8cdedf7f1..7170a8dd910 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/PromptFormAbstract.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/PromptFormAbstract.java
@@ -201,7 +201,7 @@ private void rebuildGuiAfterInlinePromptDone(final
AjaxRequestTarget target) {
// change visibility of inline components
formExecutorContext().getInlinePromptContext().onCancel(getMemberModel());
-
Optional.ofNullable(formExecutorContext().getInlinePromptContext().getScalarTypeContainer())
+
Optional.ofNullable(formExecutorContext().getInlinePromptContext().scalarTypeContainer())
.ifPresent(scalarTypeContainer->{
Wkt.javaScriptAdd(target, EventTopic.FOCUS_FIRST_PROPERTY,
scalarTypeContainer.getMarkupId());
});
diff --git
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/integration/Timing.java
b/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/integration/Timing.java
deleted file mode 100644
index d3317d6ea9b..00000000000
---
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/integration/Timing.java
+++ /dev/null
@@ -1,31 +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.viewer.integration;
-
-class Timing {
- private final long startTime;
-
- Timing() {
- this.startTime = System.currentTimeMillis();
- }
-
- long took() {
- return System.currentTimeMillis() - startTime;
- }
-}
diff --git
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/integration/WebRequestCycleForCauseway.java
b/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/integration/WebRequestCycleForCauseway.java
index b24b01fd56f..f847d353f39 100644
---
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/integration/WebRequestCycleForCauseway.java
+++
b/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/integration/WebRequestCycleForCauseway.java
@@ -43,7 +43,6 @@
import org.apache.wicket.request.cycle.PageRequestHandlerTracker;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.mapper.parameter.PageParameters;
-
import org.jspecify.annotations.Nullable;
import
org.apache.causeway.applib.exceptions.unrecoverable.BookmarkNotFoundException;
@@ -58,6 +57,8 @@
import org.apache.causeway.applib.services.user.UserService;
import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.commons.internal.base._Strings;
+import org.apache.causeway.commons.internal.base._Timing;
+import org.apache.causeway.commons.internal.base._Timing.StopWatch;
import org.apache.causeway.commons.internal.exceptions._Exceptions;
import org.apache.causeway.core.metamodel.spec.feature.ObjectMember;
import
org.apache.causeway.core.metamodel.specloader.validator.MetaModelInvalidException;
@@ -121,7 +122,7 @@ static boolean isExpiryMessageTimeframeExpired() {
@Setter
private PageClassRegistry pageClassRegistry;
- private static ThreadLocal<Timing> timings =
ThreadLocal.withInitial(Timing::new);
+ private static ThreadLocal<StopWatch> timings =
ThreadLocal.withInitial(_Timing::now);
@Override
public synchronized void onBeginRequest(final RequestCycle requestCycle) {
@@ -186,7 +187,7 @@ public synchronized void onBeginRequest(final RequestCycle
requestCycle) {
}
if(log.isDebugEnabled()) {
- timings.set(new Timing());
+ timings.set(_Timing.now());
}
}
@@ -273,7 +274,7 @@ public synchronized void onEndRequest(final RequestCycle
requestCycle) {
if(log.isDebugEnabled()) {
var metricsServiceIfAny =
getMetaModelContext().lookupService(MetricsService.class);
- long took = timings.get().took();
+ long took = timings.get().getMillis();
if(took > 50) { // avoid too much clutter
if(metricsServiceIfAny.isPresent()) {
var metricsService = metricsServiceIfAny.get();
@@ -303,7 +304,7 @@ public void onDetach(final RequestCycle requestCycle) {
public IRequestHandler onException(final RequestCycle cycle, final
Exception ex) {
if(log.isDebugEnabled()) {
- log.debug("onException {} took: {}ms",
ex.getClass().getSimpleName(), timings.get().took());
+ log.debug("onException {} took: {}ms",
ex.getClass().getSimpleName(), timings.get().getMillis());
}
// using side-effect free access to MM validation result
diff --git
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/registries/pages/PageClassRegistryDefault.java
b/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/registries/pages/PageClassRegistryDefault.java
index 47d105b8c98..11b79f46c09 100644
---
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/registries/pages/PageClassRegistryDefault.java
+++
b/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/registries/pages/PageClassRegistryDefault.java
@@ -30,6 +30,7 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Service;
import org.apache.causeway.applib.annotation.PriorityPrecedence;
import org.apache.causeway.commons.internal.collections._Maps;
@@ -44,7 +45,9 @@
* Default implementation of {@link PageClassRegistry}; just delegates to an
* underlying {@link PageClassList}.
*/
+@Service
public class PageClassRegistryDefault implements PageClassRegistry,
PageClassRegistrySpi {
+ private static final long serialVersionUID = 1L;
public static final String LOGICAL_TYPE_NAME =
CausewayModuleViewerWicketViewer.NAMESPACE +
".PageClassRegistryDefault";
@@ -55,19 +58,17 @@ public static class AutoConfiguration {
@Named(LOGICAL_TYPE_NAME)
@Order(PriorityPrecedence.MIDPOINT)
@Qualifier("Default")
- public PageClassRegistryDefault pageClassRegistryDefault(PageClassList
pageClassList) {
+ public PageClassRegistryDefault pageClassRegistryDefault(final
PageClassList pageClassList) {
return new PageClassRegistryDefault(pageClassList);
}
}
- private static final long serialVersionUID = 1L;
-
private final PageClassList pageClassList; // serializable
private final Map<PageType, Class<? extends Page>> pageClassByType =
_Maps.newHashMap();
private final Map<Class<? extends Page>, PageType> typeByPageClass =
_Maps.newHashMap();
@Inject
- public PageClassRegistryDefault(PageClassList pageClassList) {
+ public PageClassRegistryDefault(final PageClassList pageClassList) {
this.pageClassList = pageClassList;
}
@@ -91,12 +92,12 @@ public final Class<? extends Page> getPageClass(final
PageType pageType) {
}
@Override
- public PageType getPageType(Class<? extends Page> pageClass) {
+ public PageType getPageType(final Class<? extends Page> pageClass) {
return typeByPageClass.get(pageClass);
}
@Override
- public PageType getPageType(PageAbstract page) {
+ public PageType getPageType(final PageAbstract page) {
return getPageType(page.getClass());
}
diff --git
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/wicketapp/_PageFactory.java
b/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/wicketapp/_PageFactory.java
index e1f1ae0345d..81275d744f9 100644
---
a/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/wicketapp/_PageFactory.java
+++
b/viewers/wicket/viewer/src/main/java/org/apache/causeway/viewer/wicket/viewer/wicketapp/_PageFactory.java
@@ -27,8 +27,6 @@
import org.apache.causeway.viewer.wicket.model.models.PageType;
import org.apache.causeway.viewer.wicket.ui.pages.obj.DomainObjectPage;
-import lombok.RequiredArgsConstructor;
-
/**
* Uses Wicket's default page factory, except for {@link DomainObjectPage}s
which require special instantiation:
* <p>
@@ -38,43 +36,32 @@
*
* @since 2.0
*/
-@RequiredArgsConstructor
-class _PageFactory implements IPageFactory {
-
- private final CausewayWicketApplication holder;
- private final IPageFactory delegate;
+record _PageFactory(
+ CausewayWicketApplication holder,
+ IPageFactory delegate) implements IPageFactory {
@Override
public <C extends IRequestablePage> C newPage(final Class<C> pageClass,
final PageParameters parameters) {
-
if(DomainObjectPage.class.equals(pageClass)) {
return
_Casts.uncheckedCast(DomainObjectPage.forPageParameters(parameters));
}
-
return delegate.newPage(pageClass, parameters);
}
@Override
public <C extends IRequestablePage> C newPage(final Class<C> pageClass) {
-
if(DomainObjectPage.class.equals(pageClass)) {
//TODO whenever this happens we should redirect to home,
// almost certainly the session has timed out
-
var pageTimeoutPageClass =
holder.getPageClassRegistry().getPageClass(PageType.HOME_AFTER_PAGETIMEOUT);
return
_Casts.uncheckedCast(delegate.newPage(pageTimeoutPageClass));
}
-
return delegate.newPage(pageClass);
}
@Override
public <C extends IRequestablePage> boolean isBookmarkable(final Class<C>
pageClass) {
-
- if(DomainObjectPage.class.equals(pageClass)) {
- return true;
- }
-
+ if(DomainObjectPage.class.equals(pageClass)) return true;
return delegate.isBookmarkable(pageClass);
}