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(a)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-configur...
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.xs...
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(a)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/mapping...
>
> 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(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>
> _______________________________________________
> beanvalidation-dev mailing list
> beanvalidation-dev(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/beanvalidation-dev