diff --git a/src/main/java/org/apache/commons/lang3/ClassPathUtils.java b/src/main/java/org/apache/commons/lang3/ClassPathUtils.java
index df0efa255..71c3fed92 100644
--- a/src/main/java/org/apache/commons/lang3/ClassPathUtils.java
+++ b/src/main/java/org/apache/commons/lang3/ClassPathUtils.java
@@ -35,6 +35,7 @@ public class ClassPathUtils {
*
* @param path the source path.
* @return a package name.
+ * @throws NullPointerException if {@code path} is null.
* @since 3.13.0
*/
public static String packageToPath(final String path) {
@@ -46,6 +47,7 @@ public class ClassPathUtils {
*
* @param path the source path.
* @return a package name.
+ * @throws NullPointerException if {@code path} is null.
* @since 3.13.0
*/
public static String pathToPackage(final String path) {
diff --git a/src/main/java/org/apache/commons/lang3/RandomStringUtils.java b/src/main/java/org/apache/commons/lang3/RandomStringUtils.java
index 798542034..39782f1e2 100644
--- a/src/main/java/org/apache/commons/lang3/RandomStringUtils.java
+++ b/src/main/java/org/apache/commons/lang3/RandomStringUtils.java
@@ -62,6 +62,7 @@ public class RandomStringUtils {
*
* @param count the length of random string to create
* @return the random string
+ * @throws IllegalArgumentException if {@code count} < 0.
*/
public static String random(final int count) {
return random(count, false, false);
@@ -80,6 +81,7 @@ public class RandomStringUtils {
* @param numbers if {@code true}, generated string may include
* numeric characters
* @return the random string
+ * @throws IllegalArgumentException if {@code count} < 0.
*/
public static String random(final int count, final boolean letters, final boolean numbers) {
return random(count, 0, 0, letters, numbers);
@@ -119,6 +121,7 @@ public class RandomStringUtils {
* @param numbers if {@code true}, generated string may include
* numeric characters
* @return the random string
+ * @throws IllegalArgumentException if {@code count} < 0.
*/
public static String random(final int count, final int start, final int end, final boolean letters, final boolean numbers) {
return random(count, start, end, letters, numbers, null, random());
@@ -145,6 +148,7 @@ public class RandomStringUtils {
* @return the random string
* @throws ArrayIndexOutOfBoundsException if there are not
* {@code (end - start) + 1} characters in the set array.
+ * @throws IllegalArgumentException if {@code count} < 0.
*/
public static String random(final int count, final int start, final int end, final boolean letters, final boolean numbers, final char... chars) {
return random(count, start, end, letters, numbers, chars, random());
@@ -291,6 +295,7 @@ public class RandomStringUtils {
*
* @param count the length of random string to create
* @return the random string
+ * @throws IllegalArgumentException if {@code count} < 0.
*/
public static String randomAlphabetic(final int count) {
return random(count, true, false);
@@ -320,6 +325,7 @@ public class RandomStringUtils {
*
* @param count the length of random string to create
* @return the random string
+ * @throws IllegalArgumentException if {@code count} < 0.
*/
public static String randomAlphanumeric(final int count) {
return random(count, true, true);
@@ -350,6 +356,7 @@ public class RandomStringUtils {
*
* @param count the length of random string to create
* @return the random string
+ * @throws IllegalArgumentException if {@code count} < 0.
*/
public static String randomAscii(final int count) {
return random(count, 32, 127, false, false);
@@ -380,6 +387,7 @@ public class RandomStringUtils {
*
* @param count the length of random string to create
* @return the random string
+ * @throws IllegalArgumentException if {@code count} < 0.
* @since 3.5
*/
public static String randomGraph(final int count) {
@@ -410,6 +418,7 @@ public class RandomStringUtils {
*
* @param count the length of random string to create
* @return the random string
+ * @throws IllegalArgumentException if {@code count} < 0.
*/
public static String randomNumeric(final int count) {
return random(count, false, true);
@@ -439,6 +448,7 @@ public class RandomStringUtils {
*
* @param count the length of random string to create
* @return the random string
+ * @throws IllegalArgumentException if {@code count} < 0.
* @since 3.5
*/
public static String randomPrint(final int count) {
diff --git a/src/main/java/org/apache/commons/lang3/builder/DiffBuilder.java b/src/main/java/org/apache/commons/lang3/builder/DiffBuilder.java
index 9b34038e1..e4d20a990 100644
--- a/src/main/java/org/apache/commons/lang3/builder/DiffBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/builder/DiffBuilder.java
@@ -94,7 +94,7 @@ public class DiffBuilder implements Builder> {
* without creating a field {@link Diff} if the trivially equal
* test is enabled and returns true. The result of this test
* is never changed throughout the life of this {@link DiffBuilder}.
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if {@code lhs} or {@code rhs} is {@code null}
* @since 3.4
*/
@@ -134,7 +134,7 @@ public class DiffBuilder implements Builder> {
* @param style
* the style will use when outputting the objects, {@code null}
* uses the default
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if {@code lhs} or {@code rhs} is {@code null}
*/
public DiffBuilder(final T lhs, final T rhs,
@@ -153,7 +153,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code boolean}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final boolean lhs,
@@ -191,7 +191,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code boolean[]}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final boolean[] lhs,
@@ -228,7 +228,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code byte}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final byte lhs,
@@ -265,7 +265,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code byte[]}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final byte[] lhs,
@@ -303,7 +303,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code char}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final char lhs,
@@ -341,7 +341,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code char[]}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final char[] lhs,
@@ -379,7 +379,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code double}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final double lhs,
@@ -417,7 +417,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code double[]}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final double[] lhs,
@@ -455,7 +455,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code float}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final float lhs,
@@ -493,7 +493,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code float[]}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final float[] lhs,
@@ -531,7 +531,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code int}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final int lhs,
@@ -569,7 +569,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code int[]}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final int[] lhs,
@@ -607,7 +607,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code long}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final long lhs,
@@ -645,7 +645,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code long[]}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final long[] lhs,
@@ -683,7 +683,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code short}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final short lhs,
@@ -721,7 +721,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code short[]}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final short[] lhs,
@@ -759,7 +759,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@link Object}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final Object lhs,
@@ -841,7 +841,7 @@ public class DiffBuilder implements Builder> {
* @param rhs
* the right-hand {@code Object[]}
* @return this
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if field name is {@code null}
*/
public DiffBuilder append(final String fieldName, final Object[] lhs,
@@ -900,7 +900,7 @@ public class DiffBuilder implements Builder> {
* @param diffResult
* the {@link DiffResult} to append
* @return this
- * @throws NullPointerException if field name is {@code null}
+ * @throws NullPointerException if field name is {@code null} or diffResult is {@code null}
* @since 3.5
*/
public DiffBuilder append(final String fieldName, final DiffResult diffResult) {
diff --git a/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java b/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
index f564db95a..8297fa6a6 100644
--- a/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
@@ -237,7 +237,7 @@ public class HashCodeBuilder implements Builder {
* @param object
* the Object to create a {@code hashCode} for
* @return int hash code
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the Object is {@code null}
* @throws IllegalArgumentException
* if the number is zero or even
@@ -281,7 +281,7 @@ public class HashCodeBuilder implements Builder {
* @param testTransients
* whether to include transient fields
* @return int hash code
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the Object is {@code null}
* @throws IllegalArgumentException
* if the number is zero or even
@@ -333,7 +333,7 @@ public class HashCodeBuilder implements Builder {
* @param excludeFields
* array of field names to exclude from use in calculation of hash code
* @return int hash code
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the Object is {@code null}
* @throws IllegalArgumentException
* if the number is zero or even
@@ -382,7 +382,7 @@ public class HashCodeBuilder implements Builder {
* @param testTransients
* whether to include transient fields
* @return int hash code
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the object is {@code null}
*
* @see HashCodeExclude
@@ -420,7 +420,7 @@ public class HashCodeBuilder implements Builder {
* @param excludeFields
* Collection of String field names to exclude from use in calculation of hash code
* @return int hash code
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the object is {@code null}
*
* @see HashCodeExclude
@@ -457,7 +457,7 @@ public class HashCodeBuilder implements Builder {
* @param excludeFields
* array of field names to exclude from use in calculation of hash code
* @return int hash code
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the object is {@code null}
*
* @see HashCodeExclude
diff --git a/src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java b/src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java
index 231d3fc7a..afc32e25d 100644
--- a/src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java
+++ b/src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java
@@ -129,7 +129,7 @@ public class ToStringBuilder implements Builder {
* that the latest value set is the value returned from {@link #getDefaultStyle}.
*
* @param style the default {@link ToStringStyle}
- * @throws IllegalArgumentException if the style is {@code null}
+ * @throws NullPointerException if the style is {@code null}
*/
public static void setDefaultStyle(final ToStringStyle style) {
defaultStyle = Objects.requireNonNull(style, "style");
diff --git a/src/main/java/org/apache/commons/lang3/math/Fraction.java b/src/main/java/org/apache/commons/lang3/math/Fraction.java
index fe1ae846b..c362a162f 100644
--- a/src/main/java/org/apache/commons/lang3/math/Fraction.java
+++ b/src/main/java/org/apache/commons/lang3/math/Fraction.java
@@ -684,7 +684,7 @@ public final class Fraction extends Number implements Comparable {
*
* @param fraction the fraction to add, must not be {@code null}
* @return a {@link Fraction} instance with the resulting values
- * @throws IllegalArgumentException if the fraction is {@code null}
+ * @throws NullPointerException if the fraction is {@code null}
* @throws ArithmeticException if the resulting numerator or denominator exceeds
* {@code Integer.MAX_VALUE}
*/
@@ -698,7 +698,7 @@ public final class Fraction extends Number implements Comparable {
*
* @param fraction the fraction to subtract, must not be {@code null}
* @return a {@link Fraction} instance with the resulting values
- * @throws IllegalArgumentException if the fraction is {@code null}
+ * @throws NullPointerException if the fraction is {@code null}
* @throws ArithmeticException if the resulting numerator or denominator
* cannot be represented in an {@code int}.
*/
diff --git a/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java b/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java
index a2566512a..d863c250c 100644
--- a/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java
@@ -60,8 +60,10 @@ public class FieldUtils {
* @param fieldName
* the field name to obtain
* @return the Field object
+ * @throws NullPointerException
+ * if the class is {@code null}
* @throws IllegalArgumentException
- * if the class is {@code null}, or the field name is blank or empty
+ * if the field name is {@code null}, blank, or empty
*/
public static Field getField(final Class> cls, final String fieldName) {
return MemberUtils.setAccessibleWorkaround(getField(cls, fieldName, false));
@@ -143,8 +145,10 @@ public class FieldUtils {
* @param fieldName
* the field name to obtain
* @return the Field object
+ * @throws NullPointerException
+ * if the class is {@code null}
* @throws IllegalArgumentException
- * if the class is {@code null}, or the field name is blank or empty
+ * if the field name is {@code null}, blank, or empty
*/
public static Field getDeclaredField(final Class> cls, final String fieldName) {
return getDeclaredField(cls, fieldName, false);
@@ -163,8 +167,10 @@ public class FieldUtils {
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
* @return the Field object
+ * @throws NullPointerException
+ * if the class is {@code null}
* @throws IllegalArgumentException
- * if the class is {@code null}, or the field name is blank or empty
+ * if the field name is {@code null}, blank, or empty
*/
public static Field getDeclaredField(final Class> cls, final String fieldName, final boolean forceAccess) {
Objects.requireNonNull(cls, "cls");
@@ -191,7 +197,7 @@ public class FieldUtils {
* @param cls
* the {@link Class} to query
* @return an array of Fields (possibly empty).
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the class is {@code null}
* @since 3.2
*/
@@ -205,7 +211,7 @@ public class FieldUtils {
* @param cls
* the {@link Class} to query
* @return a list of Fields (possibly empty).
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the class is {@code null}
* @since 3.2
*/
@@ -228,7 +234,7 @@ public class FieldUtils {
* @param annotationCls
* the {@link Annotation} that must be present on a field to be matched
* @return an array of Fields (possibly empty).
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the class or annotation are {@code null}
* @since 3.4
*/
@@ -243,7 +249,7 @@ public class FieldUtils {
* @param annotationCls
* the {@link Annotation} that must be present on a field to be matched
* @return a list of Fields (possibly empty).
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the class or annotation are {@code null}
* @since 3.4
*/
@@ -258,8 +264,10 @@ public class FieldUtils {
* @param field
* to read
* @return the field value
+ * @throws NullPointerException
+ * if the field is {@code null}
* @throws IllegalArgumentException
- * if the field is {@code null}, or not {@code static}
+ * if the field is not {@code static}
* @throws IllegalAccessException
* if the field is not accessible
*/
@@ -276,8 +284,10 @@ public class FieldUtils {
* whether to break scope restrictions using the
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method.
* @return the field value
+ * @throws NullPointerException
+ * if the field is {@code null}
* @throws IllegalArgumentException
- * if the field is {@code null} or not {@code static}
+ * if the field is not {@code static}
* @throws IllegalAccessException
* if the field is not made accessible
*/
@@ -295,9 +305,10 @@ public class FieldUtils {
* @param fieldName
* the field name to obtain
* @return the value of the field
+ * @throws NullPointerException
+ * if the class is {@code null}, or the field could not be found
* @throws IllegalArgumentException
- * if the class is {@code null}, or the field name is blank or empty, is not {@code static}, or could
- * not be found
+ * if the field name is {@code null}, blank or empty, or is not {@code static}
* @throws IllegalAccessException
* if the field is not accessible
*/
@@ -317,9 +328,10 @@ public class FieldUtils {
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
* @return the Field object
+ * @throws NullPointerException
+ * if the class is {@code null}, or the field could not be found
* @throws IllegalArgumentException
- * if the class is {@code null}, or the field name is blank or empty, is not {@code static}, or could
- * not be found
+ * if the field name is {@code null}, blank or empty, or is not {@code static}
* @throws IllegalAccessException
* if the field is not made accessible
*/
@@ -339,9 +351,10 @@ public class FieldUtils {
* @param fieldName
* the field name to obtain
* @return the value of the field
+ * @throws NullPointerException
+ * if the class is {@code null}, or the field could not be found
* @throws IllegalArgumentException
- * if the class is {@code null}, or the field name is blank or empty, is not {@code static}, or could
- * not be found
+ * if the field name is {@code null}, blank, empty, or is not {@code static}
* @throws IllegalAccessException
* if the field is not accessible
*/
@@ -361,9 +374,10 @@ public class FieldUtils {
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
* @return the Field object
+ * @throws NullPointerException
+ * if the class is {@code null}, or the field could not be found
* @throws IllegalArgumentException
- * if the class is {@code null}, or the field name is blank or empty, is not {@code static}, or could
- * not be found
+ * if the field name is blank or empty, is not {@code static}
* @throws IllegalAccessException
* if the field is not made accessible
*/
@@ -382,7 +396,7 @@ public class FieldUtils {
* @param target
* the object to call on, may be {@code null} for {@code static} fields
* @return the field value
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the field is {@code null}
* @throws IllegalAccessException
* if the field is not accessible
@@ -402,7 +416,7 @@ public class FieldUtils {
* whether to break scope restrictions using the
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method.
* @return the field value
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the field is {@code null}
* @throws IllegalAccessException
* if the field is not made accessible
@@ -425,8 +439,10 @@ public class FieldUtils {
* @param fieldName
* the field name to obtain
* @return the value of the field
+ * @throws NullPointerException
+ * if the target is {@code null}
* @throws IllegalArgumentException
- * if the class is {@code null}, or the field name is blank or empty or could not be found
+ * if the field name is {@code null}, blank, empty, or could not be found
* @throws IllegalAccessException
* if the named field is not {@code public}
*/
@@ -446,8 +462,10 @@ public class FieldUtils {
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
* @return the field value
+ * @throws NullPointerException
+ * if {@code target} is {@code null}
* @throws IllegalArgumentException
- * if {@code target} is {@code null}, or the field name is blank or empty or could not be found
+ * if the field name is {@code null}, blank, empty, or could not be found
* @throws IllegalAccessException
* if the named field is not made accessible
*/
@@ -468,8 +486,10 @@ public class FieldUtils {
* @param fieldName
* the field name to obtain
* @return the value of the field
+ * @throws NullPointerException
+ * if {@code target} is @{code null}
* @throws IllegalArgumentException
- * if {@code target} is {@code null}, or the field name is blank or empty or could not be found
+ * if {@code fieldName} is {@code null}, blank or empty, or could not be found
* @throws IllegalAccessException
* if the named field is not {@code public}
*/
@@ -489,8 +509,10 @@ public class FieldUtils {
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match public fields.
* @return the Field object
+ * @throws NullPointerException
+ * if {@code target} is @{code null}
* @throws IllegalArgumentException
- * if {@code target} is {@code null}, or the field name is blank or empty or could not be found
+ * if {@code fieldName} is {@code null}, blank or empty, or could not be found
* @throws IllegalAccessException
* if the field is not made accessible
*/
@@ -510,8 +532,10 @@ public class FieldUtils {
* to write
* @param value
* to set
+ * @throws NullPointerException
+ * if the field is {@code null}
* @throws IllegalArgumentException
- * if the field is {@code null} or not {@code static}, or {@code value} is not assignable
+ * if the field is not {@code static}, or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not {@code public} or is {@code final}
*/
@@ -530,8 +554,10 @@ public class FieldUtils {
* whether to break scope restrictions using the
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
+ * @throws NullPointerException
+ * if the field is {@code null}
* @throws IllegalArgumentException
- * if the field is {@code null} or not {@code static}, or {@code value} is not assignable
+ * if the field is not {@code static}, or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not made accessible or is {@code final}
*/
@@ -551,8 +577,10 @@ public class FieldUtils {
* to write
* @param value
* to set
+ * @throws NullPointerException
+ * if {@code target} is @{code null}
* @throws IllegalArgumentException
- * if {@code cls} is {@code null}, the field name is blank or empty, the field cannot be located or is
+ * if {@code fieldName} is {@code null}, blank or empty, the field cannot be located or is
* not {@code static}, or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not {@code public} or is {@code final}
@@ -574,9 +602,10 @@ public class FieldUtils {
* whether to break scope restrictions using the
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
+ * @throws NullPointerException
+ * if {@code cls} is {@code null} or the field cannot be located
* @throws IllegalArgumentException
- * if {@code cls} is {@code null}, the field name is blank or empty, the field cannot be located or is
- * not {@code static}, or {@code value} is not assignable
+ * if {@code fieldName} is {@code null}, blank or empty, the field not {@code static}, or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not made accessible or is {@code final}
*/
@@ -597,9 +626,10 @@ public class FieldUtils {
* to write
* @param value
* to set
+ * @throws NullPointerException
+ * if {@code cls} is {@code null} or the field cannot be located
* @throws IllegalArgumentException
- * if {@code cls} is {@code null}, the field name is blank or empty, the field cannot be located or is
- * not {@code static}, or {@code value} is not assignable
+ * if the field name is @{code null}, blank, empty, not {@code static}, or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not {@code public} or is {@code final}
*/
@@ -619,9 +649,10 @@ public class FieldUtils {
* @param forceAccess
* whether to break scope restrictions using the {@code AccessibleObject#setAccessible(boolean)} method.
* {@code false} will only match {@code public} fields.
+ * @throws NullPointerException
+ * if {@code cls} is {@code null} or the field cannot be located
* @throws IllegalArgumentException
- * if {@code cls} is {@code null}, the field name is blank or empty, the field cannot be located or is
- * not {@code static}, or {@code value} is not assignable
+ * if the field name is @{code null}, blank, empty, not {@code static}, or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not made accessible or is {@code final}
*/
@@ -642,9 +673,12 @@ public class FieldUtils {
* the object to call on, may be {@code null} for {@code static} fields
* @param value
* to set
+ * @throws NullPointerException
+ * if the field is {@code null}
+ * @throws IllegalArgumentException
+ * if {@code value} is not assignable
* @throws IllegalAccessException
- * if the field or target is {@code null}, the field is not accessible or is {@code final}, or
- * {@code value} is not assignable
+ * if the field is not accessible or is {@code final}
*/
public static void writeField(final Field field, final Object target, final Object value) throws IllegalAccessException {
writeField(field, target, value, false);
@@ -663,8 +697,10 @@ public class FieldUtils {
* whether to break scope restrictions using the
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
+ * @throws NullPointerException
+ * if the field is {@code null}
* @throws IllegalArgumentException
- * if the field is {@code null} or {@code value} is not assignable
+ * if {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not made accessible or is {@code final}
*/
@@ -684,7 +720,7 @@ public class FieldUtils {
*
* @param field
* to remove the final modifier
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the field is {@code null}
* @since 3.2
*/
@@ -701,7 +737,7 @@ public class FieldUtils {
* whether to break scope restrictions using the
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the field is {@code null}
* @deprecated As of Java 12, we can no longer drop the {@code final} modifier, thus
* rendering this method obsolete. The JDK discussion about this change can be found
@@ -748,9 +784,11 @@ public class FieldUtils {
* the field name to obtain
* @param value
* to set
+ * @throws NullPointerException
+ * if {@code target} is @{code null}
* @throws IllegalArgumentException
- * if {@code target} is {@code null}, {@code fieldName} is blank or empty or could not be found, or
- * {@code value} is not assignable
+ * if {@code fieldName} is {@code null}, blank, empty, or could not be found,
+ * or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not accessible
*/
@@ -771,9 +809,11 @@ public class FieldUtils {
* whether to break scope restrictions using the
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
+ * @throws NullPointerException
+ * if {@code target} is @{code null}
* @throws IllegalArgumentException
- * if {@code target} is {@code null}, {@code fieldName} is blank or empty or could not be found, or
- * {@code value} is not assignable
+ * if {@code fieldName} is {@code null}, blank, empty, or could not be found,
+ * or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not made accessible
*/
@@ -796,9 +836,11 @@ public class FieldUtils {
* the field name to obtain
* @param value
* to set
+ * @throws NullPointerException
+ * if {@code target} is @{code null}
* @throws IllegalArgumentException
- * if {@code target} is {@code null}, {@code fieldName} is blank or empty or could not be found, or
- * {@code value} is not assignable
+ * if {@code fieldName} is {@code null}, blank or empty, or could not be found,
+ * or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not made accessible
*/
@@ -820,8 +862,8 @@ public class FieldUtils {
* {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
* match {@code public} fields.
* @throws IllegalArgumentException
- * if {@code target} is {@code null}, {@code fieldName} is blank or empty or could not be found, or
- * {@code value} is not assignable
+ * if {@code fieldName} is {@code null}, blank or empty, or could not be found,
+ * or {@code value} is not assignable
* @throws IllegalAccessException
* if the field is not made accessible
*/
diff --git a/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java b/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
index 35d9cfc2e..3cf99834b 100644
--- a/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
@@ -142,6 +142,7 @@ public class MethodUtils {
* @throws NoSuchMethodException if there is no such accessible method
* @throws InvocationTargetException wraps an exception thrown by the method invoked
* @throws IllegalAccessException if the requested method is not accessible via reflection
+ * @throws NullPointerException if the object or method name are {@code null}
*/
public static Object invokeMethod(final Object object, final String methodName,
Object... args) throws NoSuchMethodException,
@@ -170,7 +171,7 @@ public class MethodUtils {
* @throws NoSuchMethodException if there is no such accessible method
* @throws InvocationTargetException wraps an exception thrown by the method invoked
* @throws IllegalAccessException if the requested method is not accessible via reflection
- *
+ * @throws NullPointerException if the object or method name are {@code null}
* @since 3.5
*/
public static Object invokeMethod(final Object object, final boolean forceAccess, final String methodName,
@@ -197,6 +198,7 @@ public class MethodUtils {
* @throws NoSuchMethodException if there is no such accessible method
* @throws InvocationTargetException wraps an exception thrown by the method invoked
* @throws IllegalAccessException if the requested method is not accessible via reflection
+ * @throws NullPointerException if the object or method name are {@code null}
* @since 3.5
*/
public static Object invokeMethod(final Object object, final boolean forceAccess, final String methodName, Object[] args, Class>[] parameterTypes)
@@ -294,6 +296,7 @@ public class MethodUtils {
* method invoked
* @throws IllegalAccessException if the requested method is not accessible
* via reflection
+ * @throws NullPointerException if the object or method name are {@code null}
*/
public static Object invokeExactMethod(final Object object, final String methodName,
Object... args) throws NoSuchMethodException,
@@ -320,6 +323,7 @@ public class MethodUtils {
* method invoked
* @throws IllegalAccessException if the requested method is not accessible
* via reflection
+ * @throws NullPointerException if the object or method name are {@code null}
*/
public static Object invokeExactMethod(final Object object, final String methodName, Object[] args, Class>[] parameterTypes)
throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
@@ -711,6 +715,7 @@ public class MethodUtils {
* @param methodName The method that we wish to call
* @param parameterTypes Argument class types
* @throws IllegalStateException if there is no unique result
+ * @throws NullPointerException if the class is {@code null}
* @return The method
*
* @since 3.5
@@ -861,7 +866,7 @@ public class MethodUtils {
* @param annotationCls
* the {@link Annotation} that must be present on a method to be matched
* @return a list of Methods (possibly empty).
- * @throws IllegalArgumentException
+ * @throws NullPointerException
* if the class or annotation are {@code null}
* @since 3.4
*/
diff --git a/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java b/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java
index 83beab013..09e65b749 100644
--- a/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java
@@ -415,6 +415,7 @@ public class TypeUtils {
* @return a {@link Map} of the type assignments that could be determined
* for the type variables in each type in the inheritance hierarchy from
* {@code type} to {@code toClass} inclusive.
+ * @throws NullPointerException if either {@code cls} or {@code superParameterizedType} is {@code null}
*/
public static Map, Type> determineTypeArguments(final Class> cls,
final ParameterizedType superParameterizedType) {
@@ -670,6 +671,7 @@ public class TypeUtils {
*
* @param typeVariable the subject type variable, not {@code null}
* @return a non-empty array containing the bounds of the type variable.
+ * @throws NullPointerException if {@code typeVariable} is {@code null}
*/
public static Type[] getImplicitBounds(final TypeVariable> typeVariable) {
Objects.requireNonNull(typeVariable, "typeVariable");
@@ -686,6 +688,7 @@ public class TypeUtils {
* @param wildcardType the subject wildcard type, not {@code null}
* @return a non-empty array containing the lower bounds of the wildcard
* type.
+ * @throws NullPointerException if {@code wildcardType} is {@code null}
*/
public static Type[] getImplicitLowerBounds(final WildcardType wildcardType) {
Objects.requireNonNull(wildcardType, "wildcardType");
@@ -703,6 +706,7 @@ public class TypeUtils {
* @param wildcardType the subject wildcard type, not {@code null}
* @return a non-empty array containing the upper bounds of the wildcard
* type.
+ * @throws NullPointerException if {@code wildcardType} is {@code null}
*/
public static Type[] getImplicitUpperBounds(final WildcardType wildcardType) {
Objects.requireNonNull(wildcardType, "wildcardType");
@@ -1509,6 +1513,7 @@ public class TypeUtils {
* {@link WildcardType} or {@link TypeVariable}, not {@code null}.
* @return an array containing the values from {@code bounds} minus the
* redundant types.
+ * @throws NullPointerException if {@code bounds} is {@code null}
*/
public static Type[] normalizeUpperBounds(final Type[] bounds) {
Objects.requireNonNull(bounds, "bounds");
@@ -1680,6 +1685,7 @@ public class TypeUtils {
*
* @param typeVariable the type variable to create a String representation for, not {@code null}
* @return String
+ * @throws NullPointerException if {@code typeVariable} is {@code null}
* @since 3.2
*/
public static String toLongString(final TypeVariable> typeVariable) {
@@ -1713,6 +1719,7 @@ public class TypeUtils {
*
* @param type the type to create a String representation for, not {@code null}
* @return String
+ * @throws NullPointerException if {@code type} is {@code null}
* @since 3.2
*/
public static String toString(final Type type) {
@@ -1747,6 +1754,7 @@ public class TypeUtils {
* type variables, not {@code null}.
* @return whether or not the types can be assigned to their respective type
* variables.
+ * @throws NullPointerException if {@code typeVariableMap} is {@code null}
*/
public static boolean typesSatisfyVariables(final Map, Type> typeVariableMap) {
Objects.requireNonNull(typeVariableMap, "typeVariableMap");
diff --git a/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java b/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java
index 0d051e5c5..81ac519e0 100644
--- a/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/RandomStringUtilsTest.java
@@ -180,6 +180,11 @@ public class RandomStringUtilsTest extends AbstractLangTest {
() -> RandomStringUtils.random(-1, 'a', 'z', false, false, DUMMY, new Random()));
assertThrows(IllegalArgumentException.class, () -> RandomStringUtils.random(8, 32, 48, false, true));
assertThrows(IllegalArgumentException.class, () -> RandomStringUtils.random(8, 32, 65, true, false));
+ assertThrows(IllegalArgumentException.class, () -> RandomStringUtils.randomAlphabetic(-1));
+ assertThrows(IllegalArgumentException.class, () -> RandomStringUtils.randomAscii(-1));
+ assertThrows(IllegalArgumentException.class, () -> RandomStringUtils.randomGraph(-1));
+ assertThrows(IllegalArgumentException.class, () -> RandomStringUtils.randomNumeric(-1));
+ assertThrows(IllegalArgumentException.class, () -> RandomStringUtils.randomPrint(-1));
}
/**
diff --git a/src/test/java/org/apache/commons/lang3/builder/DiffBuilderTest.java b/src/test/java/org/apache/commons/lang3/builder/DiffBuilderTest.java
index 705fee26f..003d2abad 100644
--- a/src/test/java/org/apache/commons/lang3/builder/DiffBuilderTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/DiffBuilderTest.java
@@ -317,6 +317,16 @@ public class DiffBuilderTest extends AbstractLangTest {
assertThrows(NullPointerException.class, () -> new DiffBuilder<>(this, null, ToStringStyle.DEFAULT_STYLE));
}
+ @Test
+ public void testNullLhs_4args() {
+ assertThrows(NullPointerException.class, () -> new DiffBuilder<>(null, this, ToStringStyle.DEFAULT_STYLE, true));
+ }
+
+ @Test
+ public void testNullRhs_4args() {
+ assertThrows(NullPointerException.class, () -> new DiffBuilder<>(this, null, ToStringStyle.DEFAULT_STYLE, true));
+ }
+
@Test
public void testObject() {
final TypeTestClass class1 = new TypeTestClass();
diff --git a/src/test/java/org/apache/commons/lang3/reflect/FieldUtilsTest.java b/src/test/java/org/apache/commons/lang3/reflect/FieldUtilsTest.java
index b68a994f3..d7eb8cb23 100644
--- a/src/test/java/org/apache/commons/lang3/reflect/FieldUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/FieldUtilsTest.java
@@ -107,22 +107,22 @@ public class FieldUtilsTest extends AbstractLangTest {
}
@Test
- public void testGetFieldIllegalArgumentException1() {
+ public void testGetFieldNullPointerException() {
assertThrows(NullPointerException.class, () -> FieldUtils.getField(null, "none"));
}
@Test
- public void testGetFieldIllegalArgumentException2() {
+ public void testGetFieldIllegalArgumentException1() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getField(PublicChild.class, null));
}
@Test
- public void testGetFieldIllegalArgumentException3() {
+ public void testGetFieldIllegalArgumentException2() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getField(PublicChild.class, ""));
}
@Test
- public void testGetFieldIllegalArgumentException4() {
+ public void testGetFieldIllegalArgumentException3() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getField(PublicChild.class, " "));
}
@@ -146,22 +146,22 @@ public class FieldUtilsTest extends AbstractLangTest {
}
@Test
- public void testGetFieldForceAccessIllegalArgumentException1() {
+ public void testGetFieldForceAccessNullPointerException() {
assertThrows(NullPointerException.class, () -> FieldUtils.getField(null, "none", true));
}
@Test
- public void testGetFieldForceAccessIllegalArgumentException2() {
+ public void testGetFieldForceAccessIllegalArgumentException1() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getField(PublicChild.class, null, true));
}
@Test
- public void testGetFieldForceAccessIllegalArgumentException3() {
+ public void testGetFieldForceAccessIllegalArgumentException2() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getField(PublicChild.class, "", true));
}
@Test
- public void testGetFieldForceAccessIllegalArgumentException4() {
+ public void testGetFieldForceAccessIllegalArgumentException3() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getField(PublicChild.class, " ", true));
}
@@ -183,6 +183,11 @@ public class FieldUtilsTest extends AbstractLangTest {
assertEquals(expected, allFields.length, Arrays.toString(allFields));
}
+ @Test
+ public void testGetAllFieldsNullPointerException() {
+ assertThrows(NullPointerException.class, () -> FieldUtils.getAllFields(null));
+ }
+
private Field[] sort(final Field[] fields) {
// Field does not implement Comparable, so we use a KISS solution here.
return ArraySorter.sort(fields, ObjectToStringComparator.INSTANCE);
@@ -209,6 +214,11 @@ public class FieldUtilsTest extends AbstractLangTest {
}
+ @Test
+ public void testGetAllFieldListsNullPointerException() {
+ assertThrows(NullPointerException.class, () -> FieldUtils.getAllFieldsList(null));
+ }
+
@Test
public void testGetFieldsWithAnnotation() throws NoSuchFieldException {
assertArrayEquals(new Field[0], FieldUtils.getFieldsWithAnnotation(Object.class, Annotated.class));
@@ -220,17 +230,17 @@ public class FieldUtilsTest extends AbstractLangTest {
}
@Test
- public void testGetFieldsWithAnnotationIllegalArgumentException1() {
+ public void testGetFieldsWithAnnotationNullPointerException1() {
assertThrows(NullPointerException.class, () -> FieldUtils.getFieldsWithAnnotation(FieldUtilsTest.class, null));
}
@Test
- public void testGetFieldsWithAnnotationIllegalArgumentException2() {
+ public void testGetFieldsWithAnnotationNullPointerException2() {
assertThrows(NullPointerException.class, () -> FieldUtils.getFieldsWithAnnotation(null, Annotated.class));
}
@Test
- public void testGetFieldsWithAnnotationIllegalArgumentException3() {
+ public void testGetFieldsWithAnnotationNullPointerException3() {
assertThrows(NullPointerException.class, () -> FieldUtils.getFieldsWithAnnotation(null, null));
}
@@ -248,17 +258,17 @@ public class FieldUtilsTest extends AbstractLangTest {
}
@Test
- public void testGetFieldsListWithAnnotationIllegalArgumentException1() {
+ public void testGetFieldsListWithAnnotationNullPointerException() {
assertThrows(NullPointerException.class, () -> FieldUtils.getFieldsListWithAnnotation(FieldUtilsTest.class, null));
}
@Test
- public void testGetFieldsListWithAnnotationIllegalArgumentException2() {
+ public void testGetFieldsListWithAnnotationNullPointerException2() {
assertThrows(NullPointerException.class, () -> FieldUtils.getFieldsListWithAnnotation(null, Annotated.class));
}
@Test
- public void testGetFieldsListWithAnnotationIllegalArgumentException3() {
+ public void testGetFieldsListWithAnnotationNullPointerException3() {
assertThrows(NullPointerException.class, () -> FieldUtils.getFieldsListWithAnnotation(null, null));
}
@@ -282,22 +292,22 @@ public class FieldUtilsTest extends AbstractLangTest {
}
@Test
- public void testGetDeclaredFieldAccessIllegalArgumentException1() {
+ public void testGetDeclaredFieldAccessNullPointerException() {
assertThrows(NullPointerException.class, () -> FieldUtils.getDeclaredField(null, "none"));
}
@Test
- public void testGetDeclaredFieldAccessIllegalArgumentException2() {
+ public void testGetDeclaredFieldAccessIllegalArgumentException1() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getDeclaredField(PublicChild.class, null));
}
@Test
- public void testGetDeclaredFieldAccessIllegalArgumentException3() {
+ public void testGetDeclaredFieldAccessIllegalArgumentException2() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getDeclaredField(PublicChild.class, ""));
}
@Test
- public void testGetDeclaredFieldAccessIllegalArgumentException4() {
+ public void testGetDeclaredFieldAccessIllegalArgumentException3() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getDeclaredField(PublicChild.class, " "));
}
@@ -321,22 +331,22 @@ public class FieldUtilsTest extends AbstractLangTest {
}
@Test
- public void testGetDeclaredFieldForceAccessIllegalArgumentException1() {
+ public void testGetDeclaredFieldForceAccessNullPointerException() {
assertThrows(NullPointerException.class, () -> FieldUtils.getDeclaredField(null, "none", true));
}
@Test
- public void testGetDeclaredFieldForceAccessIllegalArgumentException2() {
+ public void testGetDeclaredFieldForceAccessIllegalArgumentException1() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getDeclaredField(PublicChild.class, null, true));
}
@Test
- public void testGetDeclaredFieldForceAccessIllegalArgumentException3() {
+ public void testGetDeclaredFieldForceAccessIllegalArgumentException2() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getDeclaredField(PublicChild.class, "", true));
}
@Test
- public void testGetDeclaredFieldForceAccessIllegalArgumentException4() {
+ public void testGetDeclaredFieldForceAccessIllegalArgumentException3() {
assertThrows(IllegalArgumentException.class, () -> FieldUtils.getDeclaredField(PublicChild.class, " ", true));
}
@@ -346,12 +356,12 @@ public class FieldUtilsTest extends AbstractLangTest {
}
@Test
- public void testReadStaticFieldIllegalArgumentException1() {
+ public void testReadStaticFieldNullPointerException() {
assertThrows(NullPointerException.class, () -> FieldUtils.readStaticField(null));
}
@Test
- public void testReadStaticFieldIllegalArgumentException2() throws Exception {
+ public void testReadStaticFieldIllegalArgumentException() throws Exception {
assertEquals(Foo.VALUE, FieldUtils.readStaticField(FieldUtils.getField(Foo.class, "VALUE")));
final Field nonStaticField = FieldUtils.getField(PublicChild.class, "s");
assumeTrue(nonStaticField != null);
@@ -365,15 +375,15 @@ public class FieldUtilsTest extends AbstractLangTest {
}
@Test
- public void testReadStaticFieldForceAccessIllegalArgumentException1() {
+ public void testReadStaticFieldForceAccessNullPointerException() {
assertThrows(NullPointerException.class, () -> FieldUtils.readStaticField(null, true));
}
@Test
- public void testReadStaticFieldForceAccessIllegalArgumentException2() {
+ public void testReadStaticFieldForceAccessIllegalArgumentException() {
final Field nonStaticField = FieldUtils.getField(PublicChild.class, "s", true);
assumeTrue(nonStaticField != null);
- assertThrows(IllegalArgumentException.class, () -> FieldUtils.readStaticField(nonStaticField));
+ assertThrows(IllegalArgumentException.class, () -> FieldUtils.readStaticField(nonStaticField, true));
}
@Test
@@ -386,7 +396,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readStaticField(null, "none"),
- "null class should cause an IllegalArgumentException");
+ "null class should cause an NullPointerException");
assertThrows(
IllegalArgumentException.class,
@@ -406,7 +416,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readStaticField(Foo.class, "does_not_exist"),
- "a field that doesn't exist should cause an IllegalArgumentException");
+ "a field that doesn't exist should cause an NullPointerException");
assertThrows(
IllegalArgumentException.class,
@@ -424,7 +434,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readStaticField(null, "none", true),
- "null class should cause an IllegalArgumentException");
+ "null class should cause an NullPointerException");
assertThrows(
IllegalArgumentException.class,
@@ -444,7 +454,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readStaticField(Foo.class, "does_not_exist", true),
- "a field that doesn't exist should cause an IllegalArgumentException");
+ "a field that doesn't exist should cause an NullPointerException");
assertThrows(
IllegalArgumentException.class,
@@ -455,6 +465,9 @@ public class FieldUtilsTest extends AbstractLangTest {
@Test
public void testReadDeclaredNamedStaticField() throws Exception {
assertEquals(Foo.VALUE, FieldUtils.readDeclaredStaticField(Foo.class, "VALUE"));
+ assertThrows(
+ NullPointerException.class, () ->
+ FieldUtils.readDeclaredField(null, "VALUE"));
assertThrows(
NullPointerException.class, () -> FieldUtils.readDeclaredStaticField(PublicChild.class, "VALUE"));
assertThrows(
@@ -463,6 +476,15 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readDeclaredStaticField(PrivatelyShadowedChild.class, "VALUE"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.readDeclaredStaticField(PublicChild.class, null));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.readDeclaredStaticField(PublicChild.class, ""));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.readDeclaredStaticField(PublicChild.class, " "));
}
@Test
@@ -475,6 +497,15 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readDeclaredStaticField(PrivatelyShadowedChild.class, "VALUE", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.readDeclaredStaticField(PrivatelyShadowedChild.class, null, true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.readDeclaredStaticField(PrivatelyShadowedChild.class, "", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.readDeclaredStaticField(PrivatelyShadowedChild.class, " ", true));
}
@Test
@@ -499,7 +530,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readField(null, publicChild),
- "a null field should cause an IllegalArgumentException");
+ "a null field should cause an NullPointerException");
}
@Test
@@ -528,7 +559,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readField(null, publicChild, true),
- "a null field should cause an IllegalArgumentException");
+ "a null field should cause an NullPointerException");
}
@Test
@@ -555,7 +586,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readField((Object) null, "none"),
- "a null target should cause an IllegalArgumentException");
+ "a null target should cause an NullPointerException");
assertThrows(IllegalArgumentException.class, () -> FieldUtils.readField(publicChild, "b"));
@@ -602,7 +633,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readField((Object) null, "none", true),
- "a null target should cause an IllegalArgumentException");
+ "a null target should cause an NullPointerException");
}
@Test
@@ -625,7 +656,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readDeclaredField(null, "none"),
- "a null target should cause an IllegalArgumentException");
+ "a null target should cause an NullPointerException");
assertThrows(IllegalArgumentException.class, () -> FieldUtils.readDeclaredField(publicChild, "s"));
assertEquals("ss", FieldUtils.readDeclaredField(publiclyShadowedChild, "s"));
@@ -661,7 +692,7 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.readDeclaredField(null, "none", true),
- "a null target should cause an IllegalArgumentException");
+ "a null target should cause an NullPointerException");
assertThrows(IllegalArgumentException.class, () -> FieldUtils.readDeclaredField(publicChild, "s", true));
assertEquals("ss", FieldUtils.readDeclaredField(publiclyShadowedChild, "s", true));
@@ -703,6 +734,10 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
IllegalAccessException.class,
() -> FieldUtils.writeStaticField(StaticContainer.class.getDeclaredField("IMMUTABLE_PRIVATE"), "new"));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeStaticField(null, "new"));
}
@Test
@@ -731,6 +766,10 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
IllegalAccessException.class,
() -> FieldUtils.writeStaticField(StaticContainer.class.getDeclaredField("IMMUTABLE_PRIVATE"), "new", true));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeStaticField(null, "new", true));
}
@Test
@@ -758,6 +797,19 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.writeStaticField(StaticContainerChild.class, "IMMUTABLE_PRIVATE", "new"));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeStaticField(null, "IMMUTABLE_PRIVATE", "new"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeStaticField(StaticContainerChild.class, null, "new"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeStaticField(StaticContainerChild.class, "", "new"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeStaticField(StaticContainerChild.class, " ", "new"));
}
@Test
@@ -782,6 +834,19 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
IllegalAccessException.class,
() -> FieldUtils.writeStaticField(StaticContainerChild.class, "IMMUTABLE_PRIVATE", "new", true));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeStaticField(null, "IMMUTABLE_PRIVATE", "new", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeStaticField(StaticContainerChild.class, null, "new", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeStaticField(StaticContainerChild.class, "", "new", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeStaticField(StaticContainerChild.class, " ", "new", true));
}
@Test
@@ -809,6 +874,19 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
NullPointerException.class,
() -> FieldUtils.writeDeclaredStaticField(StaticContainer.class, "IMMUTABLE_PRIVATE", "new"));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeDeclaredStaticField(null, "mutablePublic", "new"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredStaticField(StaticContainer.class, null, "new"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredStaticField(StaticContainer.class, "", "new"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredStaticField(StaticContainer.class, " ", "new"));
}
@Test
@@ -833,6 +911,19 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
IllegalAccessException.class,
() -> FieldUtils.writeDeclaredStaticField(StaticContainer.class, "IMMUTABLE_PRIVATE", "new", true));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeDeclaredStaticField(null, "mutablePublic", "new", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredStaticField(StaticContainer.class, null, "new", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredStaticField(StaticContainer.class, "", "new", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredStaticField(StaticContainer.class, " ", "new", true));
}
@Test
@@ -849,6 +940,10 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
IllegalAccessException.class,
() -> FieldUtils.writeField(parentClass.getDeclaredField("d"), publicChild, Double.valueOf(Double.MAX_VALUE)));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeField(null, publicChild, "S"));
}
@Test
@@ -865,6 +960,10 @@ public class FieldUtilsTest extends AbstractLangTest {
field = parentClass.getDeclaredField("d");
FieldUtils.writeField(field, publicChild, Double.valueOf(Double.MAX_VALUE), true);
assertEquals(Double.valueOf(Double.MAX_VALUE), field.get(publicChild));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeField(null, publicChild, "S", true));
}
@Test
@@ -896,6 +995,19 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
IllegalArgumentException.class,
() -> FieldUtils.writeField(privatelyShadowedChild, "d", Double.valueOf(1.0)));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeField((Object) null, "s", "s"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeField(publicChild, null, "s"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeField(publicChild, "", "s"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeField(publicChild, " ", "s"));
}
@Test
@@ -926,6 +1038,19 @@ public class FieldUtilsTest extends AbstractLangTest {
assertEquals(Integer.valueOf(0), FieldUtils.readField(privatelyShadowedChild, "i", true));
FieldUtils.writeField(privatelyShadowedChild, "d", Double.valueOf(0.0), true);
assertEquals(Double.valueOf(0.0), FieldUtils.readField(privatelyShadowedChild, "d", true));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeField((Object) null, "s", "s", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeField(publicChild, null, "s", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeField(publicChild, "", "s", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeField(publicChild, " ", "s", true));
}
@Test
@@ -960,6 +1085,19 @@ public class FieldUtilsTest extends AbstractLangTest {
assertThrows(
IllegalArgumentException.class,
() -> FieldUtils.writeDeclaredField(privatelyShadowedChild, "d", Double.valueOf(1.0)));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeDeclaredField(null, "s", "S"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredField(publicChild, "null", "S"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredField(publicChild, "", "S"));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredField(publicChild, " ", "S"));
}
@Test
@@ -992,6 +1130,19 @@ public class FieldUtilsTest extends AbstractLangTest {
assertEquals(Integer.valueOf(0), FieldUtils.readDeclaredField(privatelyShadowedChild, "i", true));
FieldUtils.writeDeclaredField(privatelyShadowedChild, "d", Double.valueOf(0.0), true);
assertEquals(Double.valueOf(0.0), FieldUtils.readDeclaredField(privatelyShadowedChild, "d", true));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> FieldUtils.writeDeclaredField(null, "s", "S", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredField(publicChild, "null", "S", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredField(publicChild, "", "S", true));
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> FieldUtils.writeDeclaredField(publicChild, " ", "S", true));
}
@Test
@@ -1011,6 +1162,11 @@ public class FieldUtilsTest extends AbstractLangTest {
}
}
+ @Test
+ public void testRemoveFinalModifierNullPointerException() {
+ assertThrows(NullPointerException.class, () -> FieldUtils.removeFinalModifier(null));
+ }
+
@Test
public void testRemoveFinalModifierWithAccess() throws Exception {
final Field field = StaticContainer.class.getDeclaredField("IMMUTABLE_PRIVATE_2");
@@ -1023,6 +1179,11 @@ public class FieldUtilsTest extends AbstractLangTest {
}
}
+ @Test
+ public void testRemoveFinalModifierWithAccessNullPointerException() {
+ assertThrows(NullPointerException.class, () -> FieldUtils.removeFinalModifier(null, true));
+ }
+
@Test
public void testRemoveFinalModifierWithoutAccess() throws Exception {
final Field field = StaticContainer.class.getDeclaredField("IMMUTABLE_PRIVATE_2");
diff --git a/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java b/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java
index ad9265712..8a5030f88 100644
--- a/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/MethodUtilsTest.java
@@ -447,6 +447,9 @@ public class MethodUtilsTest extends AbstractLangTest {
MethodUtils.invokeMethod(testBean, "varOverloadEcho", "x", "y"));
TestBean.verify(new ImmutablePair<>("Number...", new Number[]{17, 23, 42}),
MethodUtils.invokeMethod(testBean, "varOverloadEcho", 17, 23, 42));
+
+ assertThrows(NullPointerException.class, () -> MethodUtils.invokeMethod(null, "foo", 1, 2));
+ assertThrows(NullPointerException.class, () -> MethodUtils.invokeMethod(testBean, null, 1, 2));
}
@Test
@@ -492,6 +495,22 @@ public class MethodUtilsTest extends AbstractLangTest {
NoSuchMethodException.class,
() -> MethodUtils.invokeExactMethod(testBean, "foo", NumberUtils.LONG_ONE));
assertThrows(NoSuchMethodException.class, () -> MethodUtils.invokeExactMethod(testBean, "foo", Boolean.TRUE));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> MethodUtils.invokeExactMethod(null, "foo", NumberUtils.BYTE_ONE));
+ assertThrows(
+ NullPointerException.class,
+ () -> MethodUtils.invokeExactMethod(testBean, null, NumberUtils.BYTE_ONE));
+
+ assertThrows(
+ NullPointerException.class,
+ () -> MethodUtils.invokeExactMethod(null, "foo", new Object[]{NumberUtils.DOUBLE_ONE},
+ new Class[]{Double.TYPE}));
+ assertThrows(
+ NullPointerException.class,
+ () -> MethodUtils.invokeExactMethod(testBean, null, new Object[]{NumberUtils.DOUBLE_ONE},
+ new Class[]{Double.TYPE}));
}
@Test
@@ -893,17 +912,17 @@ public class MethodUtilsTest extends AbstractLangTest {
}
@Test
- public void testGetMethodsListWithAnnotationIllegalArgumentException1() {
+ public void testGetMethodsListWithAnnotationNullPointerException1() {
assertThrows(NullPointerException.class, () -> MethodUtils.getMethodsListWithAnnotation(FieldUtilsTest.class, null));
}
@Test
- public void testGetMethodsListWithAnnotationIllegalArgumentException2() {
+ public void testGetMethodsListWithAnnotationNullPointerException2() {
assertThrows(NullPointerException.class, () -> MethodUtils.getMethodsListWithAnnotation(null, Annotated.class));
}
@Test
- public void testGetMethodsListWithAnnotationIllegalArgumentException3() {
+ public void testGetMethodsListWithAnnotationNullPointerException3() {
assertThrows(NullPointerException.class, () -> MethodUtils.getMethodsListWithAnnotation(null, null));
}
@@ -1007,6 +1026,11 @@ public class MethodUtilsTest extends AbstractLangTest {
assertEquals("privateStringStuff(double)", MethodUtils.invokeMethod(testBean, true, "privateStringStuff", 5.0d));
assertEquals("privateStringStuff(String)", MethodUtils.invokeMethod(testBean, true, "privateStringStuff", "Hi There"));
assertEquals("privateStringStuff(Object)", MethodUtils.invokeMethod(testBean, true, "privateStringStuff", new Date()));
+
+ assertThrows(NullPointerException.class,
+ () -> MethodUtils.invokeMethod(null, true, "privateStringStuff", "Hi There"));
+ assertThrows(NullPointerException.class,
+ () -> MethodUtils.invokeMethod(testBean, true, null, "Hi There"));
}
@Test
@@ -1056,6 +1080,9 @@ public class MethodUtilsTest extends AbstractLangTest {
assertEquals(MethodUtils.getMatchingMethod(GetMatchingMethodImpl.class, "testMethod5", RuntimeException.class),
GetMatchingMethodImpl.class.getMethod("testMethod5", Exception.class));
+
+ assertThrows(NullPointerException.class,
+ () -> MethodUtils.getMatchingMethod(null, "testMethod5", RuntimeException.class));
}
private static final class GetMatchingMethodClass {
diff --git a/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java b/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java
index 49f2c0d7d..fb7a41206 100644
--- a/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/reflect/TypeUtilsTest.java
@@ -282,6 +282,11 @@ public class TypeUtilsTest extends AbstractLangTest {
assertTrue(typeVarAssigns.containsKey(treeSetTypeVar));
assertEquals(iterableType.getActualTypeArguments()[0], typeVarAssigns
.get(treeSetTypeVar));
+
+ assertThrows(NullPointerException.class,
+ () -> TypeUtils.determineTypeArguments(TreeSet.class, null));
+ assertThrows(NullPointerException.class,
+ () -> TypeUtils.determineTypeArguments(null, iterableType));
}
@Test
@@ -984,6 +989,8 @@ public class TypeUtilsTest extends AbstractLangTest {
@Test
public void testToLongString() {
assertEquals(getClass().getName() + ":B", TypeUtils.toLongString(getClass().getTypeParameters()[0]));
+
+ assertThrows(NullPointerException.class, () -> TypeUtils.toLongString(null));
}
@Test
@@ -1007,6 +1014,8 @@ public class TypeUtilsTest extends AbstractLangTest {
typeVarAssigns.clear();
typeVarAssigns.put(getClass().getMethod("stub3").getTypeParameters()[0], Integer.class);
assertTrue(TypeUtils.typesSatisfyVariables(typeVarAssigns));
+
+ assertThrows(NullPointerException.class, () -> TypeUtils.typesSatisfyVariables(null));
}
@Test
@@ -1017,6 +1026,11 @@ public class TypeUtilsTest extends AbstractLangTest {
assertArrayEquals(new Type[] { null }, TypeUtils.getImplicitLowerBounds(unbounded));
assertEquals("?", TypeUtils.toString(unbounded));
assertEquals("?", unbounded.toString());
+
+ assertThrows(NullPointerException.class,
+ () -> TypeUtils.getImplicitLowerBounds(null));
+ assertThrows(NullPointerException.class,
+ () -> TypeUtils.getImplicitUpperBounds(null));
}
@Test