OVal is a pragmatic and extensible validation framework for any kind of Java objects (not only JavaBeans).
Constraints can be declared with annotations (@NotNull
, @MaxLength
), POJOs or XML.
Custom constraints can be expressed as custom Java classes or by using scripting languages such as JavaScript, Groovy, BeanShell, OGNL or MVEL.
Besides field/property validation OVal implements Programming by Contract features by utilizing AspectJ based aspects or via Spring AOP. This for example allows runtime validation of constructor/method arguments.
The user guide is available USERGUIDE.md
There exist some articles and blog entries talking about and/or referencing OVal:
-
Wikipedia (DE): OVal (Framework)
https://de.wikipedia.org/wiki/OVal_(Framework) [English Translation] -
GlueCoders' Spring Boot Guide: Validation of Request Models using OVal (2017)
https://github.com/GlueCoders/springboot-guide-docs/blob/master/requestvalidation-oval.md -
A Constraint-Based Approach to Data Quality in Information Systems (2017)
https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/198644/1/Thesis-DavidWeber.pdf -
How to integrate Oval validation with Spring 3 (2013)
https://maheshjq.blogspot.com/2013/08/how-to-integrate-oval-validation-with.html -
OVal - validate your models quickly and effortlessly (2011)
https://touk.pl/blog/2011/07/14/oval-validate-your-models-quickly-and-effortlessly/ -
A Valid Point (2011)
https://www.grinshpoon.com/pblog/2011/06/29/a-valid-point/ -
Validaciones: Hibernate Validator vs OVal (2010)
https://unpocodejava.com/2010/05/07/validaciones-hibernate-validator-vs-oval/ [English Translation] -
Enkel validering av Java-objekter med OVal (2010)
https://open.bekk.no/enkel-validering-av-java-objekter-med-oval -
Oval Validation Framework (2010)
https://vathzala.blogspot.de/2010/03/oval-validation-framework.html -
OVal - Object Validation With POJO (2009)
https://bitsofwizardry.wordpress.com/2009/04/14/oval-object-validation-with-pojo/ -
Diseño por Contrato con OVal y Spring [Design by Contract with OVal and Spring] (2009)
https://dosideas.com/noticias/java/562-diseno-por-contrato-con-oval-y-spring [English Translation] -
An Aspect-Oriented Infrastructure for Design by Contract in Java
https://www.semanticscholar.org/paper/An-Aspect-Oriented-Infrastructure-for-Design-by-in-Agostinho/0afb0c0a025b3deb6bb8565ce966bc7ef02e01e5 -
OVal Blog Entry Series at the "JEE, BPEL, SOA" blog (2008) \
-
Pre and post condition validation with OVal as intruments of software architecture (2008)
https://stigl.wordpress.com/2008/07/19/pre-and-post-condition-validation-with-oval-as-intruments-of-software-architecture/ -
OVal: The simple validation framework for Java (2008)
https://takezoe.blogspot.com/2008/03/oval-simple-validation-framework-for.html -
Validación Java: OVal, una joya escondida (2007)
https://brigomp.blogspot.com/2007/09/hay-veces-que-los-frameworks-menos.html -
Die Pro-Pix Homepage - Design by Contract (2007)
https://pro-pix.de/joomla/index.php?option=com_content&task=view&id=39&Itemid=1 -
In pursuit of code quality: Defensive programming with AOP (2007)
https://www.ibm.com/developerworks/library/j-cq01307/ -
OVal e la validazione degli oggetti in Java (2006)
https://www.keepintech.it/2006/12/22/oval-e-la-validazione-degli-oggetti-in-java/ -
Limiting conditional complexity with AOP (2006)
https://nofluffjuststuff.com/blog/paul_duvall/2006/12/limiting_conditional_complexity_with_aop
- Arena Persistence https://arena-pers.uqbar.org/
- Jadira Framework https://jadira.sourceforge.net/
- Omniproperties - a lightweight configuration utility https://github.com/siemens/omniproperties
- fustewa - A full web stack based on Spring https://github.com/opensource21/fuwesta
- eSciDoc https://www.escidoc.org/
- SaferJava https://code.google.com/p/saferjava/
- JProvocateur https://www.jprovocateur.org/
- NexOpen https://sourceforge.net/projects/nexopen/
- gdv.xport https://github.com/oboehm/gdv.xport
- suz-lab-gae https://code.google.com/p/suz-lab-gae/
- Cubby Simple Web Application Framework https://cubby.seasar.org/20x/cubby-oval/index.html
- Metawidget https://github.com/metawidget/metawidget
- Struts 2 OVal Plug-in https://cwiki.apache.org/confluence/display/S2PLUGINS/OVal+Plugin
- Play! Framework 1.x https://www.playframework.org/
- Cayenne annotations https://sourceforge.net/projects/cayannotations/
- jsfatwork https://code.google.com/p/jsfatwork/
- mtn4java https://www.mvnrepository.com/artifact/org.criticalsection.mtn4java/mtn4java/
- Polyforms https://code.google.com/p/polyforms/
- rsser https://code.google.com/p/rsser/
- saetc https://code.google.com/p/saetc/
- ultimate-roundtrip https://code.google.com/p/ultimate-roundtrip/
All files are released under the Eclipse Public License 2.0.