diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 62d05b114..6268c856f 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -22,6 +22,7 @@ + ReflectionToStringBuilder doesn't throw IllegalArgumentException when the constructor's object param is null Inconsistent behavior of swap for malformed inputs StringUtils join with var args Fix critical issues reported by SonarQube 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 d172b1e17..6c2199b73 100644 --- a/src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java +++ b/src/main/java/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java @@ -362,6 +362,13 @@ static String[] toNoNullStringArray(final Object[] array) { public static String toStringExclude(final Object object, final String... excludeFieldNames) { return new ReflectionToStringBuilder(object).setExcludeFieldNames(excludeFieldNames).toString(); } + + private static Object checkNotNull(final Object obj) { + if (obj == null) { + throw new IllegalArgumentException("The Object passed in should not be null."); + } + return obj; + } /** * Whether or not to append static fields. @@ -400,7 +407,7 @@ public static String toStringExclude(final Object object, final String... exclud * if the Object passed in is null */ public ReflectionToStringBuilder(final Object object) { - super(object); + super(checkNotNull(object)); } /** @@ -420,7 +427,7 @@ public ReflectionToStringBuilder(final Object object) { * if the Object passed in is null */ public ReflectionToStringBuilder(final Object object, final ToStringStyle style) { - super(object, style); + super(checkNotNull(object), style); } /** @@ -446,7 +453,7 @@ public ReflectionToStringBuilder(final Object object, final ToStringStyle style) * if the Object passed in is null */ public ReflectionToStringBuilder(final Object object, final ToStringStyle style, final StringBuffer buffer) { - super(object, style, buffer); + super(checkNotNull(object), style, buffer); } /** @@ -471,7 +478,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(object, style, buffer); + super(checkNotNull(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 new file mode 100644 index 000000000..241021671 --- /dev/null +++ b/src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderTest.java @@ -0,0 +1,12 @@ +package org.apache.commons.lang3.builder; + +import org.junit.Test; + +public class ReflectionToStringBuilderTest { + + @Test(expected=IllegalArgumentException.class) + public void testConstructorWithNullObject() { + new ReflectionToStringBuilder(null, ToStringStyle.DEFAULT_STYLE, new StringBuffer()); + } + +} 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 31010715c..c55fe2f19 100644 --- a/src/test/java/org/apache/commons/lang3/builder/ToStringBuilderTest.java +++ b/src/test/java/org/apache/commons/lang3/builder/ToStringBuilderTest.java @@ -1041,7 +1041,7 @@ class InheritedReflectionStaticFieldsFixture extends SimpleReflectionStaticField static final int staticInt2 = 67890; } - @Test + @Test(expected=IllegalArgumentException.class) public void testReflectionNull() { assertEquals("", ReflectionToStringBuilder.toString(null)); }