Development of OVal has been stopped. Please migrate to a Bean Validation implementation, such as Apache BVal or Hibernate Validator.
OVal - the object validation framework for Java
What is it?
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.
Java Compatibility
OVal 1.x requires Java 5 or newer
OVal 2.0 or higher requires Java 8 or newer
Binaries
Releases of this project are available at https://search.maven.org/artifact/net.sf.oval/oval
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>
User Guide
The user guide is available USERGUIDE.md
Articles about OVal
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)
https://blogg.bekk.no/enkel-validering-av-java-objekter-med-oval-2054b67c7774 -
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://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.131.4053&rep=rep1&type=pdf - 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/ - Limiting conditional complexity with AOP (2006)
https://nofluffjuststuff.com/blog/paul_duvall/2006/12/limiting_conditional_complexity_with_aop
Projects using OVal
Active:
- gdv.xport https://github.com/oboehm/gdv.xport
- eSciDoc https://www.escidoc.org/
- Metawidget https://github.com/metawidget/metawidget
- Play! Framework 1.x https://github.com/playframework/play1
- Struts 2 OVal Plug-in
Inactive:
- Jadira Framework (2018)
- fustewa (2017) - A full web stack based on Spring https://github.com/opensource21/fuwesta
- Omniproperties (2016) - a lightweight configuration utility https://github.com/siemens/omniproperties
- Arena Persistence (2016) http://arena-pers.uqbar.org/
- NexOpen (2014) https://sourceforge.net/projects/nexopen/
- JProvocateur (2012) https://sourceforge.net/projects/jprovocateur/
- Cubby (2010) - Simple Web Application Framework http://cubby.seasar.org/20x/cubby-oval/index.html
- Cayenne annotations (2007) http://sourceforge.net/projects/cayannotations/
- jsfatwork https://code.google.com/archive/p/jsfatwork/
- Polyforms https://code.google.com/archive/p/polyforms/
- rsser https://code.google.com/archive/p/rsser/
- saetc https://code.google.com/archive/p/saetc/
- SaferJava https://code.google.com/archive/p/saferjava/
- suz-lab-gae https://code.google.com/archive/p/suz-lab-gae/
- ultimate-roundtrip https://code.google.com/archive/p/ultimate-roundtrip/
License
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/.