A really-really small library to check method arguments.
Just add this dependency to you maven project :
<dependency>
<groupId>fr.fxjavadevblog</groupId>
<artifactId>tiny-preconditions</artifactId>
<version>1.0.10</version>
</dependency>
The class Checker
offers static methods to check various conditions :
Checker.notNull
: checks nullityChecker.respect
: checks a fields against- a REGEXP if a pattern is given
- a Predicate which takes the parameter and returns true or false
Checker.inRange
: checks if an integer is between 2 integers (included)Checker.notEmpty
: checks if a collection is empty
Here is an example used in the JUnit tests :
public static void demoPreconditions(String name, Integer age, byte[] picture, Collection<String> skills)
{
Checker.notNull("name",name);
Checker.notNull("name",name, Predicate.not(String::isEmpty); // Java 11
Checker.notNull("age", age, IllegalArgumentException::new);
Checker.notNull(picture, "picture");
Checker.inRange("age", age, 14, 18);
Checker.inRange("age", age, 14, 18, AgeBusinessException::new);
Checker.respects("name", name, "[A-Z]+");
Checker.respects("picture", picture, ValidationUtils::isPngData);
Checker.notEmpty("skills", skills);
}
Messages are bundled into the file "tiny-preconditions.properties".
They are loaded and accessed by the enum class PreconditionMessage
.
Here are the default messages :
SHOULD_NOT_BE_NULL=The argument {0} should not be null
SHOULD_NOT_BE_EMPTY=The argument {0} should not be empty
SHOULD_BE_BETWEEN=The argument {0} should be between {1} and {2} inclusive
SHOULD_MATCH_REGEXP=The argument {0} should match this regexp {1}
SHOULD_RESPECT_BOOLEAN_CONDITION=The argument {0} should respect this boolean condition \: {1}
MAP_SHOULD_NOT_CONTAIN_ANY_NULL_REFERENCE=The map {0} should not contain any null references but key [{1}] refers to null
Localized and custom messages can be easily added.
This project aims to be rated A with Codacy and Codefactor.
Developments are and will be made in that goal.
This project is build with Travis-CI and tested with JDK 8 and JDK 11.
Please feel free to collaborate to this tiny project to make it as tiny as possible but as powerfull as it could be.
This is very easy thanx to Gitpod. Click on this badge to open a fully configured IDE inside your browser