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

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 753bd2958d Marshall module improvements
753bd2958d is described below

commit 753bd2958d4392118f9d345be2ef7a1277e73420
Author: James Bognar <[email protected]>
AuthorDate: Sat Dec 13 08:44:43 2025 -0500

    Marshall module improvements
---
 .../juneau/commons/collections/FilteredMap.java    | 15 +++++
 .../juneau/commons/collections/FluentList.java     | 15 +++++
 .../juneau/commons/collections/FluentMap.java      | 15 +++++
 .../juneau/commons/collections/FluentSet.java      | 15 +++++
 .../commons/collections/FilteredMap_Test.java      | 68 ++++++++++++++++++++++
 .../commons/collections/FluentList_Test.java       | 57 ++++++++++++++++++
 .../juneau/commons/collections/FluentMap_Test.java | 53 +++++++++++++++++
 .../juneau/commons/collections/FluentSet_Test.java | 57 ++++++++++++++++++
 8 files changed, 295 insertions(+)

diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FilteredMap.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FilteredMap.java
index 0d55c27cb0..026747f1e6 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FilteredMap.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FilteredMap.java
@@ -584,5 +584,20 @@ public class FilteredMap<K,V> extends AbstractMap<K,V> {
                        return valueType.cast(value);
                throw rex("Object of type {0} could not be converted to value 
type {1}", cn(value), cn(valueType));
        }
+
+       @Override
+       public String toString() {
+               return map.toString();
+       }
+
+       @Override
+       public boolean equals(Object o) {
+               return map.equals(o);
+       }
+
+       @Override
+       public int hashCode() {
+               return map.hashCode();
+       }
 }
 
diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentList.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentList.java
index a286922e82..ccd1687666 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentList.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentList.java
@@ -283,5 +283,20 @@ public class FluentList<E> extends AbstractList<E> {
        public <T> T[] toArray(T[] a) {
                return list.toArray(a);
        }
+
+       @Override
+       public String toString() {
+               return list.toString();
+       }
+
+       @Override
+       public boolean equals(Object o) {
+               return list.equals(o);
+       }
+
+       @Override
+       public int hashCode() {
+               return list.hashCode();
+       }
 }
 
diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentMap.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentMap.java
index 4f69a20f28..e7bad56d2c 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentMap.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentMap.java
@@ -231,5 +231,20 @@ public class FluentMap<K,V> extends AbstractMap<K,V> {
        public Collection<V> values() {
                return map.values();
        }
+
+       @Override
+       public String toString() {
+               return map.toString();
+       }
+
+       @Override
+       public boolean equals(Object o) {
+               return map.equals(o);
+       }
+
+       @Override
+       public int hashCode() {
+               return map.hashCode();
+       }
 }
 
diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentSet.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentSet.java
index 5fc6a6de74..18438e7825 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentSet.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/FluentSet.java
@@ -237,5 +237,20 @@ public class FluentSet<E> extends AbstractSet<E> {
        public <T> T[] toArray(T[] a) {
                return set.toArray(a);
        }
+
+       @Override
+       public String toString() {
+               return set.toString();
+       }
+
+       @Override
+       public boolean equals(Object o) {
+               return set.equals(o);
+       }
+
+       @Override
+       public int hashCode() {
+               return set.hashCode();
+       }
 }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FilteredMap_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FilteredMap_Test.java
index c430b3023e..34a2e3df41 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FilteredMap_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FilteredMap_Test.java
@@ -1003,5 +1003,73 @@ class FilteredMap_Test extends TestBase {
                assertNull(map.get("key1"));
                assertEquals(5, map.get(null));
        }
