Skip to content

A lightweight validation framework for the JVM, allowing for internal and external validation logic to be combined in a transparant and reusable way

License

Notifications You must be signed in to change notification settings

sddevelopment-be/modular-validators

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modular Validators

A lightweight validation framework for the JVM, allowing for internal and external validation logic to be combined in a transparent and reusable way.

| Quality Gate Status | All Contributors | Test report | JavaDoc |



Goal

The goal of this project is to provide a lightweight rule enforcement and validation framework for Java projects, allowing for internal and external validation logic to be combined in a transparent and reusable way.

It will help avoid the need for writing complex custom validation solutions, by providing developers with pre-built rules and enforcers that can be combined in a modular way. The sections below describe the most common issues with existing (simplistic) validation frameworks, and how this project aims to adress them.

If you are interested in seeing potential use cases for this project, please refer to the ValidationDogfoodTest included in the src/main/test directory of the repository. These tests cases are intended to provide a real-world example of how the different parts of the framework can be used.

Value statement

Problem

The coding of validation logic is generally tedious. While many simple validation frameworks exist to date, most of them suffer from the same design issues:

  • Overly simplistic: no option to add business logic validation to the validator objects
  • Dependency heavy: too many additional libraries being pulled in to the target codebase
  • Hard to reuse validation rules: most existing frameworks tie a validator to a single object, making it hard to create compound validation rules
  • Exit on first fail: once the validation is done, the system throws an immediate exception of the first failure. Requiring developers to run the same validation multiple times, fixing a single error on every pass.

Proposed solution

Our modular validator solution aims to remedy this, so developers have the option to chose their own style of validation. The aim is to simplify externally driven validation by providing extension points upon which developers can hook in their own api calls. On top of this, the validator objects will behave as monads. This means they will be usable in both the valid and invalid state. This allows to chain logic on top of the validator objects if so required, rather than being forced to write exceptional code paths.

The aim is to make validation of object state a first level concern when designing applicative flows, rather than a side-thought that is often forgotten.

References

  • Gorts, S (2023) Better validation rules with Validation Results. self-published on LinkedIn. link.

Contributing

Thank you for your interest in this repository. If you would like to help out, consider the following:

There are various ways to contribute to this repository. You can help us out by:

  • Using the library and providing feedback
  • Come up with ideas or patterns to be included
  • Log issues in the github issue tracker
  • Send a Pull-Request

If you would like to contribute code, please read the How to Contribute guide included in the repository.

Contributors

Ebenmelu Ifechukwu
Ebenmelu Ifechukwu

👀

About

A lightweight validation framework for the JVM, allowing for internal and external validation logic to be combined in a transparant and reusable way

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages