Oval
OVal - the object validation framework for Java
Install / Use
/learn @sebthom/OvalREADME
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
<a name="what-is-it"></a>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.
<a name="compatibility"></a>Java Compatibility
OVal 1.x requires Java 5 or newer
OVal 2.0 or higher requires Java 8 or newer
<a name="binaries"></a>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>
<a name="user-guide"></a>User Guide
The user guide is available USERGUIDE.md
<a name="articles-about-oval"></a>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
<a name="projects-using-oval"></a>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/
<a name="license"></a>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/.
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
