[bv-dev] ValidationException with 5.0.0.Alpha2

Gunnar Morling gunnar at hibernate.org
Wed Jan 2 11:40:40 EST 2013


> This is what I done and it works (with version 1.1 everywhere)

Ah, this is good. I was just about to write that I can't reproduce the
error with your mapping file. I think it should also be possible with the
reference implementation to use the 1.0 schema for the mapping and 1.1 for
validation.xml. If you feel adventurous you might give that a try.

@Emmanuel: There is a "version" attribute already for constraint mapping
files, too.

Regarding enforcing a consistent version between validation.xml and mapping
files, we might require this, but I don't think that this would strictly be
required from a technical perspective.

By allowing mixed versions, users could update e.g. mapping files if they
want to specify method constraints but don't have to update validation.xml.
We might add a sentence making that explicit if we want to allow it.

--Gunnar



2013/1/2 Antonio Goncalves <antonio.mailing at gmail.com>

> My bad, I mixed the validation.xml and constraints.xml files (and mixed
> the XSDs). This is what I done and it works (with version 1.1 everywhere) :
>
>
> *validation.xml*
> <?xml version="1.0" encoding="UTF-8"?>
> <validation-config
>         xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>         xsi:schemaLocation="
> http://jboss.org/xml/ns/javax/validation/configurationvalidation-configuration-1.1.xsd"
>         version="1.1">
>
>   <constraint-mapping>META-INF/constraints.xml</constraint-mapping>
>
> </validation-config>
>
> *constraints.xml*
> <?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/mappingvalidation-mapping-1.1.xsd"
>         version="1.1">
>
>   <bean class="org.agoncal.book.javaee7.chapter03.ex14.Book14"
> ignore-annotations="false">
>     <field name="title">
>       <constraint annotation="javax.validation.constraints.NotNull"/>
>     </field>
>     <field name="price">
>       <constraint annotation="javax.validation.constraints.NotNull"/>
>       <constraint annotation="javax.validation.constraints.Min">
>         <element name="value">2</element>
>       </constraint>
>     </field>
>     <field name="description">
>       <constraint annotation="javax.validation.constraints.Size">
>         <element name="max">2000</element>
>       </constraint>
>     </field>
>   </bean>
> </constraint-mappings>
>
>
> 2013/1/2 Emmanuel Bernard <emmanuel at hibernate.org>
>
>> It looks like you forgot a space in your xsi:schemaLocation
>>
>>     xsi:schemaLocation="
>> http://jboss.org/xml/ns/javax/validation/mappingvalidation-mapping-1.1.xsd
>> "
>>     ->
>>     xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mappingvalidation-mapping-1.0.xsd"
>>
>> But that raises an interesting question. Today we have added a version
>> number in validation.xml and I believe the behavior is well defined.
>> What about mapping files? I don't think we considered that yet. What
>> should we do. Throwing a few ideas:
>>
>> - add a version number like we did for validation.xml
>> - enforce consistent version use between validation.xml and the
>>   contained mapping files
>>
>> Thoughts?
>>
>> Emmanuel
>>
>> On Wed 2013-01-02 16:38, Antonio Goncalves wrote:
>> > Hi all,
>> >
>> > I'm trying to use validation.xml 1.1 to add constraints to me beans but
>> I
>> > get a ValidationException. Here is the validation.xml file :
>> >
>> > <?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/mappingvalidation-mapping-1.1.xsd
>> "
>> >         version="1.1">
>> >
>> >   <default-package>org.agoncal.book.javaee7.chapter03</default-package>
>> >   <bean class="ex14.Book" ignore-annotations="false">
>> >     <field name="title">
>> >       <constraint annotation="javax.validation.constraints.NotNull"/>
>> >     </field>
>> >     <field name="price">
>> >       <constraint annotation="javax.validation.constraints.NotNull"/>
>> >       <constraint annotation="javax.validation.constraints.Min">
>> >         <element name="min">2</element>
>> >       </constraint>
>> >     </field>
>> >   </bean>
>> > </constraint-mappings>
>> >
>> > In the spec (§8.1.4. XML Schema) it mentions something about versions,
>> so
>> > I've tried to change my schema to 1.0 but still get my exception. Here
>> is
>> > the part of the spec that talks about version issues and the stack
>> trace.
>> >
>> > Any idea ?
>> > Thanks
>> >
>> >
>> >
>> > --------------------------------------------
>> > Stacktrace
>> > 8.1.4. XML Schema
>> >
>> > This section contains the XML schema used for constraint mapping
>> > descriptors.
>> >
>> > >From Bean Validation revision 1.1 onwards, mapping authors must
>> specify the
>> > used version of the schema within the version attribute of the
>> > constraint-mappings element. Implementations supporting Bean Validation
>> 1.1
>> > must properly parse mapping descriptors of Bean Validation 1.0 and 1.1.
>> If
>> > the version attribute attribute is not given, schema version 1.0 is to
>> be
>> > assumed by the Bean Validation Provider.
>> >
>> > In case an unknown version is given (e.g. if a mapping descriptor
>> adhering
>> > to a future schema version is parsed by a Bean Validation 1.1 provider)
>> a
>> > ValidationException is raised.
>> >
>> >
>> >
>> > --------------------------------------------
>> > Stacktrace
>> >
>> >
>> >
>> > javax.validation.ValidationException: HV000100: Unable to parse
>> > META-INF/validation.xml.
>> > at
>> >
>> org.hibernate.validator.internal.xml.ValidationXmlParser.unmarshal(ValidationXmlParser.java:121)
>> > at
>> >
>> org.hibernate.validator.internal.xml.ValidationXmlParser.parseValidationXml(ValidationXmlParser.java:77)
>> > at
>> >
>> org.hibernate.validator.internal.engine.ConfigurationImpl.getBootstrapConfiguration(ConfigurationImpl.java:263)
>> > at
>> >
>> org.hibernate.validator.internal.engine.ConfigurationImpl.parseValidationXml(ConfigurationImpl.java:328)
>> > at
>> >
>> org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:195)
>> > at
>> >
>> javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:107)
>> > at
>> >
>> org.agoncal.book.javaee7.chapter03.ex14.Book14Test.init(Book14Test.java:36)
>> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> > at
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> > at
>> >
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> > at
>> >
>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>> > at
>> >
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>> > at
>> >
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>> > at
>> >
>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
>> > at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>> > at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
>> > at
>> >
>> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76)
>> > at
>> >
>> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
>> > at
>> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
>> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> > at
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>> > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
>> > Caused by: javax.xml.bind.UnmarshalException
>> >  - with linked exception:
>> > [org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 22;
>> cvc-elt.1
>> > : Déclaration de l'élément 'constraint-mappings' introuvable.]
>> > at
>> >
>> javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335)
>> > at
>> >
>> com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:512)
>> > at
>> >
>> com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:209)
>> > at
>> >
>> com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:181)
>> > at
>> >
>> com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:235)
>> > at
>> >
>> org.hibernate.validator.internal.xml.ValidationXmlParser.unmarshal(ValidationXmlParser.java:117)
>> > ... 24 more
>> > Caused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber:
>> 22;
>> > cvc-elt.1 : Déclaration de l'élément 'constraint-mappings' introuvable.
>> > at
>> >
>> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1901)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:741)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.startElement(ValidatorHandlerImpl.java:565)
>> > at
>> >
>> com.sun.xml.internal.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(ValidatingUnmarshaller.java:86)
>> > at
>> >
>> com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:135)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:602)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3065)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:881)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
>> > at
>> >
>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
>> > at
>> >
>> com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:203)
>> > ... 27 more
>> >
>> > janv. 02, 2013 4:23:09 PM org.hibernate.validator.internal.util.Version
>> > <clinit>
>> > INFO: HV000001: Hibernate Validator 5.0.0.Alpha2
>> > janv. 02, 2013 4:23:09 PM
>> > org.hibernate.validator.internal.xml.ValidationXmlParser unmarshal
>> > INFO: HV000007: META-INF/validation.xml found. Parsing XML based
>> > configuration.
>> >
>> > --
>> > Antonio Goncalves
>> > Software architect and Java Champion
>> >
>> > Web site <http://www.antoniogoncalves.org/> |
>> > Twitter<http://twitter.com/agoncal>
>> >  | LinkedIn <http://www.linkedin.com/in/agoncal> | Paris
>> > JUG<http://www.parisjug.org/>
>> >  | Devoxx France <http://www.devoxx.fr/>
>>
>> > _______________________________________________
>> > beanvalidation-dev mailing list
>> > beanvalidation-dev at lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>>
>> _______________________________________________
>> beanvalidation-dev mailing list
>> beanvalidation-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>>
>
>
>
> --
> Antonio Goncalves
> Software architect and Java Champion
>
> Web site <http://www.antoniogoncalves.org/> | Twitter<http://twitter.com/agoncal>
>  | LinkedIn <http://www.linkedin.com/in/agoncal> | Paris JUG<http://www.parisjug.org/>
>  | Devoxx France <http://www.devoxx.fr/>
>
> _______________________________________________
> beanvalidation-dev mailing list
> beanvalidation-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/beanvalidation-dev/attachments/20130102/060d7241/attachment-0001.html 


More information about the beanvalidation-dev mailing list