jValidate

jValidate is a simple validation API for use in Java Object setter methods, or where ever programatic validation is required. The goal is to allow simple validations without a complete inversion of control or complicated XML configuration file.

Building / Testing / Installing

  • Clone the repository
  • git clone git://github.com/mzsanford/jvalidate.git
  • (optional) Build the code and run the tests
  • mvn test
  • (optional) Check the test coverage
  • mvn emma:emma
  • open target/site/emma/index.html
  • Build the jar file
  • mvn package
  • # jar file in ./target/

Usage

All of the validations return the current validator object so they can be chained, like so:

    public void setUsername(String username) throws ValidationException {
        new StringValidator(username).notNull()
                                     .minLength(5)
                                     .maxLength(20)
                                     .matches(Pattern.compile("^[a-z09_]+$"))
        this.username = username;
    }

it is fully expected that things like the minimum length, maximum length and pattern would be constants so they are not re-allocated for each call. In addition to String validation there are also validations for the common subclasses of Number, like:

    public void setAge(int age) throws ValidationException {
        new IntegerValidator(age).min(14).max(20);
        this.age = age;
    }

Each validation throws a subclass of the base ValidationException to allow for better error messaging. A very savvy caller of the age example above might do something like this:

    try {
        user.setAge(age);
    } catch (NumberTooLowException numberTooLowException) {
        System.out.println("Sorry, the COPPA requires you be at least 14 to register");
    } catch (NumberTooHighException numberTooHighException) {
        System.out.println("Sorry, your hand is blinking and a Sandman has been dispatched. See: http://bit.ly/lNVmX9");
    } catch (ValidationException validationException) {
        System.out.println("Invalid age, please try again");
    }

Links

To do

  • MUST: Update methods with Javadoc comments
  • MAY: Add Java annotations for static validations

Change Log

  • v1.0-SNAPSHOT (current pre-release version)
  • Initial validator base classes
  • StringValidator and the varioud flavors of NumberValidator