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 2041740fa55 CAUSEWAY-3859: Java record refactoring (part 23)
2041740fa55 is described below
commit 2041740fa55c46cbd55838f8b38b2fd8df379b34
Author: Andi Huber <[email protected]>
AuthorDate: Thu Feb 20 08:50:01 2025 +0100
CAUSEWAY-3859: Java record refactoring (part 23)
---
.../metamodel/interactions/InteractionUtils.java | 6 ++--
.../core/metamodel/interactions/RenderPolicy.java | 33 ++++++++++-----------
.../core/metamodel/object/ProtoObject.java | 34 +++++++++++++++-------
.../objectmanager/ObjectLoaderFactory.java | 22 +++++++-------
4 files changed, 53 insertions(+), 42 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/InteractionUtils.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/InteractionUtils.java
index c8424f94d75..142c1d53e42 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/InteractionUtils.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/InteractionUtils.java
@@ -49,7 +49,7 @@ public InteractionResult isVisibleResult(final FacetHolder
facetHolder, final Vi
var iaResult = new InteractionResult(context.createInteractionEvent());
// depending on the ifHiddenPolicy, we may do no vetoing here
(instead, it moves into the usability check).
- var ifHiddenPolicy = context.getRenderPolicy().getIfHiddenPolicy();
+ var ifHiddenPolicy = context.getRenderPolicy().ifHiddenPolicy();
switch (ifHiddenPolicy) {
case HIDE:
facetHolder.streamFacets(HidingInteractionAdvisor.class)
@@ -77,7 +77,7 @@ public InteractionResult isUsableResult(final FacetHolder
facetHolder, final Usa
var isResult = new InteractionResult(context.createInteractionEvent());
// depending on the ifHiddenPolicy, we additionally may disable using
a hidden advisor
- var ifHiddenPolicy = context.getRenderPolicy().getIfHiddenPolicy();
+ var ifHiddenPolicy = context.getRenderPolicy().ifHiddenPolicy();
switch (ifHiddenPolicy) {
case HIDE:
break;
@@ -100,7 +100,7 @@ public InteractionResult isUsableResult(final FacetHolder
facetHolder, final Usa
break;
}
- var ifDisabledPolicy = context.getRenderPolicy().getIfDisabledPolicy();
+ var ifDisabledPolicy = context.getRenderPolicy().ifDisabledPolicy();
facetHolder.streamFacets(DisablingInteractionAdvisor.class)
.filter(advisor->compatible(advisor, context))
.forEach(advisor->{
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/RenderPolicy.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/RenderPolicy.java
index 61f0a296da5..ad171b9d1a2 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/RenderPolicy.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/RenderPolicy.java
@@ -20,10 +20,10 @@
import java.io.Serializable;
-import org.apache.causeway.core.config.CausewayConfiguration;
-
import org.jspecify.annotations.NonNull;
+import org.apache.causeway.core.config.CausewayConfiguration;
+
/**
* <h1>Troubleshooting Visibility and Usability</h1>
* <p>
@@ -50,33 +50,30 @@
* </li>
* </ol>
*/
[email protected]
-public class RenderPolicy implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Always HIDE and DISABLE.
- */
- public static RenderPolicy forActionParameters() {
- return new RenderPolicy(
- CausewayConfiguration.Prototyping.IfHiddenPolicy.HIDE,
- CausewayConfiguration.Prototyping.IfDisabledPolicy.DISABLE);
- }
-
+public record RenderPolicy(
/**
* If not specified or is set to HIDE, then the behaviour is as per normal.
* However, if set to SHOW_AS_DISABLED then instead the action or property
will be shown,
* but disabled with the veto providing some explanation as to why. And,
if set to SHOW_AS_DISABLED_WITH_DIAGNOSTICS,
* then the class name of the metamodel facet that vetoed the visibility
is also shown in the tooltip.
*/
- private final CausewayConfiguration.Prototyping.@NonNull IfHiddenPolicy
ifHiddenPolicy;
+ CausewayConfiguration.Prototyping.@NonNull IfHiddenPolicy ifHiddenPolicy,
/**
* If not specified or is set to DISABLED, then the behaviour is as per
normal.
* But if set to SHOW_AS_DISABLED_WITH_DIAGNOSTICS, then the class name of
the metamodel facet that vetoed
* the usability is also shown in the tooltip.
*/
- private final CausewayConfiguration.Prototyping.@NonNull IfDisabledPolicy
ifDisabledPolicy;
+ CausewayConfiguration.Prototyping.@NonNull IfDisabledPolicy
ifDisabledPolicy
+ ) implements Serializable {
+
+ /**
+ * Always HIDE and DISABLE.
+ */
+ public static RenderPolicy forActionParameters() {
+ return new RenderPolicy(
+ CausewayConfiguration.Prototyping.IfHiddenPolicy.HIDE,
+ CausewayConfiguration.Prototyping.IfDisabledPolicy.DISABLE);
+ }
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ProtoObject.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ProtoObject.java
index c0937b63a18..795ba72fafc 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ProtoObject.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/ProtoObject.java
@@ -31,29 +31,43 @@
/**
* Pair of {@link ObjectSpecification} and {@link Bookmark}.
*/
[email protected](staticConstructor = "of")
-public class ProtoObject {
-
- private final @NonNull ObjectSpecification objectSpecification;
- private final @NonNull Bookmark bookmark;
+public record ProtoObject(
+ @NonNull ObjectSpecification objectSpecification,
+ @NonNull Bookmark bookmark) {
public static Optional<ProtoObject> resolve(
final @NonNull SpecificationLoader specificationLoader,
final @Nullable Bookmark bookmark) {
- if(bookmark==null) {
- return Optional.empty();
- }
+ if(bookmark==null) return Optional.empty();
+
return specificationLoader
.specForLogicalTypeName(bookmark.logicalTypeName())
- .map(spec->of(spec, bookmark));
+ .map(spec->new ProtoObject(spec, bookmark));
}
public static ProtoObject resolveElseFail(
final @NonNull SpecificationLoader specificationLoader,
final @NonNull Bookmark bookmark) {
- return of(specificationLoader
+ return new ProtoObject(specificationLoader
.specForLogicalTypeNameElseFail(bookmark.logicalTypeName()),
bookmark);
}
+ @Override
+ public final boolean equals(final Object obj) {
+ return obj instanceof ProtoObject other
+ ? this.bookmark().equals(other.bookmark())
+ : false;
+ }
+
+ @Override
+ public final int hashCode() {
+ return bookmark().hashCode();
+ }
+
+ @Override
+ public final String toString() {
+ return "ProtoObject[bookmark=%s]".formatted(bookmark);
+ }
+
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/ObjectLoaderFactory.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/ObjectLoaderFactory.java
index daecfccbf1a..904f10deb03 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/ObjectLoaderFactory.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/objectmanager/ObjectLoaderFactory.java
@@ -39,12 +39,12 @@ enum BuiltinHandlers implements
ChainOfResponsibility.Handler<ProtoObject, Manag
LoadService{
@Override
public boolean isHandling(final ProtoObject objectLoadRequest) {
- var spec = objectLoadRequest.getObjectSpecification();
+ var spec = objectLoadRequest.objectSpecification();
return spec.isInjectable();
}
@Override
public ManagedObject handle(final ProtoObject objectLoadRequest) {
- var spec = objectLoadRequest.getObjectSpecification();
+ var spec = objectLoadRequest.objectSpecification();
var logicalType = spec.logicalType();
var servicePojo = spec.getServiceRegistry()
.lookupRegisteredBeanById(logicalType)
@@ -58,15 +58,15 @@ public ManagedObject handle(final ProtoObject
objectLoadRequest) {
LoadValue{
@Override
public boolean isHandling(final ProtoObject objectLoadRequest) {
- var spec = objectLoadRequest.getObjectSpecification();
+ var spec = objectLoadRequest.objectSpecification();
return spec.isValue();
}
@Override
public ManagedObject handle(final ProtoObject objectLoadRequest) {
- var spec = objectLoadRequest.getObjectSpecification();
+ var spec = objectLoadRequest.objectSpecification();
var valueFacet = spec.valueFacetElseFail();
- var bookmark = objectLoadRequest.getBookmark();
+ var bookmark = objectLoadRequest.bookmark();
var valuePojoIfAny = valueFacet.destring(Format.URL_SAFE,
bookmark.identifier());
return ManagedObject.value(spec, valuePojoIfAny);
@@ -75,31 +75,31 @@ public ManagedObject handle(final ProtoObject
objectLoadRequest) {
LoadViewModel{
@Override
public boolean isHandling(final ProtoObject objectLoadRequest) {
- var spec = objectLoadRequest.getObjectSpecification();
+ var spec = objectLoadRequest.objectSpecification();
return spec.isViewModel();
}
@Override
public ManagedObject handle(final ProtoObject objectLoadRequest) {
- var spec = objectLoadRequest.getObjectSpecification();
+ var spec = objectLoadRequest.objectSpecification();
var viewModelFacet = spec.viewmodelFacetElseFail();
- var bookmark = objectLoadRequest.getBookmark();
+ var bookmark = objectLoadRequest.bookmark();
return viewModelFacet.instantiate(spec, Optional.of(bookmark));
}
},
LoadEntity{
@Override
public boolean isHandling(final ProtoObject objectLoadRequest) {
- var spec = objectLoadRequest.getObjectSpecification();
+ var spec = objectLoadRequest.objectSpecification();
return spec.isEntity();
}
@Override
public ManagedObject handle(final ProtoObject objectLoadRequest) {
- var spec = objectLoadRequest.getObjectSpecification();
+ var spec = objectLoadRequest.objectSpecification();
var entityFacet = spec.entityFacetElseFail();
- var bookmark = objectLoadRequest.getBookmark();
+ var bookmark = objectLoadRequest.bookmark();
var entityPojoIfAny = entityFacet.fetchByBookmark(bookmark);
return entityPojoIfAny