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 super T> 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));
}