Class Assert


  • public abstract class Assert
    extends java.lang.Object

    This class is a clone of org.springframework.util.Assert

    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; consider Apache's Commons Lang for a more comprehensive suite of String utilities.

    Since:
    6.2.0
    Author:
    Keith Donald, Juergen Hoeller, Sam Brannen, Colin Sampaleanu, Rob Harrop
    • Constructor Summary

      Constructors 
      Constructor Description
      Assert()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void doesNotContain​(java.lang.String textToSearch, java.lang.String substring, java.lang.String message)
      Assert that the given text does not contain the given substring.
      static void doesNotContain​(java.lang.String textToSearch, java.lang.String substring, java.util.function.Supplier<java.lang.String> messageSupplier)
      Assert that the given text does not contain the given substring.
      static void hasLength​(java.lang.String text, java.lang.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​(java.lang.String text, java.util.function.Supplier<java.lang.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​(java.lang.String text, java.lang.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​(java.lang.String text, java.util.function.Supplier<java.lang.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​(java.lang.Class<?> superType, java.lang.Class<?> subType)
      Assert that superType.isAssignableFrom(subType) is true.
      static void isAssignable​(java.lang.Class<?> superType, java.lang.Class<?> subType, java.lang.String message)
      Assert that superType.isAssignableFrom(subType) is true.
      static void isAssignable​(java.lang.Class<?> superType, java.lang.Class<?> subType, java.util.function.Supplier<java.lang.String> messageSupplier)
      Assert that superType.isAssignableFrom(subType) is true.
      static void isInstanceOf​(java.lang.Class<?> type, java.lang.Object obj)
      Assert that the provided object is an instance of the provided class.
      static void isInstanceOf​(java.lang.Class<?> type, java.lang.Object obj, java.lang.String message)
      Assert that the provided object is an instance of the provided class.
      static void isInstanceOf​(java.lang.Class<?> type, java.lang.Object obj, java.util.function.Supplier<java.lang.String> messageSupplier)
      Assert that the provided object is an instance of the provided class.
      static void isNull​(java.lang.Object object, java.lang.String message)
      Assert that an object is null.
      static void isNull​(java.lang.Object object, java.util.function.Supplier<java.lang.String> messageSupplier)
      Assert that an object is null.
      static void isTrue​(boolean expression, java.lang.String message)
      Assert a boolean expression, throwing an IllegalArgumentException if the expression evaluates to false.
      static void isTrue​(boolean expression, java.util.function.Supplier<java.lang.String> messageSupplier)
      Assert a boolean expression, throwing an IllegalArgumentException if the expression evaluates to false.
      static void noNullElements​(java.lang.Object[] array, java.lang.String message)
      Assert that an array contains no null elements.
      static void noNullElements​(java.lang.Object[] array, java.util.function.Supplier<java.lang.String> messageSupplier)
      Assert that an array contains no null elements.
      static void notEmpty​(java.lang.Object[] array, java.lang.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​(java.lang.Object[] array, java.util.function.Supplier<java.lang.String> messageSupplier)
      Assert that an array contains elements; that is, it must not be null and must contain at least one element.
      static void notEmpty​(java.util.Collection<?> collection, java.lang.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​(java.util.Collection<?> collection, java.util.function.Supplier<java.lang.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​(java.util.Map<?,​?> map, java.lang.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​(java.util.Map<?,​?> map, java.util.function.Supplier<java.lang.String> messageSupplier)
      Assert that a Map contains entries; that is, it must not be null and must contain at least one entry.
      static void notNull​(java.lang.Object object, java.lang.String message)
      Assert that an object is not null.
      static void notNull​(java.lang.Object object, java.util.function.Supplier<java.lang.String> messageSupplier)
      Assert that an object is not null.
      static void state​(boolean expression, java.lang.String message)
      Assert a boolean expression, throwing an IllegalStateException if the expression evaluates to false.
      static void state​(boolean expression, java.util.function.Supplier<java.lang.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,
                                 java.lang.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:
        java.lang.IllegalStateException - if expression is false
      • state

        public static void state​(boolean expression,
                                 java.util.function.Supplier<java.lang.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(id == null,
             () -> "ID for " + 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:
        java.lang.IllegalStateException - if expression is false
      • isTrue

        public static void isTrue​(boolean expression,
                                  java.lang.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:
        java.lang.IllegalArgumentException - if expression is false
      • isTrue

        public static void isTrue​(boolean expression,
                                  java.util.function.Supplier<java.lang.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:
        java.lang.IllegalArgumentException - if expression is false
      • isNull

        public static void isNull​(@Nullable
                                  java.lang.Object object,
                                  java.lang.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:
        java.lang.IllegalArgumentException - if the object is not null
      • isNull

        public static void isNull​(@Nullable
                                  java.lang.Object object,
                                  java.util.function.Supplier<java.lang.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:
        java.lang.IllegalArgumentException - if the object is not null
      • notNull

        public static void notNull​(@Nullable
                                   java.lang.Object object,
                                   java.lang.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:
        java.lang.IllegalArgumentException - if the object is null
      • notNull

        public static void notNull​(@Nullable
                                   java.lang.Object object,
                                   java.util.function.Supplier<java.lang.String> messageSupplier)
        Assert that an object is not null.
         Assert.notNull(clazz, () -> "The class '" + clazz.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:
        java.lang.IllegalArgumentException - if the object is null
      • hasLength

        public static void hasLength​(@Nullable
                                     java.lang.String text,
                                     java.lang.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:
        java.lang.IllegalArgumentException - if the text is empty
        See Also:
        StringUtils.hasLength(java.lang.CharSequence)
      • hasLength

        public static void hasLength​(@Nullable
                                     java.lang.String text,
                                     java.util.function.Supplier<java.lang.String> messageSupplier)
        Assert that the given String is not empty; that is, it must not be null and not the empty String.
         Assert.hasLength(name, () -> "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:
        java.lang.IllegalArgumentException - if the text is empty
        See Also:
        StringUtils.hasLength(java.lang.CharSequence)
      • hasText

        public static void hasText​(@Nullable
                                   java.lang.String text,
                                   java.lang.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:
        java.lang.IllegalArgumentException - if the text does not contain valid text content
        See Also:
        StringUtils.hasText(java.lang.CharSequence)
      • hasText

        public static void hasText​(@Nullable
                                   java.lang.String text,
                                   java.util.function.Supplier<java.lang.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(name, () -> "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:
        java.lang.IllegalArgumentException - if the text does not contain valid text content
        See Also:
        StringUtils.hasText(java.lang.CharSequence)
      • doesNotContain

        public static void doesNotContain​(@Nullable
                                          java.lang.String textToSearch,
                                          java.lang.String substring,
                                          java.lang.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:
        java.lang.IllegalArgumentException - if the text contains the substring
      • doesNotContain

        public static void doesNotContain​(@Nullable
                                          java.lang.String textToSearch,
                                          java.lang.String substring,
                                          java.util.function.Supplier<java.lang.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:
        java.lang.IllegalArgumentException - if the text contains the substring
      • notEmpty

        public static void notEmpty​(@Nullable
                                    java.lang.Object[] array,
                                    java.lang.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:
        java.lang.IllegalArgumentException - if the object array is null or contains no elements
      • notEmpty

        public static void notEmpty​(@Nullable
                                    java.lang.Object[] array,
                                    java.util.function.Supplier<java.lang.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:
        java.lang.IllegalArgumentException - if the object array is null or contains no elements
      • noNullElements

        public static void noNullElements​(@Nullable
                                          java.lang.Object[] array,
                                          java.lang.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:
        java.lang.IllegalArgumentException - if the object array contains a null element
      • noNullElements

        public static void noNullElements​(@Nullable
                                          java.lang.Object[] array,
                                          java.util.function.Supplier<java.lang.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:
        java.lang.IllegalArgumentException - if the object array contains a null element
      • notEmpty

        public static void notEmpty​(@Nullable
                                    java.util.Collection<?> collection,
                                    java.lang.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:
        java.lang.IllegalArgumentException - if the collection is null or contains no elements
      • notEmpty

        public static void notEmpty​(@Nullable
                                    java.util.Collection<?> collection,
                                    java.util.function.Supplier<java.lang.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:
        java.lang.IllegalArgumentException - if the collection is null or contains no elements
      • notEmpty

        public static void notEmpty​(@Nullable
                                    java.util.Map<?,​?> map,
                                    java.lang.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:
        java.lang.IllegalArgumentException - if the map is null or contains no entries
      • notEmpty

        public static void notEmpty​(@Nullable
                                    java.util.Map<?,​?> map,
                                    java.util.function.Supplier<java.lang.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:
        java.lang.IllegalArgumentException - if the map is null or contains no entries
      • isInstanceOf

        public static void isInstanceOf​(java.lang.Class<?> type,
                                        @Nullable
                                        java.lang.Object obj,
                                        java.lang.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:
        java.lang.IllegalArgumentException - if the object is not an instance of type
      • isInstanceOf

        public static void isInstanceOf​(java.lang.Class<?> type,
                                        @Nullable
                                        java.lang.Object obj,
                                        java.util.function.Supplier<java.lang.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:
        java.lang.IllegalArgumentException - if the object is not an instance of type
      • isInstanceOf

        public static void isInstanceOf​(java.lang.Class<?> type,
                                        @Nullable
                                        java.lang.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:
        java.lang.IllegalArgumentException - if the object is not an instance of type
      • isAssignable

        public static void isAssignable​(java.lang.Class<?> superType,
                                        @Nullable
                                        java.lang.Class<?> subType,
                                        java.lang.String message)
        Assert that superType.isAssignableFrom(subType) is true.
        Assert.isAssignable(Number.class, myClass, "Number expected");
        Parameters:
        superType - the super type to check against
        subType - the sub type 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 sub type will be appended. In any other case, a ":" with a space and the name of the offending sub type will be appended.
        Throws:
        java.lang.IllegalArgumentException - if the classes are not assignable
      • isAssignable

        public static void isAssignable​(java.lang.Class<?> superType,
                                        @Nullable
                                        java.lang.Class<?> subType,
                                        java.util.function.Supplier<java.lang.String> messageSupplier)
        Assert that superType.isAssignableFrom(subType) is true.
         Assert.isAssignable(Number.class, myClass, () -> "Processing " + myAttributeName + ":");
         
        Parameters:
        superType - the super type to check against
        subType - the sub type to check
        messageSupplier - a supplier for the exception message to use if the assertion fails. See isAssignable(Class, Class, String) for details.
        Throws:
        java.lang.IllegalArgumentException - if the classes are not assignable
      • isAssignable

        public static void isAssignable​(java.lang.Class<?> superType,
                                        java.lang.Class<?> subType)
        Assert that superType.isAssignableFrom(subType) is true.
        Assert.isAssignable(Number.class, myClass);
        Parameters:
        superType - the super type to check
        subType - the sub type to check
        Throws:
        java.lang.IllegalArgumentException - if the classes are not assignable