It's my pleasure to announce the availability of Bean Validation TCK 1.1.0.CR1 and Hibernate Validator 5.0.0.CR1.
You can find the TCK
- as Maven artifact in the JBoss Maven repository under the coordinates org.hibernate.beanvalidation.tck:beanvalidation-tck-tests:1.1.0.CR1 and
- as distribution bundle (ZIP or TAR) on SourceForge
Hibernate Validator can be retrieved
- from the JBoss Maven repository under the coordinates org.hibernate:hibernate-validator:5.0.0.CR1 and
- as ZIP or TAR distribution from SourceForge
These releases catch up with the proposed final draft of the Bean Validation 1.1 specification, which was handed over to the JCP just yesterday. Check out the announcement for an overview of what has changed feature-wise since the last Beta releases. We addressed 4 issues in the TCK and 16 issues in Hibernate Validator.
As there shall be no blog post without at least a little bit of source code, let's have a closer look at one of the new features, the XML-based configuration of method constraints, implemented with HV-373.
Let's assume there is a class OrderService like this:
public class OrderService { public Order placeOrder(String customerId, Item item, int quantity) { [...] } }
The following shows an XML constraint mapping for adding method constraints to this class:
<?xml version="1.0" encoding="UTF-8"?> <constraint-mappings xmlns="http://jboss.org/xml/ns/javax/validation/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd" version="1.1"> <default-package>com.acme.app.domain</default-package> <bean class="OrderService" ignore-annotations="false"> <method name="placeOrder" ignore-annotations="true"> <parameter type="java.lang.String"> <constraint annotation="javax.validation.constraints.NotNull"/> <constraint annotation="javax.validation.constraints.Size"> <element name="value">5</element> </constraint> </parameter> <parameter type="Item"> <valid/> <constraint annotation="javax.validation.constraints.NotNull"/> </parameter> <parameter type="int"> <constraint annotation="javax.validation.constraints.Min"> <element name="value">1</element> </constraint> </parameter> <return-value> <valid/> </return-value> </method> </bean> </constraint-mappings>
The following constraints are added here to the placeOrder() method:
- The customerId parameter must not be null and must be at least five characters long
- The item parameter must not be null and it is marked for cascaded validation (equivalent to annotating it with @Valid)
- The quantity parameter must at least be 1
- The method return value is marked for cascaded validation
What's next?
The final release of Bean Validation 1.1 is coming soon; in the mean time we'll work on more tests for the TCK, fix bugs as required in Hibernate Validator and polish the documentation.
You want to help? Nothing easier than that, just check out the proposed final draft of the specification and play around with all the new features using Hibernate Validator.
You found a bug? You think the implementation doesn't correctly obey to the specification? That's great! We look forward to your report in our issue tracker. You can also reach us via e-mail or in the commmunity forum.