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 6670422cb9 Commons improvements
6670422cb9 is described below

commit 6670422cb9c3d9a0c4913eea711d5ec54db7b649
Author: James Bognar <[email protected]>
AuthorDate: Tue Dec 16 18:26:11 2025 -0500

    Commons improvements
---
 .../main/java/org/apache/juneau/BeanBuilder.java   |  9 ----
 .../main/java/org/apache/juneau/BeanContext.java   | 20 +++-----
 .../apache/juneau/serializer/SerializerSet.java    |  2 +-
 .../commons/collections/ReversedList_Test.java     | 56 ++++++++++++++++++++++
 4 files changed, 63 insertions(+), 24 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanBuilder.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanBuilder.java
index ca03d1ea71..8172f543db 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanBuilder.java
@@ -45,15 +45,6 @@ public class BeanBuilder<T> {
                beanStore = copyFrom.beanStore;
        }
 
-       /**
-        * Constructor.
-        *
-        * @param defaultType The type of bean being created.
-        */
-       protected BeanBuilder(Class<? extends T> defaultType) {
-               this(defaultType, BeanStore.INSTANCE);
-       }
-
        /**
         * Constructor.
         *
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 739d00c361..c37bca6646 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -226,10 +226,10 @@ public class BeanContext extends Context {
                        beanConstructorVisibility = 
env("BeanContext.beanConstructorVisibility", PUBLIC);
                        beanMethodVisibility = 
env("BeanContext.beanMethodVisibility", PUBLIC);
                        beanFieldVisibility = 
env("BeanContext.beanFieldVisibility", PUBLIC);
-                       beanDictionary = null;
-                       swaps = null;
-                       notBeanClasses = null;
-                       notBeanPackages = null;
+                       beanDictionary = list();
+                       swaps = list();
+                       notBeanClasses = classSet();
+                       notBeanPackages = new TreeSet<>();
                        disableBeansRequireSomeProperties = 
env("BeanContext.disableBeansRequireSomeProperties", false);
                        beanMapPutReturnsOldValue = 
env("BeanContext.beanMapPutReturnsOldValue", false);
                        beansRequireDefaultConstructor = 
env("BeanContext.beansRequireDefaultConstructor", false);
@@ -265,8 +265,8 @@ public class BeanContext extends Context {
                        beanConstructorVisibility = 
copyFrom.beanConstructorVisibility;
                        beanMethodVisibility = copyFrom.beanMethodVisibility;
                        beanFieldVisibility = copyFrom.beanFieldVisibility;
-                       beanDictionary = toList(copyFrom.beanDictionary, false);
-                       swaps = toList(copyFrom.swaps, true);
+                       beanDictionary = copyOf(copyFrom.beanDictionary);
+                       swaps = copyOf(copyFrom.swaps);
                        notBeanClasses = toClassSet(copyFrom.notBeanClasses);
                        notBeanPackages = toSortedSet(copyFrom.notBeanPackages, 
false);
                        disableBeansRequireSomeProperties = ! 
copyFrom.beansRequireSomeProperties;
@@ -459,8 +459,6 @@ public class BeanContext extends Context {
                 * @see #beanDictionary(Class...)
                 */
                public List<Class<?>> beanDictionary() {
-                       if (beanDictionary == null)
-                               beanDictionary = list();
                        return beanDictionary;
                }
 
@@ -2583,8 +2581,6 @@ public class BeanContext extends Context {
                 * @see #notBeanClasses(Class...)
                 */
                public Set<Class<?>> notBeanClasses() {
-                       if (notBeanClasses == null)
-                               notBeanClasses = classSet();
                        return notBeanClasses;
                }
 
@@ -2668,8 +2664,6 @@ public class BeanContext extends Context {
                 * @see #notBeanPackages(String...)
                 */
                public Set<String> notBeanPackages() {
-                       if (notBeanPackages == null)
-                               notBeanPackages = new TreeSet<>();
                        return notBeanPackages;
                }
 
@@ -3003,8 +2997,6 @@ public class BeanContext extends Context {
                 * @see #swaps(Class...)
                 */
                public List<Object> swaps() {
-                       if (swaps == null)
-                               swaps = list();
                        return swaps;
                }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
index 434f862864..16bdbd1043 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
@@ -124,7 +124,7 @@ public class SerializerSet {
                 * @param copyFrom The serializer group that we're copying 
settings and serializers from.
                 */
                protected Builder(SerializerSet copyFrom) {
-                       super(copyFrom.getClass());
+                       super(copyFrom.getClass(), BeanStore.INSTANCE);
                        this.entries = list((Object[])copyFrom.entries);
                }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/ReversedList_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/ReversedList_Test.java
index c0a277ff7f..19013052d1 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/ReversedList_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/ReversedList_Test.java
@@ -591,5 +591,61 @@ class ReversedList_Test extends TestBase {
 
                assertEquals(reversed.hashCode(), regularList.hashCode());
        }
+
+       
//====================================================================================================
+       // Additional coverage for specific lines
+       
//====================================================================================================
+
+       @Test
+       void l01_equals_differentLengths() {
+               // Line 320: while (e1.hasNext() && e2.hasNext())
+               // Line 326: return !(e1.hasNext() || e2.hasNext());
+               // Test when lists have different lengths - one iterator 
exhausted before the other
+               var original1 = new ArrayList<>(List.of("a", "b", "c"));
+               var reversed1 = new ReversedList<>(original1);
+
+               var original2 = new ArrayList<>(List.of("a", "b", "c", "d"));
+               var reversed2 = new ReversedList<>(original2);
+
+               // reversed1: ["c", "b", "a"]
+               // reversed2: ["d", "c", "b", "a"]
+               // After comparing first 3 elements, e1 is exhausted but e2 has 
more
+               // Line 326: return !(e1.hasNext() || e2.hasNext()) should 
return false
+               assertFalse(reversed1.equals(reversed2));
+               assertFalse(reversed2.equals(reversed1));
+       }
+
+       @Test
+       void l02_equals_oneExhausted() {
+               // Line 326: return !(e1.hasNext() || e2.hasNext());
+               // Test when one iterator is exhausted before the other
+               var original1 = new ArrayList<>(List.of("a", "b"));
+               var reversed1 = new ReversedList<>(original1);
+
+               var original2 = new ArrayList<>(List.of("a", "b", "c"));
+               var reversed2 = new ReversedList<>(original2);
+
+               // reversed1: ["b", "a"]
+               // reversed2: ["c", "b", "a"]
+               // After comparing first 2 elements, e1 is exhausted but e2 has 
more
+               assertFalse(reversed1.equals(reversed2));
+       }
+
+       @Test
+       void l03_hashCode_withNullElements() {
+               // Line 356: hashCode = 31 * hashCode + (e == null ? 0 : 
e.hashCode());
+               // Test hashCode with null elements
+               var original = new ArrayList<>(Arrays.asList("a", null, "c"));
+               var reversed = new ReversedList<>(original);
+
+               // Calculate expected hashCode manually (null contributes 0)
+               // Reversed order: ["c", null, "a"]
+               int expectedHashCode = 1;
+               expectedHashCode = 31 * expectedHashCode + "c".hashCode();
+               expectedHashCode = 31 * expectedHashCode + 0; // null
+               expectedHashCode = 31 * expectedHashCode + "a".hashCode();
+
+               assertEquals(expectedHashCode, reversed.hashCode());
+       }
 }
 

Reply via email to