This is an automated email from the ASF dual-hosted git repository.

jungm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bval.git


The following commit(s) were added to refs/heads/master by this push:
     new cc95ff5  Bump jakarta.validation:jakarta.validation-api from 3.1.0 to 
3.1.1 (#176)
cc95ff5 is described below

commit cc95ff5a878e576b60fdf3582fca4c18e394b4d7
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
AuthorDate: Fri Feb 28 08:59:53 2025 +0100

    Bump jakarta.validation:jakarta.validation-api from 3.1.0 to 3.1.1 (#176)
    
    * Bump jakarta.validation:jakarta.validation-api from 3.1.0 to 3.1.1
    
    Bumps 
[jakarta.validation:jakarta.validation-api](https://github.com/jakartaee/validation)
 from 3.1.0 to 3.1.1.
    - [Release notes](https://github.com/jakartaee/validation/releases)
    - [Commits](https://github.com/jakartaee/validation/compare/3.1.0...3.1.1)
    
    ---
    updated-dependencies:
    - dependency-name: jakarta.validation:jakarta.validation-api
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...
    
    Signed-off-by: dependabot[bot] <[email protected]>
    
    * integrate 3.1 XSDs
    
    ---------
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] 
<49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Markus Jung <[email protected]>
---
 bval-jsr/pom.xml                                   |   4 +-
 .../org/apache/bval/jsr/metadata/XmlBuilder.java   |   2 +-
 .../bval/jsr/xml/ValidationMappingParser.java      |   2 +
 .../org/apache/bval/jsr/xml/ValidationParser.java  |   2 +
 bval-jsr/src/main/xjb/binding-customization.xjb    |   4 +-
 .../src/main/xsd/validation-configuration-3.1.xsd  | 108 +++++++
 bval-jsr/src/main/xsd/validation-mapping-3.1.xsd   | 321 +++++++++++++++++++++
 .../apache/bval/jsr/xml/ValidationParserTest.java  |   8 +
 .../src/test/resources/sample-validation31.xml     |  30 ++
 pom.xml                                            |   2 +-
 10 files changed, 477 insertions(+), 6 deletions(-)

diff --git a/bval-jsr/pom.xml b/bval-jsr/pom.xml
index 1e37d26..d9c9cfa 100644
--- a/bval-jsr/pom.xml
+++ b/bval-jsr/pom.xml
@@ -270,8 +270,8 @@
                     <extension>true</extension>
                     <enableIntrospection>true</enableIntrospection>
                     <sources>
-                           
<source>${project.basedir}/src/main/xsd/validation-configuration-3.0.xsd</source>
-                           
<source>${project.basedir}/src/main/xsd/validation-mapping-3.0.xsd</source>
+                           
<source>${project.basedir}/src/main/xsd/validation-configuration-3.1.xsd</source>
+                           
<source>${project.basedir}/src/main/xsd/validation-mapping-3.1.xsd</source>
                     </sources>
                 </configuration>
                 <dependencies>
diff --git 
a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java 
b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java
index ba2f4f3..775b02f 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/metadata/XmlBuilder.java
@@ -82,7 +82,7 @@ import 
org.apache.commons.weaver.privilizer.Privilizing.CallTo;
 public class XmlBuilder {
     //@formatter:off
     public enum Version {
-        v10("1.0"), v11("1.1"), v20("2.0"), v30("3.0");
+        v10("1.0"), v11("1.1"), v20("2.0"), v30("3.0"), v31("3.1");
         //@formatter:on
 
         static Version of(ConstraintMappingsType constraintMappings) {
diff --git 
a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java 
b/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
index b9763f4..12af226 100644
--- 
a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
+++ 
b/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
@@ -61,6 +61,8 @@ public class ValidationMappingParser implements 
MetadataSource {
                 "META-INF/validation-mapping-2.0.xsd")
         .add(XmlBuilder.Version.v30.getId(), 
"https://jakarta.ee/xml/ns/validation/mapping";,
                 "META-INF/validation-mapping-3.0.xsd")
+        .add(XmlBuilder.Version.v31.getId(), 
"https://jakarta.ee/xml/ns/validation/mapping";,
+                "META-INF/validation-mapping-3.1.xsd")
         .build();
 
     private ApacheValidatorFactory validatorFactory;
diff --git 
a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java 
b/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
index d85ac10..3baac4d 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
@@ -69,6 +69,8 @@ public class ValidationParser {
             "META-INF/validation-configuration-2.0.xsd")
         .add(XmlBuilder.Version.v30.getId(), 
"https://jakarta.ee/xml/ns/validation/configuration";,
                 "META-INF/validation-configuration-3.0.xsd")
+        .add(XmlBuilder.Version.v31.getId(), 
"https://jakarta.ee/xml/ns/validation/configuration";,
+                "META-INF/validation-configuration-3.1.xsd")
         .build();
 
     private static String getValidationXmlFile(String file) {
diff --git a/bval-jsr/src/main/xjb/binding-customization.xjb 
b/bval-jsr/src/main/xjb/binding-customization.xjb
index 9a2fbab..3bebb37 100644
--- a/bval-jsr/src/main/xjb/binding-customization.xjb
+++ b/bval-jsr/src/main/xjb/binding-customization.xjb
@@ -22,7 +22,7 @@
     xmlns:xjc="https://jakarta.ee/xml/ns/jaxb";
     version="3.0">
 
-  <jxb:bindings schemaLocation="../xsd/validation-mapping-3.0.xsd" 
node="/xs:schema">
+  <jxb:bindings schemaLocation="../xsd/validation-mapping-3.1.xsd" 
node="/xs:schema">
     <jxb:globalBindings>
       <!-- adapter attribute not supported anymore
       <xjc:javaType name="java.lang.String" xmlType="xs:string"
@@ -34,7 +34,7 @@
     </jxb:bindings>
   </jxb:bindings>
 
-  <jxb:bindings schemaLocation="../xsd/validation-configuration-3.0.xsd" 
node="/xs:schema">
+  <jxb:bindings schemaLocation="../xsd/validation-configuration-3.1.xsd" 
node="/xs:schema">
     <jxb:bindings node="//xs:element[@name='executable-type']">
       <jxb:javaType name="jakarta.validation.executable.ExecutableType"
                     
parseMethod="jakarta.validation.executable.ExecutableType.valueOf"/>
diff --git a/bval-jsr/src/main/xsd/validation-configuration-3.1.xsd 
b/bval-jsr/src/main/xsd/validation-configuration-3.1.xsd
new file mode 100644
index 0000000..00734ed
--- /dev/null
+++ b/bval-jsr/src/main/xsd/validation-configuration-3.1.xsd
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<xs:schema attributeFormDefault="unqualified"
+           elementFormDefault="qualified"
+           targetNamespace="https://jakarta.ee/xml/ns/validation/configuration";
+           xmlns:xs="http://www.w3.org/2001/XMLSchema";
+           xmlns:config="https://jakarta.ee/xml/ns/validation/configuration";
+           version="3.1">
+
+  <xs:annotation>
+    <xs:documentation><![CDATA[
+            This is the XML Schema for the Jakarta Validation configuration 
file.
+            The configuration file must be named "META-INF/validation.xml".
+
+            Jakarta Validation configuration files must indicate the Jakarta 
Validation
+            XML schema by using the validation namespace:
+
+            https://jakarta.ee/xml/ns/validation/configuration
+
+            and indicate the version of the schema by using the version 
attribute
+            as shown below:
+
+            <validation-config
+                xmlns="https://jakarta.ee/xml/ns/validation/configuration";
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                xsi:schemaLocation="
+                    https://jakarta.ee/xml/ns/validation/configuration
+                    
https://jakarta.ee/xml/ns/validation/validation-configuration-3.1.xsd";
+                version="3.1">
+                [...]
+            </validation-config>
+        ]]>
+    </xs:documentation>
+  </xs:annotation>
+
+  <xs:element name="validation-config" type="config:validation-configType"/>
+  <xs:complexType name="validation-configType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="default-provider" minOccurs="0"/>
+      <xs:element type="xs:string" name="message-interpolator" minOccurs="0"/>
+      <xs:element type="xs:string" name="traversable-resolver" minOccurs="0"/>
+      <xs:element type="xs:string" name="constraint-validator-factory" 
minOccurs="0"/>
+      <xs:element type="xs:string" name="parameter-name-provider" 
minOccurs="0"/>
+      <xs:element type="xs:string" name="clock-provider" minOccurs="0"/>
+      <xs:element type="xs:string" name="value-extractor" maxOccurs="unbounded"
+                  minOccurs="0"/>
+      <xs:element type="config:executable-validationType" 
name="executable-validation"
+                  minOccurs="0"/>
+      <xs:element type="xs:string" name="constraint-mapping" 
maxOccurs="unbounded"
+                  minOccurs="0"/>
+      <xs:element type="config:propertyType" name="property" 
maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="version" type="config:versionType" fixed="3.0" 
use="required"/>
+  </xs:complexType>
+
+  <xs:complexType name="executable-validationType">
+    <xs:sequence>
+      <xs:element type="config:default-validated-executable-typesType"
+                  name="default-validated-executable-types" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="enabled" use="optional" type="xs:boolean" 
default="true"/>
+  </xs:complexType>
+  <xs:complexType name="default-validated-executable-typesType">
+    <xs:sequence>
+      <xs:element name="executable-type" maxOccurs="unbounded" minOccurs="1">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="NONE"/>
+            <xs:enumeration value="CONSTRUCTORS"/>
+            <xs:enumeration value="NON_GETTER_METHODS"/>
+            <xs:enumeration value="GETTER_METHODS"/>
+            <xs:enumeration value="ALL"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="propertyType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute name="name" use="required" type="xs:string"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:simpleType name="versionType">
+    <xs:restriction base="xs:token">
+      <xs:pattern value="[0-9]+(\.[0-9]+)*" />
+    </xs:restriction>
+  </xs:simpleType>
+</xs:schema>
\ No newline at end of file
diff --git a/bval-jsr/src/main/xsd/validation-mapping-3.1.xsd 
b/bval-jsr/src/main/xsd/validation-mapping-3.1.xsd
new file mode 100644
index 0000000..add4b00
--- /dev/null
+++ b/bval-jsr/src/main/xsd/validation-mapping-3.1.xsd
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<xs:schema attributeFormDefault="unqualified"
+           elementFormDefault="qualified"
+           targetNamespace="https://jakarta.ee/xml/ns/validation/mapping";
+           xmlns:xs="http://www.w3.org/2001/XMLSchema";
+           xmlns:map="https://jakarta.ee/xml/ns/validation/mapping";
+           version="3.1">
+
+  <xs:annotation>
+    <xs:documentation><![CDATA[
+            This is the XML Schema for Jakarta Validation constraint mapping 
files.
+
+            Jakarta Validation constraint mapping files must indicate the 
Jakarta Validation
+            XML schema by using the constraint mapping namespace:
+
+            https://jakarta.ee/xml/ns/validation/mapping
+
+            and indicate the version of the schema by using the version 
attribute
+            as shown below:
+
+            <constraint-mappings
+                xmlns="https://jakarta.ee/xml/ns/validation/mapping";
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                xsi:schemaLocation="
+                    https://jakarta.ee/xml/ns/validation/mapping
+                    
https://jakarta.ee/xml/ns/validation/validation-mapping-3.1.xsd";
+                version="3.1">
+                ...
+            </constraint-mappings>
+        ]]>
+    </xs:documentation>
+  </xs:annotation>
+
+  <xs:element name="constraint-mappings" type="map:constraint-mappingsType"/>
+
+  <xs:complexType name="payloadType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" 
minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="groupsType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" 
minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="groupSequenceType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" 
minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="groupConversionType">
+    <xs:attribute type="xs:string" name="from" use="optional"/>
+    <xs:attribute type="xs:string" name="to" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="constraint-mappingsType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="default-package" minOccurs="0"/>
+      <xs:element type="map:beanType"
+                  name="bean"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+      <xs:element type="map:constraint-definitionType"
+                  name="constraint-definition"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="version" type="map:versionType" fixed="3.0" 
use="required"/>
+  </xs:complexType>
+  <xs:simpleType name="versionType">
+    <xs:restriction base="xs:token">
+      <xs:pattern value="[0-9]+(\.[0-9]+)*"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:complexType name="validated-byType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" 
minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="include-existing-validators" 
use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="constraintType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="message" minOccurs="0"/>
+      <xs:element type="map:groupsType"
+                  name="groups"
+                  minOccurs="0"/>
+      <xs:element type="map:payloadType"
+                  name="payload"
+                  minOccurs="0"/>
+      <xs:element type="map:elementType"
+                  name="element"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="annotation" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="elementType" mixed="true">
+    <xs:sequence>
+      <xs:element type="xs:string" name="value" maxOccurs="unbounded" 
minOccurs="0"/>
+      <xs:element type="map:annotationType"
+                  name="annotation"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="name" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="containerElementTypeType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
+      <xs:element type="map:groupConversionType"
+                  name="convert-group"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:containerElementTypeType"
+                  name="container-element-type"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="type-argument-index" use="optional">
+      <xs:simpleType>
+        <xs:restriction base="xs:int">
+          <xs:minInclusive value="0" />
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="classType">
+    <xs:sequence>
+      <xs:element type="map:groupSequenceType"
+                  name="group-sequence"
+                  minOccurs="0"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="beanType">
+    <xs:sequence>
+      <xs:element type="map:classType"
+                  name="class"
+                  minOccurs="0">
+      </xs:element>
+      <xs:element type="map:fieldType"
+                  name="field"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:getterType"
+                  name="getter"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constructorType"
+                  name="constructor"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:methodType"
+                  name="method"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="class" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"
+                  default="true"/>
+  </xs:complexType>
+  <xs:complexType name="annotationType">
+    <xs:sequence>
+      <xs:element type="map:elementType"
+                  name="element"
+                  maxOccurs="unbounded"
+                  minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="getterType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
+      <xs:element type="map:groupConversionType"
+                  name="convert-group"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:containerElementTypeType"
+                  name="container-element-type"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="name" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="methodType">
+    <xs:sequence>
+      <xs:element type="map:parameterType"
+                  name="parameter"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:crossParameterType"
+                  name="cross-parameter"
+                  minOccurs="0"
+                  maxOccurs="1"/>
+      <xs:element type="map:returnValueType"
+                  name="return-value"
+                  minOccurs="0"
+                  maxOccurs="1"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="name" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="constructorType">
+    <xs:sequence>
+      <xs:element type="map:parameterType"
+                  name="parameter"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:crossParameterType"
+                  name="cross-parameter"
+                  minOccurs="0"
+                  maxOccurs="1"/>
+      <xs:element type="map:returnValueType"
+                  name="return-value"
+                  minOccurs="0"
+                  maxOccurs="1"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="parameterType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
+      <xs:element type="map:groupConversionType"
+                  name="convert-group"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:containerElementTypeType"
+                  name="container-element-type"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="type" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="returnValueType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
+      <xs:element type="map:groupConversionType"
+                  name="convert-group"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:containerElementTypeType"
+                  name="container-element-type"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="crossParameterType">
+    <xs:sequence>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="constraint-definitionType">
+    <xs:sequence>
+      <xs:element type="map:validated-byType"
+                  name="validated-by"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="annotation" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="fieldType">
+    <xs:sequence>
+      <xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
+      <xs:element type="map:groupConversionType"
+                  name="convert-group"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:containerElementTypeType"
+                  name="container-element-type"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+      <xs:element type="map:constraintType"
+                  name="constraint"
+                  minOccurs="0"
+                  maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute type="xs:string" name="name" use="required"/>
+    <xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git 
a/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java 
b/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
index 6f03070..a5fb1e2 100644
--- a/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
+++ b/bval-jsr/src/test/java/org/apache/bval/jsr/xml/ValidationParserTest.java
@@ -117,6 +117,14 @@ public class ValidationParserTest implements 
ApacheValidatorConfiguration.Proper
         assertEquals("org.apache.bval.jsr.xml.TestMessageInterpolator", 
configuration.getMessageInterpolatorClassName());
     }
 
+    @Test
+    public void testParseV31() {
+        ConfigurationImpl config = new ConfigurationImpl(null, new 
ApacheValidationProvider());
+        final BootstrapConfiguration configuration =
+            
validationParser.processValidationConfig("sample-validation31.xml", config);
+        assertEquals("org.apache.bval.jsr.xml.TestMessageInterpolator", 
configuration.getMessageInterpolatorClassName());
+    }
+
     @Test
     public void testConfigureFromXml() {
         ValidatorFactory factory = getFactory();
diff --git a/bval-jsr/src/test/resources/sample-validation31.xml 
b/bval-jsr/src/test/resources/sample-validation31.xml
new file mode 100644
index 0000000..3483835
--- /dev/null
+++ b/bval-jsr/src/test/resources/sample-validation31.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<validation-config
+  xmlns="https://jakarta.ee/xml/ns/validation/configuration";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/validation/configuration 
validation-configuration-3.1.xsd"
+  version="3.0"> <!-- Yes, the 3.1 spec XSD _really_ requires version to be 
set to 3.0 -->
+
+  
<default-provider>org.apache.bval.jsr.ApacheValidationProvider</default-provider>
+  
<message-interpolator>org.apache.bval.jsr.xml.TestMessageInterpolator</message-interpolator>
+  
<traversable-resolver>org.apache.bval.jsr.resolver.SimpleTraversableResolver</traversable-resolver>
+  
<constraint-validator-factory>org.apache.bval.jsr.xml.TestConstraintValidatorFactory</constraint-validator-factory>
+  <constraint-mapping>sample-constraints.xml</constraint-mapping>
+  <property name="test-prop">test-prop-value</property>
+</validation-config>
diff --git a/pom.xml b/pom.xml
index e6b2010..2c5fc41 100644
--- a/pom.xml
+++ b/pom.xml
@@ -339,7 +339,7 @@
             <dependency>
                 <groupId>jakarta.validation</groupId>
                 <artifactId>jakarta.validation-api</artifactId>
-                <version>3.1.0</version>
+                <version>3.1.1</version>
             </dependency>
 
             <!-- JPA2 spec required for JPA TraversableResolver support -->

Reply via email to