+
+       
//====================================================================================================
+       // toString(), equals(), hashCode()
+       
//====================================================================================================
+
+       @Test
+       void w01_toString_delegatesToUnderlyingMap() {
+               var map = FilteredMap
+                       .create(String.class, String.class)
+                       .filter((k, v) -> true)
+                       .build();
+               map.put("key1", "value1");
+               map.put("key2", "value2");
+
+               var underlyingMap = new LinkedHashMap<String, String>();
+               underlyingMap.put("key1", "value1");
+               underlyingMap.put("key2", "value2");
+
+               assertEquals(underlyingMap.toString(), map.toString());
+       }
+
+       @Test
+       void w02_equals_delegatesToUnderlyingMap() {
+               var map1 = FilteredMap
+                       .create(String.class, String.class)
+                       .filter((k, v) -> true)
+                       .build();
+               map1.put("key1", "value1");
+               map1.put("key2", "value2");
+
+               var map2 = new LinkedHashMap<String, String>();
+               map2.put("key1", "value1");
+               map2.put("key2", "value2");
+
+               assertTrue(map1.equals(map2));
+               assertTrue(map2.equals(map1));
+       }
+
+       @Test
+       void w03_equals_differentContents_returnsFalse() {
+               var map1 = FilteredMap
+                       .create(String.class, String.class)
+                       .filter((k, v) -> true)
+                       .build();
+               map1.put("key1", "value1");
+
+               var map2 = new LinkedHashMap<String, String>();
+               map2.put("key1", "value2");
+
+               assertFalse(map1.equals(map2));
+               assertFalse(map2.equals(map1));
+       }
+
+       @Test
+       void w04_hashCode_delegatesToUnderlyingMap() {
+               var map = FilteredMap
+                       .create(String.class, String.class)
+                       .filter((k, v) -> true)
+                       .build();
+               map.put("key1", "value1");
+               map.put("key2", "value2");
+
+               var underlyingMap = new LinkedHashMap<String, String>();
+               underlyingMap.put("key1", "value1");
+               underlyingMap.put("key2", "value2");
+
+               assertEquals(underlyingMap.hashCode(), map.hashCode());
+       }
 }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentList_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentList_Test.java
index 5e89af5f08..36a3169b6d 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentList_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentList_Test.java
@@ -460,5 +460,62 @@ class FluentList_Test extends TestBase {
                assertEquals("item2", list.get(0));
                assertEquals("item4", list.get(1));
        }
+
+       
//====================================================================================================
+       // toString(), equals(), hashCode()
+       
//====================================================================================================
+
+       @Test
+       void w01_toString_delegatesToUnderlyingList() {
+               var list = new FluentList<>(new ArrayList<String>());
+               list.a("item1").a("item2").a("item3");
+
+               var underlyingList = new ArrayList<String>();
+               underlyingList.add("item1");
+               underlyingList.add("item2");
+               underlyingList.add("item3");
+
+               assertEquals(underlyingList.toString(), list.toString());
+       }
+
+       @Test
+       void w02_equals_delegatesToUnderlyingList() {
+               var list1 = new FluentList<>(new ArrayList<String>());
+               list1.a("item1").a("item2").a("item3");
+
+               var list2 = new ArrayList<String>();
+               list2.add("item1");
+               list2.add("item2");
+               list2.add("item3");
+
+               assertTrue(list1.equals(list2));
+               assertTrue(list2.equals(list1));
+       }
+
+       @Test
+       void w03_equals_differentContents_returnsFalse() {
+               var list1 = new FluentList<>(new ArrayList<String>());
+               list1.a("item1").a("item2");
+
+               var list2 = new ArrayList<String>();
+               list2.add("item1");
+               list2.add("item3");
+
+               assertFalse(list1.equals(list2));
+               assertFalse(list2.equals(list1));
+       }
+
+       @Test
+       void w04_hashCode_delegatesToUnderlyingList() {
+               var list = new FluentList<>(new ArrayList<String>());
+               list.a("item1").a("item2").a("item3");
+
+               var underlyingList = new ArrayList<String>();
+               underlyingList.add("item1");
+               underlyingList.add("item2");
+               underlyingList.add("item3");
+
+               assertEquals(underlyingList.hashCode(), list.hashCode());
+       }
 }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentMap_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentMap_Test.java
index 83c15e7d2f..dd988b3fc9 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentMap_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentMap_Test.java
@@ -437,5 +437,58 @@ class FluentMap_Test extends TestBase {
                assertTrue(map.containsKey("key1"));
                assertNull(map.get("key1"));
        }
