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());
+ }
}