org.springframework.util

## Class Assert

- java.lang.Object
- - org.springframework.util.Assert

-     public abstract class Assert
      extends Object

  Assertion utility class that assists in validating arguments.

  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

    Constructors
    Constructor and Description
    `Assert()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `doesNotContain(String textToSearch, String substring)` Deprecated. as of 4.3.7, in favor of `doesNotContain(String, String, String)`
    `static 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` | `hasLength(String text)` Deprecated. as of 4.3.7, in favor of `hasLength(String, String)`
    `static void` | `hasLength(String text, String message)` Assert that the given String is not empty; that is, it must not be `null` and not the empty String.
    `static void` | `hasLength(String text, Supplier<String> messageSupplier)` Assert that the given String is not empty; that is, it must not be `null` and not the empty String.
    `static void` | `hasText(String text)` Deprecated. as of 4.3.7, in favor of `hasText(String, String)`
    `static void` | `hasText(String text, String message)` Assert that the given String contains valid text content; that is, it must not be `null` and must contain at least one non-whitespace character.
    `static void` | `hasText(String text, Supplier<String> messageSupplier)` Assert that the given String contains valid text content; that is, it must not be `null` and must contain at least one non-whitespace character.
    `static void` | `isAssignable(Class<?> superType, Class<?> subType)` Assert that `superType.isAssignableFrom(subType)` is `true`.
    `static void` | `isAssignable(Class<?> superType, Class<?> subType, String message)` Assert that `superType.isAssignableFrom(subType)` is `true`.
    `static void` | `isAssignable(Class<?> superType, Class<?> subType, Supplier<String> messageSupplier)` Assert that `superType.isAssignableFrom(subType)` is `true`.
    `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` | `isNull(Object object)` Deprecated. as of 4.3.7, in favor of `isNull(Object, String)`
    `static void` | `isNull(Object object, String message)` Assert that an object is `null`.
    `static void` | `isNull(Object object, Supplier<String> messageSupplier)` Assert that an object is `null`.
    `static void` | `isTrue(boolean expression)` Deprecated. as of 4.3.7, in favor of `isTrue(boolean, String)`
    `static void` | `isTrue(boolean expression, String message)` Assert a boolean expression, throwing an `IllegalArgumentException` if the expression evaluates to `false`.
    `static void` | `isTrue(boolean expression, Supplier<String> messageSupplier)` Assert a boolean expression, throwing an `IllegalArgumentException` if the expression evaluates to `false`.
    `static void` | `noNullElements(Collection<?> collection, String message)` Assert that a collection contains no `null` elements.
    `static void` | `noNullElements(Collection<?> collection, Supplier<String> messageSupplier)` Assert that a collection contains no `null` elements.
    `static void` | `noNullElements(Object[] array)` Deprecated. as of 4.3.7, in favor of `noNullElements(Object[], String)`
    `static void` | `noNullElements(Object[] array, String message)` Assert that an array contains no `null` elements.
    `static void` | `noNullElements(Object[] array, Supplier<String> messageSupplier)` Assert that an array contains no `null` elements.
    `static void` | `notEmpty(Collection<?> collection)` Deprecated. as of 4.3.7, in favor of `notEmpty(Collection, String)`
    `static void` | `notEmpty(Collection<?> collection, String message)` Assert that a collection contains elements; that is, it must not be `null` 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 be `null` and must contain at least one element.
    `static void` | `notEmpty(Map<?,?> map)` Deprecated. as of 4.3.7, in favor of `notEmpty(Map, String)`
    `static void` | `notEmpty(Map<?,?> map, String message)` Assert that a Map contains entries; that is, it must not be `null` and must contain at least one entry.
    `static void` | `notEmpty(Map<?,?> map, Supplier<String> messageSupplier)` Assert that a Map contains entries; that is, it must not be `null` and must contain at least one entry.
    `static void` | `notEmpty(Object[] array)` Deprecated. as of 4.3.7, in favor of `notEmpty(Object[], String)`
    `static void` | `notEmpty(Object[] array, String message)` Assert that an array contains elements; that is, it must not be `null` and must contain at least one element.
    `static void` | `notEmpty(Object[] array, Supplier<String> messageSupplier)` Assert that an array contains elements; that is, it must not be `null` and must contain at least one element.
    `static void` | `notNull(Object object)` Deprecated. as of 4.3.7, in favor of `notNull(Object, String)`
    `static void` | `notNull(Object object, String message)` Assert that an object is not `null`.
    `static void` | `notNull(Object object, Supplier<String> messageSupplier)` Assert that an object is not `null`.
    `static void` | `state(boolean expression)` Deprecated. as of 4.3.7, in favor of `state(boolean, String)`
    `static void` | `state(boolean expression, String message)` Assert a boolean expression, throwing an `IllegalStateException` if the expression evaluates to `false`.
    `static void` | `state(boolean expression, Supplier<String> messageSupplier)` Assert a boolean expression, throwing an `IllegalStateException` if the expression evaluates to `false`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Assert

          public Assert()

  - ### Method Detail

    - #### state

          public static void state(boolean expression,
                                   String message)

      Assert a boolean expression, throwing an `IllegalStateException` if the expression evaluates to `false`.

      Call `isTrue(boolean, java.lang.String)` if you wish to throw an `IllegalArgumentException` on an assertion failure.

          Assert.state(id == null, "The id property must not already be initialized");

      Parameters:
        `expression` - a boolean expression
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalStateException` - if `expression` is `false`

    - #### state

          public static void state(boolean expression,
                                   Supplier<String> messageSupplier)

      Assert a boolean expression, throwing an `IllegalStateException` if the expression evaluates to `false`.

      Call `isTrue(boolean, java.lang.String)` if you wish to throw an `IllegalArgumentException` on an assertion failure.

           Assert.state(entity.getId() == null,
               () -> "ID for entity " + entity.getName() + " must not already be initialized");

      Parameters:
        `expression` - a boolean expression
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalStateException` - if `expression` is `false`
      Since:
        5.0

    - #### state

          @Deprecated
          public static void state(boolean expression)

      Deprecated. as of 4.3.7, in favor of `state(boolean, String)`
      Assert a boolean expression, throwing an `IllegalStateException` if the expression evaluates to `false`.

    - #### isTrue

          public static void isTrue(boolean expression,
                                    String message)

      Assert a boolean expression, throwing an `IllegalArgumentException` if the expression evaluates to `false`.

          Assert.isTrue(i > 0, "The value must be greater than zero");

      Parameters:
        `expression` - a boolean expression
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if `expression` is `false`

    - #### isTrue

          public static void isTrue(boolean expression,
                                    Supplier<String> messageSupplier)

      Assert a boolean expression, throwing an `IllegalArgumentException` if the expression evaluates to `false`.

           Assert.isTrue(i > 0, () -> "The value '" + i + "' must be greater than zero");

      Parameters:
        `expression` - a boolean expression
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if `expression` is `false`
      Since:
        5.0

    - #### isTrue

          @Deprecated
          public static void isTrue(boolean expression)

      Deprecated. as of 4.3.7, in favor of `isTrue(boolean, String)`
      Assert a boolean expression, throwing an `IllegalArgumentException` if the expression evaluates to `false`.

    - #### isNull

          public static void isNull(@Nullable
                                    Object object,
                                    String message)

      Assert that an object is `null`.

          Assert.isNull(value, "The value must be null");

      Parameters:
        `object` - the object to check
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the object is not `null`

    - #### isNull

          public static void isNull(@Nullable
                                    Object object,
                                    Supplier<String> messageSupplier)

      Assert that an object is `null`.

           Assert.isNull(value, () -> "The value '" + value + "' must be null");

      Parameters:
        `object` - the object to check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the object is not `null`
      Since:
        5.0

    - #### isNull

          @Deprecated
          public static void isNull(@Nullable
                                                Object object)

      Deprecated. as of 4.3.7, in favor of `isNull(Object, String)`
      Assert that an object is `null`.

    - #### notNull

          public static void notNull(@Nullable
                                     Object object,
                                     String message)

      Assert that an object is not `null`.

          Assert.notNull(clazz, "The class must not be null");

      Parameters:
        `object` - the object to check
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the object is `null`

    - #### notNull

          public static void notNull(@Nullable
                                     Object object,
                                     Supplier<String> messageSupplier)

      Assert that an object is not `null`.

           Assert.notNull(entity.getId(),
               () -> "ID for entity " + entity.getName() + " must not be null");

      Parameters:
        `object` - the object to check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the object is `null`
      Since:
        5.0

    - #### notNull

          @Deprecated
          public static void notNull(@Nullable
                                                 Object object)

      Deprecated. as of 4.3.7, in favor of `notNull(Object, String)`
      Assert that an object is not `null`.

    - #### hasLength

          public static void hasLength(@Nullable
                                       String text,
                                       String message)

      Assert that the given String is not empty; that is, it must not be `null` and not the empty String.

          Assert.hasLength(name, "Name must not be empty");

      Parameters:
        `text` - the String to check
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the text is empty
      See Also:
        `StringUtils.hasLength(java.lang.CharSequence)`

    - #### hasLength

          public static void hasLength(@Nullable
                                       String text,
                                       Supplier<String> messageSupplier)

      Assert that the given String is not empty; that is, it must not be `null` and not the empty String.

           Assert.hasLength(account.getName(),
               () -> "Name for account '" + account.getId() + "' must not be empty");

      Parameters:
        `text` - the String to check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the text is empty
      Since:
        5.0
      See Also:
        `StringUtils.hasLength(java.lang.CharSequence)`

    - #### hasLength

          @Deprecated
          public static void hasLength(@Nullable
                                                   String text)

      Deprecated. as of 4.3.7, in favor of `hasLength(String, String)`
      Assert that the given String is not empty; that is, it must not be `null` and not the empty String.

    - #### hasText

          public static void hasText(@Nullable
                                     String text,
                                     String message)

      Assert that the given String contains valid text content; that is, it must not be `null` and must contain at least one non-whitespace character.

          Assert.hasText(name, "'name' must not be empty");

      Parameters:
        `text` - the String to check
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the text does not contain valid text content
      See Also:
        `StringUtils.hasText(java.lang.CharSequence)`

    - #### hasText

          public static void hasText(@Nullable
                                     String text,
                                     Supplier<String> messageSupplier)

      Assert that the given String contains valid text content; that is, it must not be `null` 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 check
        `messageSupplier` - 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:
        `StringUtils.hasText(java.lang.CharSequence)`

    - #### hasText

          @Deprecated
          public static void hasText(@Nullable
                                                 String text)

      Deprecated. as of 4.3.7, in favor of `hasText(String, String)`
      Assert that the given String contains valid text content; that is, it must not be `null` and must contain at least one non-whitespace character.

    - #### doesNotContain

          public static void doesNotContain(@Nullable
                                            String textToSearch,
                                            String substring,
                                            String message)

      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 search
        `substring` - the substring to find within the text
        `message` - 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 search
        `substring` - the substring to find within the text
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the text contains the substring
      Since:
        5.0

    - #### doesNotContain

          @Deprecated
          public static void doesNotContain(@Nullable
                                                        String textToSearch,
                                                        String substring)

      Deprecated. as of 4.3.7, in favor of `doesNotContain(String, String, String)`
      Assert that the given text does not contain the given substring.

    - #### notEmpty

          public static void notEmpty(@Nullable
                                      Object[] array,
                                      String message)

      Assert that an array contains elements; that is, it must not be `null` and must contain at least one element.

          Assert.notEmpty(array, "The array must contain elements");

      Parameters:
        `array` - the array to check
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the object array is `null` or contains no elements

    - #### notEmpty

          public static void notEmpty(@Nullable
                                      Object[] array,
                                      Supplier<String> messageSupplier)

      Assert that an array contains elements; that is, it must not be `null` and must contain at least one element.

           Assert.notEmpty(array, () -> "The " + arrayType + " array must contain elements");

      Parameters:
        `array` - the array to check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the object array is `null` or contains no elements
      Since:
        5.0

    - #### notEmpty

          @Deprecated
          public static void notEmpty(@Nullable
                                                  Object[] array)

      Deprecated. as of 4.3.7, in favor of `notEmpty(Object[], String)`
      Assert that an array contains elements; that is, it must not be `null` and must contain at least one element.

    - #### noNullElements

          public static void noNullElements(@Nullable
                                            Object[] array,
                                            String message)

      Assert that an array contains no `null` 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 check
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the object array contains a `null` element

    - #### noNullElements

          public static void noNullElements(@Nullable
                                            Object[] array,
                                            Supplier<String> messageSupplier)

      Assert that an array contains no `null` 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 check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the object array contains a `null` element
      Since:
        5.0

    - #### noNullElements

          @Deprecated
          public static void noNullElements(@Nullable
                                                        Object[] array)

      Deprecated. as of 4.3.7, in favor of `noNullElements(Object[], String)`
      Assert that an array contains no `null` elements.

    - #### notEmpty

          public static void notEmpty(@Nullable
                                      Collection<?> collection,
                                      String message)

      Assert that a collection contains elements; that is, it must not be `null` and must contain at least one element.

          Assert.notEmpty(collection, "Collection must contain elements");

      Parameters:
        `collection` - the collection to check
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the collection is `null` or contains no elements

    - #### notEmpty

          public static void notEmpty(@Nullable
                                      Collection<?> collection,
                                      Supplier<String> messageSupplier)

      Assert that a collection contains elements; that is, it must not be `null` and must contain at least one element.

           Assert.notEmpty(collection, () -> "The " + collectionType + " collection must contain elements");

      Parameters:
        `collection` - the collection to check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the collection is `null` or contains no elements
      Since:
        5.0

    - #### notEmpty

          @Deprecated
          public static void notEmpty(@Nullable
                                                  Collection<?> collection)

      Deprecated. as of 4.3.7, in favor of `notEmpty(Collection, String)`
      Assert that a collection contains elements; that is, it must not be `null` and must contain at least one element.

    - #### noNullElements

          public static void noNullElements(@Nullable
                                            Collection<?> collection,
                                            String message)

      Assert that a collection contains no `null` elements.

      Note: Does not complain if the collection is empty!

          Assert.noNullElements(collection, "Collection must contain non-null elements");

      Parameters:
        `collection` - the collection to check
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the collection contains a `null` element
      Since:
        5.2

    - #### noNullElements

          public static void noNullElements(@Nullable
                                            Collection<?> collection,
                                            Supplier<String> messageSupplier)

      Assert that a collection contains no `null` 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 check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the collection contains a `null` element
      Since:
        5.2

    - #### notEmpty

          public static void notEmpty(@Nullable
                                      Map<?,?> map,
                                      String message)

      Assert that a Map contains entries; that is, it must not be `null` and must contain at least one entry.

          Assert.notEmpty(map, "Map must contain entries");

      Parameters:
        `map` - the map to check
        `message` - the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the map is `null` or contains no entries

    - #### notEmpty

          public static void notEmpty(@Nullable
                                      Map<?,?> map,
                                      Supplier<String> messageSupplier)

      Assert that a Map contains entries; that is, it must not be `null` and must contain at least one entry.

           Assert.notEmpty(map, () -> "The " + mapType + " map must contain entries");

      Parameters:
        `map` - the map to check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails
      Throws:
        `IllegalArgumentException` - if the map is `null` or contains no entries
      Since:
        5.0

    - #### notEmpty

          @Deprecated
          public static void notEmpty(@Nullable
                                                  Map<?,?> map)

      Deprecated. as of 4.3.7, in favor of `notEmpty(Map, String)`
      Assert that a Map contains entries; that is, it must not be `null` and must contain at least one entry.

    - #### isInstanceOf

          public static void isInstanceOf(Class<?> type,
                                          @Nullable
                                          Object obj,
                                          String message)

      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 against
        `obj` - the object to check
        `message` - 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 against
        `obj` - the object to check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails. See `isInstanceOf(Class, Object, String)` for details.
      Throws:
        `IllegalArgumentException` - if the object is not an instance of type
      Since:
        5.0

    - #### isInstanceOf

          public static void isInstanceOf(Class<?> type,
                                          @Nullable
                                          Object obj)

      Assert that the provided object is an instance of the provided class.

          Assert.instanceOf(Foo.class, foo);

      Parameters:
        `type` - the type to check against
        `obj` - the object to check
      Throws:
        `IllegalArgumentException` - if the object is not an instance of type

    - #### isAssignable

          public static void isAssignable(Class<?> superType,
                                          @Nullable
                                          Class<?> subType,
                                          String message)

      Assert that `superType.isAssignableFrom(subType)` is `true`.

          Assert.isAssignable(Number.class, myClass, "Number expected");

      Parameters:
        `superType` - the supertype to check against
        `subType` - the subtype to check
        `message` - 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 that `superType.isAssignableFrom(subType)` is `true`.

           Assert.isAssignable(Number.class, myClass, () -> "Processing " + myAttributeName + ":");

      Parameters:
        `superType` - the supertype to check against
        `subType` - the subtype to check
        `messageSupplier` - a supplier for the exception message to use if the assertion fails. See `isAssignable(Class, Class, String)` for details.
      Throws:
        `IllegalArgumentException` - if the classes are not assignable
      Since:
        5.0

    - #### isAssignable

          public static void isAssignable(Class<?> superType,
                                          Class<?> subType)

      Assert that `superType.isAssignableFrom(subType)` is `true`.

          Assert.isAssignable(Number.class, myClass);

      Parameters:
        `superType` - the supertype to check
        `subType` - the subtype to check
      Throws:
        `IllegalArgumentException` - if the classes are not assignable