This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v4
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/v4 by this push:
     new 63f5845f10c CAUSEWAY-3892: work on deprecations (2)
63f5845f10c is described below

commit 63f5845f10c4f9ae0a880ad58ba05e7e9ab2da04
Author: Andi Huber <[email protected]>
AuthorDate: Fri Jun 13 09:02:49 2025 +0200

    CAUSEWAY-3892: work on deprecations (2)
---
 .../causeway/applib/util/ObjectContracts.java      | 45 -------------------
 .../org/apache/causeway/applib/util/Invoice.java   | 10 +++--
 .../apache/causeway/applib/util/InvoiceItem.java   |  8 ++--
 .../applib/util/ObjectContractsTest_equals.java    | 36 +++++++--------
 .../ObjectContractsTest_equals_and_hashCode.java   | 52 +++++++---------------
 .../applib/util/ObjectContractsTest_toString.java  | 16 +++----
 6 files changed, 51 insertions(+), 116 deletions(-)

diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/util/ObjectContracts.java 
b/api/applib/src/main/java/org/apache/causeway/applib/util/ObjectContracts.java
index 5401d93451c..358f7cc5597 100644
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/util/ObjectContracts.java
+++ 
b/api/applib/src/main/java/org/apache/causeway/applib/util/ObjectContracts.java
@@ -19,10 +19,8 @@
 package org.apache.causeway.applib.util;
 
 import java.util.Comparator;
-import java.util.Objects;
 import java.util.function.Function;
 
-import org.apache.causeway.commons.internal.base._Casts;
 import org.apache.causeway.commons.internal.base._NullSafe;
 
 import lombok.extern.slf4j.Slf4j;
@@ -142,47 +140,4 @@ public static Function<Object, String> 
combineToFunction(final ToStringEvaluator
         }
     }
 
-    // -- BACKWARDS COMPATIBILITY
-
-    @Deprecated // uses reflection on each call
-    public static <T> String toString(final T obj, final String propertyNames) 
{
-        Objects.requireNonNull(obj, "obj required, otherwise undecidable");
-
-        return parse(_Casts.uncheckedCast(obj.getClass()), propertyNames)
-                .toString(obj);
-    }
-
-    @Deprecated // uses reflection on each call
-    public static <T> boolean equals(final T obj, final Object other, final 
String propertyNames) {
-
-        if(obj==null && other==null) {
-            if(log.isWarnEnabled()) {
-                log.warn("potential misuse of <T> ObjectContracts::equals(T 
obj, Object other, "
-                        + "String propertyNames). First argument is not 
expected to be null!");
-            }
-            return true;
-        }
-
-        Objects.requireNonNull(obj, "obj required, otherwise undecidable");
-
-        return parse(_Casts.uncheckedCast(obj.getClass()), propertyNames)
-                .equals(obj, other);
-    }
-
-    @Deprecated // uses reflection on each call
-    public static int hashCode(final Object obj, final String propertyNames) {
-        Objects.requireNonNull(obj, "obj required, otherwise undecidable");
-
-        return parse(_Casts.uncheckedCast(obj.getClass()), propertyNames)
-                .hashCode(obj);
-    }
-
-    @Deprecated // uses reflection on each call
-    public static <T> int compare(final T obj, final T other, final String 
propertyNames) {
-        Objects.requireNonNull(obj, "obj required, otherwise undecidable");
-
-        return parse(_Casts.uncheckedCast(obj.getClass()), propertyNames)
-                .compare(obj, other);
-    }
-
 }
diff --git 
a/api/applib/src/test/java/org/apache/causeway/applib/util/Invoice.java 
b/api/applib/src/test/java/org/apache/causeway/applib/util/Invoice.java
index 7c13729c405..4cdb0ebf2ed 100644
--- a/api/applib/src/test/java/org/apache/causeway/applib/util/Invoice.java
+++ b/api/applib/src/test/java/org/apache/causeway/applib/util/Invoice.java
@@ -18,9 +18,11 @@
  */
 package org.apache.causeway.applib.util;
 
-@SuppressWarnings("deprecation")
+import org.apache.causeway.applib.util.ObjectContracts.ObjectContract;
+
 class Invoice implements Comparable<Invoice>{
-    private static final String KEY_PROPERTIES = "number";
+
+    private static final ObjectContract<Invoice> objContract = 
ObjectContracts.parse(Invoice.class, "number");
 
     private String number;
     public String getNumber() {
@@ -31,10 +33,10 @@ public void setNumber(String number) {
     }
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, KEY_PROPERTIES);
+        return objContract.toString(this);
     }
     @Override
     public int compareTo(Invoice o) {
-        return ObjectContracts.compare(this, o, KEY_PROPERTIES);
+        return objContract.compare(this, o);
     }
 }
\ No newline at end of file
diff --git 
a/api/applib/src/test/java/org/apache/causeway/applib/util/InvoiceItem.java 
b/api/applib/src/test/java/org/apache/causeway/applib/util/InvoiceItem.java
index 2e3e49fd2bf..3ad70f54ffa 100644
--- a/api/applib/src/test/java/org/apache/causeway/applib/util/InvoiceItem.java
+++ b/api/applib/src/test/java/org/apache/causeway/applib/util/InvoiceItem.java
@@ -18,7 +18,8 @@
  */
 package org.apache.causeway.applib.util;
 
-@SuppressWarnings("deprecation")
+import org.apache.causeway.applib.util.ObjectContracts.ObjectContract;
+
 class InvoiceItem implements Comparable<InvoiceItem> {
 
     static InvoiceItem newInvoiceItem(Invoice invoice, String productCode, 
Integer quantity, Boolean rush) {
@@ -63,13 +64,14 @@ public void setRush(Boolean rush) {
     }
 
     private static final String KEY_PROPERTIES = "invoice desc, productCode 
asc, quantity asc nullsLast, rush desc nullsLast";
+    private static final ObjectContract<InvoiceItem> objContract = 
ObjectContracts.parse(InvoiceItem.class, KEY_PROPERTIES);
 
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, KEY_PROPERTIES);
+        return objContract.toString(this);
     }
     @Override
     public int compareTo(InvoiceItem o) {
-        return ObjectContracts.compare(this, o, KEY_PROPERTIES);
+        return objContract.compare(this, o);
     }
 }
\ No newline at end of file
diff --git 
a/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_equals.java
 
b/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_equals.java
index 647f06ae62a..0050c0495b1 100644
--- 
a/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_equals.java
+++ 
b/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_equals.java
@@ -22,32 +22,28 @@
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import org.apache.causeway.applib.util.ObjectContracts.ObjectContract;
+
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import lombok.Setter;
 