+
+       
//====================================================================================================
+       // toString(), equals(), hashCode()
+       
//====================================================================================================
+
+       @Test
+       void w01_toString_delegatesToUnderlyingMap() {
+               var map = new FluentMap<>(new LinkedHashMap<String, String>());
+               map.a("key1", "value1").a("key2", "value2");
+
+               var underlyingMap = new LinkedHashMap<String, String>();
+               underlyingMap.put("key1", "value1");
+               underlyingMap.put("key2", "value2");
+
+               assertEquals(underlyingMap.toString(), map.toString());
+       }
+
+       @Test
+       void w02_equals_delegatesToUnderlyingMap() {
+               var map1 = new FluentMap<>(new LinkedHashMap<String, String>());
+               map1.a("key1", "value1").a("key2", "value2");
+
+               var map2 = new LinkedHashMap<String, String>();
+               map2.put("key1", "value1");
+               map2.put("key2", "value2");
+
+               assertTrue(map1.equals(map2));
+               assertTrue(map2.equals(map1));
+       }
+
+       @Test
+       void w03_equals_differentContents_returnsFalse() {
+               var map1 = new FluentMap<>(new LinkedHashMap<String, String>());
+               map1.a("key1", "value1");
+
+               var map2 = new LinkedHashMap<String, String>();
+               map2.put("key1", "value2");
+
+               assertFalse(map1.equals(map2));
+               assertFalse(map2.equals(map1));
+       }
+
+       @Test
+       void w04_hashCode_delegatesToUnderlyingMap() {
+               var map = new FluentMap<>(new LinkedHashMap<String, String>());
+               map.a("key1", "value1").a("key2", "value2");
+
+               var underlyingMap = new LinkedHashMap<String, String>();
+               underlyingMap.put("key1", "value1");
+               underlyingMap.put("key2", "value2");
+
+               assertEquals(underlyingMap.hashCode(), map.hashCode());
+       }
 }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentSet_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentSet_Test.java
index 583577542a..c645e773e9 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentSet_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/FluentSet_Test.java
@@ -412,5 +412,62 @@ class FluentSet_Test extends TestBase {
                assertSize(1, set);
                assertTrue(set.contains("item1"));
        }
+
+       
//====================================================================================================
+       // toString(), equals(), hashCode()
+       
//====================================================================================================
+
+       @Test
+       void w01_toString_delegatesToUnderlyingSet() {
+               var set = new FluentSet<>(new LinkedHashSet<String>());
+               set.a("item1").a("item2").a("item3");
+
+               var underlyingSet = new LinkedHashSet<String>();
+               underlyingSet.add("item1");
+               underlyingSet.add("item2");
+               underlyingSet.add("item3");
+
+               assertEquals(underlyingSet.toString(), set.toString());
+       }
+
+       @Test
+       void w02_equals_delegatesToUnderlyingSet() {
+               var set1 = new FluentSet<>(new LinkedHashSet<String>());
+               set1.a("item1").a("item2").a("item3");
+
+               var set2 = new LinkedHashSet<String>();
+               set2.add("item1");
+               set2.add("item2");
+               set2.add("item3");
+
+               assertTrue(set1.equals(set2));
+               assertTrue(set2.equals(set1));
+       }
+
+       @Test
+       void w03_equals_differentContents_returnsFalse() {
+               var set1 = new FluentSet<>(new LinkedHashSet<String>());
+               set1.a("item1").a("item2");
+
+               var set2 = new LinkedHashSet<String>();
+               set2.add("item1");
+               set2.add("item3");
+
+               assertFalse(set1.equals(set2));
+               assertFalse(set2.equals(set1));
+       }
+
+       @Test
+       void w04_hashCode_delegatesToUnderlyingSet() {
+               var set = new FluentSet<>(new LinkedHashSet<String>());
+               set.a("item1").a("item2").a("item3");
+
+               var underlyingSet = new LinkedHashSet<String>();
+               underlyingSet.add("item1");
+               underlyingSet.add("item2");
+               underlyingSet.add("item3");
+
+               assertEquals(underlyingSet.hashCode(), set.hashCode());
+       }
 }
 

Reply via email to