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.
OVal 1.x requires Java 5 or newer
OVal 2.x requires Java 8 or newer
Binaries are available via the Bintray JCenter Maven repository.
You need to add this repository to your Maven settings.xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<repositories>
<repository>
<id>central</id>
<name>bintray</name>
<url>https://jcenter.bintray.com</url>
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>bintray</activeProfile>
</activeProfiles>
</settings>
Then you can add OVal as a dependency to your pom.xml
:
<dependency>
<groupId>net.sf.oval</groupId>
<artifactId>oval</artifactId>
<version>[VERSION_GOES_HERE]</version>
</dependency>
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] -
An Experimental Evaluation of JavaDesign-by-Contract Extensions (2018)
http://jultika.oulu.fi/Record/nbnfioulu-201812063243 -
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)
http://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)
http://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)
http://open.bekk.no/enkel-validering-av-java-objekter-med-oval -
Oval Validation Framework (2010)
http://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)
http://takezoe.blogspot.com/2008/03/oval-simple-validation-framework-for.html -
Validación Java: OVal, una joya escondida (2007)
http://brigomp.blogspot.com/2007/09/hay-veces-que-los-frameworks-menos.html -
Die Pro-Pix Homepage - Design by Contract (2007)
http://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)
http://www.ibm.com/developerworks/library/j-cq01307/ -
OVal e la validazione degli oggetti in Java (2006)
http://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 http://arena-pers.uqbar.org/
- Jadira Framework http://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 http://code.google.com/p/saferjava/
- JProvocateur http://www.jprovocateur.org/
- NexOpen https://sourceforge.net/projects/nexopen/
- gdv.xport https://github.com/oboehm/gdv.xport
- suz-lab-gae http://code.google.com/p/suz-lab-gae/
- Cubby Simple Web Application Framework http://cubby.seasar.org/20x/cubby-oval/index.html
- Metawidget https://github.com/metawidget/metawidget
- Struts 2 OVal Plug-in http://cwiki.apache.org/confluence/display/S2PLUGINS/OVal+Plugin
- Play! Framework 1.x http://www.playframework.org/
- Cayenne annotations http://sourceforge.net/projects/cayannotations/
- jsfatwork http://code.google.com/p/jsfatwork/
- mtn4java http://www.mvnrepository.com/artifact/org.criticalsection.mtn4java/mtn4java/
- Polyforms http://code.google.com/p/polyforms/
- rsser http://code.google.com/p/rsser/
- saetc http://code.google.com/p/saetc/
- ultimate-roundtrip http://code.google.com/p/ultimate-roundtrip/
All files are released under the Eclipse Public License 2.0.
Individual files contain the following tag instead of the full license text:
SPDX-License-Identifier: EPL-2.0
This enables machine processing of license information based on the SPDX License Identifiers that are available here: https://spdx.org/licenses/.