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

Reply via email to