Class Assert
Useful for identifying programmer errors early and clearly at runtime.
For example, if the contract of a public method states it does not
allow null
arguments, Assert
can be used to validate that
contract. Doing this clearly indicates a contract violation when it
occurs and protects the class's invariants.
Typically used to validate method arguments rather than configuration properties, to check for cases that are usually programmer errors rather than configuration errors. In contrast to configuration initialization code, there is usually no point in falling back to defaults in such methods.
This class is similar to JUnit's assertion library. If an argument value is
deemed invalid, an IllegalArgumentException
is thrown (typically).
For example:
Assert.notNull(clazz, "The class must not be null"); Assert.isTrue(i > 0, "The value must be greater than zero");
Mainly for internal use within the framework; for a more comprehensive suite
of assertion utilities consider org.apache.commons.lang3.Validate
from
Apache Commons Lang,
Google Guava's
Preconditions,
or similar third-party libraries.
- Since:
- 1.1.2
- Author:
- Keith Donald, Juergen Hoeller, Sam Brannen, Colin Sampaleanu, Rob Harrop
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
doesNotContain
(String textToSearch, String substring, String message) Assert that the given text does not contain the given substring.static void
doesNotContain
(String textToSearch, String substring, Supplier<String> messageSupplier) Assert that the given text does not contain the given substring.static void
Assert that the given String is not empty; that is, it must not benull
and not the empty String.static void
Assert that the given String is not empty; that is, it must not benull
and not the empty String.static void
Assert that the given String contains valid text content; that is, it must not benull
and must contain at least one non-whitespace character.static void
Assert that the given String contains valid text content; that is, it must not benull
and must contain at least one non-whitespace character.static void
isAssignable
(Class<?> superType, Class<?> subType) Assert thatsuperType.isAssignableFrom(subType)
istrue
.static void
isAssignable
(Class<?> superType, Class<?> subType, String message) Assert thatsuperType.isAssignableFrom(subType)
istrue
.static void
isAssignable
(Class<?> superType, Class<?> subType, Supplier<String> messageSupplier) Assert thatsuperType.isAssignableFrom(subType)
istrue
.static void
isInstanceOf
(Class<?> type, Object obj) Assert that the provided object is an instance of the provided class.static void
isInstanceOf
(Class<?> type, Object obj, String message) Assert that the provided object is an instance of the provided class.static void
isInstanceOf
(Class<?> type, Object obj, Supplier<String> messageSupplier) Assert that the provided object is an instance of the provided class.static void
Assert that an object isnull
.static void
Assert that an object isnull
.static void
Assert a boolean expression, throwing anIllegalArgumentException
if the expression evaluates tofalse
.static void
Assert a boolean expression, throwing anIllegalArgumentException
if the expression evaluates tofalse
.static void
noNullElements
(Object[] array, String message) Assert that an array contains nonull
elements.static void
noNullElements
(Object[] array, Supplier<String> messageSupplier) Assert that an array contains nonull
elements.static void
noNullElements
(Collection<?> collection, String message) Assert that a collection contains nonull
elements.static void
noNullElements
(Collection<?> collection, Supplier<String> messageSupplier) Assert that a collection contains nonull
elements.static void
Assert that an array contains elements; that is, it must not benull
and must contain at least one element.static void
Assert that an array contains elements; that is, it must not benull
and must contain at least one element.static void
notEmpty
(Collection<?> collection, String message) Assert that a collection contains elements; that is, it must not benull
and must contain at least one element.static void
notEmpty
(Collection<?> collection, Supplier<String> messageSupplier) Assert that a collection contains elements; that is, it must not benull
and must contain at least one element.static void
Assert that a Map contains entries; that is, it must not benull
and must contain at least one entry.static void
Assert that a Map contains entries; that is, it must not benull
and must contain at least one entry.static void
Assert that an object is notnull
.static void
Assert that an object is notnull
.static void
Assert a boolean expression, throwing anIllegalStateException
if the expression evaluates tofalse
.static void
Assert a boolean expression, throwing anIllegalStateException
if the expression evaluates tofalse
.
-
Constructor Details
-
Assert
public Assert()
-
-
Method Details
-
state
Assert a boolean expression, throwing anIllegalStateException
if the expression evaluates tofalse
.Call
isTrue(boolean, java.lang.String)
if you wish to throw anIllegalArgumentException
on an assertion failure.Assert.state(id == null, "The id property must not already be initialized");
- Parameters:
expression
- a boolean expressionmessage
- the exception message to use if the assertion fails- Throws:
IllegalStateException
- ifexpression
isfalse
-
state
@Contract("false, _ -> fail") public static void state(boolean expression, Supplier<String> messageSupplier) Assert a boolean expression, throwing anIllegalStateException
if the expression evaluates tofalse
.Call
isTrue(boolean, java.lang.String)
if you wish to throw anIllegalArgumentException
on an assertion failure.Assert.state(entity.getId() == null, () -> "ID for entity " + entity.getName() + " must not already be initialized");
- Parameters:
expression
- a boolean expressionmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalStateException
- ifexpression
isfalse
- Since:
- 5.0
-
isTrue
Assert a boolean expression, throwing anIllegalArgumentException
if the expression evaluates tofalse
.Assert.isTrue(i > 0, "The value must be greater than zero");
- Parameters:
expression
- a boolean expressionmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- ifexpression
isfalse
-
isTrue
@Contract("false, _ -> fail") public static void isTrue(boolean expression, Supplier<String> messageSupplier) Assert a boolean expression, throwing anIllegalArgumentException
if the expression evaluates tofalse
.Assert.isTrue(i > 0, () -> "The value '" + i + "' must be greater than zero");
- Parameters:
expression
- a boolean expressionmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- ifexpression
isfalse
- Since:
- 5.0
-
isNull
Assert that an object isnull
.Assert.isNull(value, "The value must be null");
- Parameters:
object
- the object to checkmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the object is notnull
-
isNull
@Contract("!null, _ -> fail") public static void isNull(@Nullable Object object, Supplier<String> messageSupplier) Assert that an object isnull
.Assert.isNull(value, () -> "The value '" + value + "' must be null");
- Parameters:
object
- the object to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the object is notnull
- Since:
- 5.0
-
notNull
Assert that an object is notnull
.Assert.notNull(clazz, "The class must not be null");
- Parameters:
object
- the object to checkmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the object isnull
-
notNull
@Contract("null, _ -> fail") public static void notNull(@Nullable Object object, Supplier<String> messageSupplier) Assert that an object is notnull
.Assert.notNull(entity.getId(), () -> "ID for entity " + entity.getName() + " must not be null");
- Parameters:
object
- the object to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the object isnull
- Since:
- 5.0
-
hasLength
Assert that the given String is not empty; that is, it must not benull
and not the empty String.Assert.hasLength(name, "Name must not be empty");
- Parameters:
text
- the String to checkmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the text is empty- See Also:
-
hasLength
Assert that the given String is not empty; that is, it must not benull
and not the empty String.Assert.hasLength(account.getName(), () -> "Name for account '" + account.getId() + "' must not be empty");
- Parameters:
text
- the String to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the text is empty- Since:
- 5.0
- See Also:
-
hasText
Assert that the given String contains valid text content; that is, it must not benull
and must contain at least one non-whitespace character.Assert.hasText(name, "'name' must not be empty");
- Parameters:
text
- the String to checkmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the text does not contain valid text content- See Also:
-
hasText
Assert that the given String contains valid text content; that is, it must not benull
and must contain at least one non-whitespace character.Assert.hasText(account.getName(), () -> "Name for account '" + account.getId() + "' must not be empty");
- Parameters:
text
- the String to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the text does not contain valid text content- Since:
- 5.0
- See Also:
-
doesNotContain
Assert that the given text does not contain the given substring.Assert.doesNotContain(name, "rod", "Name must not contain 'rod'");
- Parameters:
textToSearch
- the text to searchsubstring
- the substring to find within the textmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the text contains the substring
-
doesNotContain
public static void doesNotContain(@Nullable String textToSearch, String substring, Supplier<String> messageSupplier) Assert that the given text does not contain the given substring.Assert.doesNotContain(name, forbidden, () -> "Name must not contain '" + forbidden + "'");
- Parameters:
textToSearch
- the text to searchsubstring
- the substring to find within the textmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the text contains the substring- Since:
- 5.0
-
notEmpty
Assert that an array contains elements; that is, it must not benull
and must contain at least one element.Assert.notEmpty(array, "The array must contain elements");
- Parameters:
array
- the array to checkmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the object array isnull
or contains no elements
-
notEmpty
@Contract("null, _ -> fail") public static void notEmpty(@Nullable Object[] array, Supplier<String> messageSupplier) Assert that an array contains elements; that is, it must not benull
and must contain at least one element.Assert.notEmpty(array, () -> "The " + arrayType + " array must contain elements");
- Parameters:
array
- the array to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the object array isnull
or contains no elements- Since:
- 5.0
-
noNullElements
Assert that an array contains nonull
elements.Note: Does not complain if the array is empty!
Assert.noNullElements(array, "The array must contain non-null elements");
- Parameters:
array
- the array to checkmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the object array contains anull
element
-
noNullElements
Assert that an array contains nonull
elements.Note: Does not complain if the array is empty!
Assert.noNullElements(array, () -> "The " + arrayType + " array must contain non-null elements");
- Parameters:
array
- the array to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the object array contains anull
element- Since:
- 5.0
-
notEmpty
Assert that a collection contains elements; that is, it must not benull
and must contain at least one element.Assert.notEmpty(collection, "Collection must contain elements");
- Parameters:
collection
- the collection to checkmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the collection isnull
or contains no elements
-
notEmpty
Assert that a collection contains elements; that is, it must not benull
and must contain at least one element.Assert.notEmpty(collection, () -> "The " + collectionType + " collection must contain elements");
- Parameters:
collection
- the collection to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the collection isnull
or contains no elements- Since:
- 5.0
-
noNullElements
Assert that a collection contains nonull
elements.Note: Does not complain if the collection is empty!
Assert.noNullElements(collection, "Collection must contain non-null elements");
- Parameters:
collection
- the collection to checkmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the collection contains anull
element- Since:
- 5.2
-
noNullElements
public static void noNullElements(@Nullable Collection<?> collection, Supplier<String> messageSupplier) Assert that a collection contains nonull
elements.Note: Does not complain if the collection is empty!
Assert.noNullElements(collection, () -> "Collection " + collectionName + " must contain non-null elements");
- Parameters:
collection
- the collection to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the collection contains anull
element- Since:
- 5.2
-
notEmpty
Assert that a Map contains entries; that is, it must not benull
and must contain at least one entry.Assert.notEmpty(map, "Map must contain entries");
- Parameters:
map
- the map to checkmessage
- the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the map isnull
or contains no entries
-
notEmpty
Assert that a Map contains entries; that is, it must not benull
and must contain at least one entry.Assert.notEmpty(map, () -> "The " + mapType + " map must contain entries");
- Parameters:
map
- the map to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails- Throws:
IllegalArgumentException
- if the map isnull
or contains no entries- Since:
- 5.0
-
isInstanceOf
Assert that the provided object is an instance of the provided class.Assert.instanceOf(Foo.class, foo, "Foo expected");
- Parameters:
type
- the type to check againstobj
- the object to checkmessage
- a message which will be prepended to provide further context. If it is empty or ends in ":" or ";" or "," or ".", a full exception message will be appended. If it ends in a space, the name of the offending object's type will be appended. In any other case, a ":" with a space and the name of the offending object's type will be appended.- Throws:
IllegalArgumentException
- if the object is not an instance of type
-
isInstanceOf
public static void isInstanceOf(Class<?> type, @Nullable Object obj, Supplier<String> messageSupplier) Assert that the provided object is an instance of the provided class.Assert.instanceOf(Foo.class, foo, () -> "Processing " + Foo.class.getSimpleName() + ":");
- Parameters:
type
- the type to check againstobj
- the object to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails. SeeisInstanceOf(Class, Object, String)
for details.- Throws:
IllegalArgumentException
- if the object is not an instance of type- Since:
- 5.0
-
isInstanceOf
Assert that the provided object is an instance of the provided class.Assert.instanceOf(Foo.class, foo);
- Parameters:
type
- the type to check againstobj
- the object to check- Throws:
IllegalArgumentException
- if the object is not an instance of type
-
isAssignable
Assert thatsuperType.isAssignableFrom(subType)
istrue
.Assert.isAssignable(Number.class, myClass, "Number expected");
- Parameters:
superType
- the supertype to check againstsubType
- the subtype to checkmessage
- a message which will be prepended to provide further context. If it is empty or ends in ":" or ";" or "," or ".", a full exception message will be appended. If it ends in a space, the name of the offending subtype will be appended. In any other case, a ":" with a space and the name of the offending subtype will be appended.- Throws:
IllegalArgumentException
- if the classes are not assignable
-
isAssignable
public static void isAssignable(Class<?> superType, @Nullable Class<?> subType, Supplier<String> messageSupplier) Assert thatsuperType.isAssignableFrom(subType)
istrue
.Assert.isAssignable(Number.class, myClass, () -> "Processing " + myAttributeName + ":");
- Parameters:
superType
- the supertype to check againstsubType
- the subtype to checkmessageSupplier
- a supplier for the exception message to use if the assertion fails. SeeisAssignable(Class, Class, String)
for details.- Throws:
IllegalArgumentException
- if the classes are not assignable- Since:
- 5.0
-
isAssignable
Assert thatsuperType.isAssignableFrom(subType)
istrue
.Assert.isAssignable(Number.class, myClass);
- Parameters:
superType
- the supertype to checksubType
- the subtype to check- Throws:
IllegalArgumentException
- if the classes are not assignable
-