-@SuppressWarnings("deprecation")
 class ObjectContractsTest_equals {
 
     static class Invoice4 {
-        private static final String KEY_PROPERTIES = "number";
+        private static final ObjectContract<Invoice4> objContract = 
ObjectContracts.parse(Invoice4.class, "number");
 
-        private String number;
-        public String getNumber() {
-            return number;
-        }
-        public void setNumber(final String number) {
-            this.number = number;
-        }
+        @Getter @Setter private String number;
         @Override
         public int hashCode() {
-            return ObjectContracts.hashCode(this, KEY_PROPERTIES);
+            return objContract.hashCode(this);
         }
         @Override
         public boolean equals(final Object obj) {
-            return ObjectContracts.equals(this, obj, KEY_PROPERTIES);
+            return objContract.equals(this, obj);
         }
 
     }
@@ -71,31 +67,35 @@ public void setUp() throws Exception {
 
     @Test
     public void happyCase() throws Exception {
-        assertTrue(ObjectContracts.equals(p, q, "number"));
+        assertEquals(p, q);
     }
 
     @Test
     public void nullsAreEqual() throws Exception {
-        assertTrue(ObjectContracts.equals(null, null, "number"));
+        var objContract = ObjectContracts.parse(Invoice4.class, "number");
+        assertTrue(objContract.equals(null, null));
     }
 
     @Test
     public void notEqualDifferentValues() throws Exception {
-        assertFalse(ObjectContracts.equals(p, r, "number"));
+        assertNotEquals(p, r);
+        assertNotEquals(r, p);
     }
 
     @Test
     public void notEqualDifferentTypes() throws Exception {
-        assertFalse(ObjectContracts.equals(p, x, "number"));
+        assertNotEquals(p, x);
+        assertNotEquals(x, p);
     }
 
     @Test
     public void notEqualNull() throws Exception {
-        assertFalse(ObjectContracts.equals(p, null, "number"));
+        assertNotEquals(p, null);
+        assertNotEquals(null, p);
     }
 
     @RequiredArgsConstructor(staticName = "of")
-    public static class ComplexNumber implements Comparable<ComplexNumber> {
+    static class ComplexNumber implements Comparable<ComplexNumber> {
 
         @Getter private final int real;
         @Getter private final int imaginary;
diff --git 
a/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_equals_and_hashCode.java
 
b/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_equals_and_hashCode.java
index b7c7771084c..3d53d2d83f1 100644
--- 
a/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_equals_and_hashCode.java
+++ 
b/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_equals_and_hashCode.java
@@ -22,8 +22,12 @@
 
 import org.junit.jupiter.api.BeforeEach;
 
+import org.apache.causeway.applib.util.ObjectContracts.ObjectContract;
 import 
org.apache.causeway.core.internaltestsupport.contract.ValueTypeContractTestAbstract;
 
+import lombok.Getter;
+import lombok.Setter;
+
 class ObjectContractsTest_equals_and_hashCode extends 
ValueTypeContractTestAbstract<InvoiceItem3> {
 
     private Invoice3 inv123;
@@ -59,29 +63,23 @@ protected List<InvoiceItem3> getObjectsWithDifferentValue() 
{
     }
 }
 
-@SuppressWarnings("deprecation")
 class Invoice3 {
-    private static final String KEY_PROPERTIES = "number";
+    private static final ObjectContract<Invoice3> objContract = 
ObjectContracts.parse(Invoice3.class, "number");
 
+    @Getter @Setter
     private String number;
-    public String getNumber() {
-        return number;
-    }
-    public void setNumber(final String number) {
-        this.number = number;
-    }
+
     @Override
     public int hashCode() {
-        return ObjectContracts.hashCode(this, KEY_PROPERTIES);
+        return objContract.hashCode(this);
     }
     @Override
     public boolean equals(final Object obj) {
-        return ObjectContracts.equals(this, obj, KEY_PROPERTIES);
+        return objContract.equals(this, obj);
     }
 
 }
 
-@SuppressWarnings("deprecation")
 class InvoiceItem3 {
 
     static InvoiceItem3 newInvoiceItem(final Invoice3 invoice, final String 
productCode, final Integer quantity) {
@@ -92,37 +90,19 @@ static InvoiceItem3 newInvoiceItem(final Invoice3 invoice, 
final String productC
         return invoiceItem;
     }
 
-    private Invoice3 invoice;
-    public Invoice3 getInvoice() {
-        return invoice;
-    }
-    public void setInvoice(final Invoice3 invoice) {
-        this.invoice = invoice;
-    }
-
-    private String productCode;
-    public String getProductCode() {
-        return productCode;
-    }
-    public void setProductCode(final String productCode) {
-        this.productCode = productCode;
-    }
-
-    private Integer quantity;
-    public Integer getQuantity() {
-        return quantity;
-    }
-    public void setQuantity(final Integer quantity) {
-        this.quantity = quantity;
-    }
+    @Getter @Setter private Invoice3 invoice;
+    @Getter @Setter private String productCode;
+    @Getter @Setter private Integer quantity;
 
     private static final String KEY_PROPERTIES = "invoice desc, productCode, 
quantity";
+    private static final ObjectContract<InvoiceItem3> objContract = 
ObjectContracts.parse(InvoiceItem3.class, KEY_PROPERTIES);
+
     @Override
     public int hashCode() {
-        return ObjectContracts.hashCode(this, KEY_PROPERTIES);
+        return objContract.hashCode(this);
     }
     @Override
     public boolean equals(final Object obj) {
-        return ObjectContracts.equals(this, obj, KEY_PROPERTIES);
+        return objContract.equals(this, obj);
     }
 }
diff --git 
a/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_toString.java
 
b/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_toString.java
index 770597addab..d2448ed0753 100644
--- 
a/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_toString.java
+++ 
b/api/applib/src/test/java/org/apache/causeway/applib/util/ObjectContractsTest_toString.java
@@ -61,9 +61,9 @@ public void customized() {
 
 }
 
-@SuppressWarnings("deprecation")
 class Invoice2 implements Comparable<Invoice2>, Numbered {
     private static final String KEY_PROPERTIES = "number";
+    private static final ObjectContract<Invoice2> objContract = 
ObjectContracts.parse(Invoice2.class, KEY_PROPERTIES);
 
     private String number;
     @Override
@@ -75,15 +75,14 @@ public void setNumber(final String number) {
     }
     @Override
     public String toString() {
-        return ObjectContracts.toString(this, KEY_PROPERTIES);
+        return objContract.toString(this);
     }
     @Override
     public int compareTo(final Invoice2 o) {
-        return ObjectContracts.compare(this, o, KEY_PROPERTIES);
+        return objContract.compare(this, o);
     }
 }
 
-@SuppressWarnings("deprecation")
 class InvoiceItem2 implements Comparable<InvoiceItem2> {
 
     static InvoiceItem2 newInvoiceItem(final Invoice2 invoice, final String 
productCode, final Integer quantity, final Boolean rush) {
@@ -128,19 +127,16 @@ public void setRush(final Boolean rush) {
     }
 
     private static final String KEY_PROPERTIES = "invoice desc, productCode, 
quantity, rush desc";
-
-    private static final ObjectContract<InvoiceItem2> contract =
+    private static final ObjectContract<InvoiceItem2> objContract =
             ObjectContracts.parse(InvoiceItem2.class, KEY_PROPERTIES)
             .withValueToStringFunction(ToStringEvaluator.combineToFunction(new 
NumberedEvaluator()));
 
     @Override
     public String toString() {
-        return contract.toString(this);
-        //legacy of ...
-        //return new ObjectContracts().with(new 
NumberedEvaluator()).toStringOf(this, KEY_PROPERTIES);
+        return objContract.toString(this);
     }
     @Override
     public int compareTo(final InvoiceItem2 o) {
-        return ObjectContracts.compare(this, o, KEY_PROPERTIES);
+        return objContract.compare(this, o);
     }
 }
\ No newline at end of file

Reply via email to