LANG-781: Added methods to ObjectUtils class to check for null elements in the array (closes #108)

This commit is contained in:
Krzysztof Wolny 2015-07-28 14:54:19 +02:00 committed by pascalschumacher
parent 2433cd393e
commit d190655a97
2 changed files with 71 additions and 0 deletions

View File

@ -128,6 +128,45 @@ public static <T> T firstNonNull(final T... values) {
return null;
}
/**
* <p></p>Checks if any value in the array is not {@code null}.
* If all the values are {@code null} or the array is {@code null}
* or empty then {@code false} is returned. Otherwise {@code true} is returned.</p>
*
* @param values the values to test, may be {@code null} or empty
* @return {@code true} if there is at least one non-null value in the array,
* {@code false} if all values in the array are {@code null}s.
* If the array is {@code null} or empty {@code false} is also returned.
*/
public static boolean anyNotNull(final Object... values) {
return firstNonNull(values) != null;
}
/**
* <p></p>Checks if all values in the array are not {@code null}s.
* If any value is {@code null} or the array is {@code null}
* then {@code false} is returned.
* If all elements in array are not {@code null} or the array is empty (contains no elements)
* {@code true} is returned.</p>
*
* @param values the values to test, may be {@code null} or empty
* @return {@code false} if there is at least one {@code null} value in the array or the array is {@code null},
* {@code true} if all values in the array are not {@code null}s or array contains no elements.
*/
public static boolean allNotNull(final Object... values) {
if (values == null) {
return false;
}
for (final Object val : values) {
if (val == null) {
return false;
}
}
return true;
}
// Null-safe equals/hashCode
//-----------------------------------------------------------------------
/**

View File

@ -89,6 +89,38 @@ public void testFirstNonNull() {
assertNull(ObjectUtils.firstNonNull((Object[]) null));
}
/**
* Tests {@link ObjectUtils#anyNotNull(Object...)}.
*/
@Test
public void testAnyNotNull() {
assertFalse(ObjectUtils.anyNotNull());
assertFalse(ObjectUtils.anyNotNull((Object) null));
assertFalse(ObjectUtils.anyNotNull((Object[]) null));
assertFalse(ObjectUtils.anyNotNull(null, null, null));
assertTrue(ObjectUtils.anyNotNull(FOO));
assertTrue(ObjectUtils.anyNotNull(null, FOO, null));
assertTrue(ObjectUtils.anyNotNull(null, null, null, null, FOO, BAR));
}
/**
* Tests {@link ObjectUtils#allNotNull(Object...)}.
*/
@Test
public void testAllNotNull() {
assertFalse(ObjectUtils.allNotNull((Object) null));
assertFalse(ObjectUtils.allNotNull((Object[]) null));
assertFalse(ObjectUtils.allNotNull(null, null, null));
assertFalse(ObjectUtils.allNotNull(null, FOO, BAR));
assertFalse(ObjectUtils.allNotNull(FOO, BAR, null));
assertFalse(ObjectUtils.allNotNull(FOO, BAR, null, FOO, BAR));
assertTrue(ObjectUtils.allNotNull());
assertTrue(ObjectUtils.allNotNull(FOO));
assertTrue(ObjectUtils.allNotNull(FOO, BAR, 1, Boolean.TRUE, new Object(), new Object[]{}));
}
//-----------------------------------------------------------------------
@Test
public void testEquals() {