From ede98ffdb928586528a8b2876b049cb8bf362926 Mon Sep 17 00:00:00 2001 From: Gary Gregory Date: Sat, 7 Oct 2023 10:19:50 -0400 Subject: [PATCH] Return ToStringStyle.nullText instead of NPE for ReflectionToStringBuilder.toString(Object) and friends. --- src/changes/changes.xml | 1 + .../lang3/builder/ReflectionToStringBuilder.java | 16 +++++----------- .../builder/ReflectionToStringBuilderTest.java | 8 +++++--- .../lang3/builder/ToStringBuilderTest.java | 2 +- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 16605183c..f5fa60dc8 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -58,6 +58,7 @@ The type attribute can be add,update,fix,remove. ReflectionToStringBuilder changes in version 3.13.0 has broken the logic for overriding classes. Return "null" instead of NPE in ClassLoaderUtils.toString(ClassLoader). Return "null" instead of NPE in ClassLoaderUtils.toString(URLClassLoader). + Return ToStringStyle.nullText instead of NPE for ReflectionToStringBuilder.toString(Object) and friends. Add Functions#function(Function). Add FailableFunction#function(FailableFunction). diff --git a/src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java b/src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java index c505a5187..f7091d4f3 100644 --- a/src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java +++ b/src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java @@ -486,11 +486,9 @@ public static String toStringInclude(final Object object, final String... includ * * @param object * the Object to build a {@code toString} for, must not be {@code null} - * @throws IllegalArgumentException - * if the Object passed in is {@code null} */ public ReflectionToStringBuilder(final Object object) { - super(Objects.requireNonNull(object, "obj")); + super(object); } /** @@ -504,11 +502,9 @@ public ReflectionToStringBuilder(final Object object) { * the Object to build a {@code toString} for, must not be {@code null} * @param style * the style of the {@code toString} to create, may be {@code null} - * @throws IllegalArgumentException - * if the Object passed in is {@code null} */ public ReflectionToStringBuilder(final Object object, final ToStringStyle style) { - super(Objects.requireNonNull(object, "obj"), style); + super(object, style); } /** @@ -528,11 +524,9 @@ public ReflectionToStringBuilder(final Object object, final ToStringStyle style) * the style of the {@code toString} to create, may be {@code null} * @param buffer * the {@link StringBuffer} to populate, may be {@code null} - * @throws IllegalArgumentException - * if the Object passed in is {@code null} */ public ReflectionToStringBuilder(final Object object, final ToStringStyle style, final StringBuffer buffer) { - super(Objects.requireNonNull(object, "obj"), style, buffer); + super(object, style, buffer); } /** @@ -557,7 +551,7 @@ public ReflectionToStringBuilder(final Object object, final ToStringStyle style, public ReflectionToStringBuilder( final T object, final ToStringStyle style, final StringBuffer buffer, final Class reflectUpToClass, final boolean outputTransients, final boolean outputStatics) { - super(Objects.requireNonNull(object, "obj"), style, buffer); + super(object, style, buffer); this.setUpToClass(reflectUpToClass); this.setAppendTransients(outputTransients); this.setAppendStatics(outputStatics); @@ -588,7 +582,7 @@ public ReflectionToStringBuilder( final T object, final ToStringStyle style, final StringBuffer buffer, final Class reflectUpToClass, final boolean outputTransients, final boolean outputStatics, final boolean excludeNullValues) { - super(Objects.requireNonNull(object, "obj"), style, buffer); + super(object, style, buffer); this.setUpToClass(reflectUpToClass); this.setAppendTransients(outputTransients); this.setAppendStatics(outputStatics); diff --git a/src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderTest.java b/src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderTest.java index 16a38fd02..222b8053d 100644 --- a/src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderTest.java +++ b/src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderTest.java @@ -16,17 +16,19 @@ */ package org.apache.commons.lang3.builder; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.apache.commons.lang3.AbstractLangTest; import org.junit.jupiter.api.Test; +/** + * Tests {@link ReflectionToStringBuilder}. + */ public class ReflectionToStringBuilderTest extends AbstractLangTest { @Test public void testConstructorWithNullObject() { - assertThrows(NullPointerException.class, - () -> new ReflectionToStringBuilder(null, ToStringStyle.DEFAULT_STYLE, new StringBuffer())); + assertEquals("", new ReflectionToStringBuilder(null, ToStringStyle.DEFAULT_STYLE, new StringBuffer()).toString()); } } diff --git a/src/test/java/org/apache/commons/lang3/builder/ToStringBuilderTest.java b/src/test/java/org/apache/commons/lang3/builder/ToStringBuilderTest.java index 40ec0a735..0307e702e 100644 --- a/src/test/java/org/apache/commons/lang3/builder/ToStringBuilderTest.java +++ b/src/test/java/org/apache/commons/lang3/builder/ToStringBuilderTest.java @@ -1265,7 +1265,7 @@ class InheritedReflectionStaticFieldsFixture extends SimpleReflectionStaticField @Test public void testReflectionNull() { - assertThrows(NullPointerException.class, () -> ReflectionToStringBuilder.toString(null)); + assertEquals("", ReflectionToStringBuilder.toString(null)); } /**