Repository: bval
Updated Branches:
  refs/heads/bv2 65de71211 -> f69d9b973


refactor XML schema version handling to require non-blank version/ns, map empty 
version to lowest occurring key; exception on unrecognized version/ns 
combination


Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/85ea6c6a
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/85ea6c6a
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/85ea6c6a

Branch: refs/heads/bv2
Commit: 85ea6c6a67dd5773d109134ecf8aaf55a65e2634
Parents: 65de712
Author: Matt Benson <[email protected]>
Authored: Tue Mar 27 15:58:19 2018 -0500
Committer: Matt Benson <[email protected]>
Committed: Tue Mar 27 15:58:19 2018 -0500

----------------------------------------------------------------------
 .../org/apache/bval/jsr/xml/SchemaManager.java  | 31 +++++++++++++-------
 .../bval/jsr/xml/ValidationMappingParser.java   |  3 +-
 .../apache/bval/jsr/xml/ValidationParser.java   |  2 +-
 3 files changed, 23 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bval/blob/85ea6c6a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/SchemaManager.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/SchemaManager.java 
b/bval-jsr/src/main/java/org/apache/bval/jsr/xml/SchemaManager.java
index 5a79b63..9e984bd 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/SchemaManager.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/xml/SchemaManager.java
@@ -29,6 +29,7 @@ import java.util.function.Function;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.validation.ValidationException;
 import javax.xml.XMLConstants;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
@@ -38,7 +39,10 @@ import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 import javax.xml.validation.ValidatorHandler;
 
+import org.apache.bval.util.Exceptions;
 import org.apache.bval.util.Lazy;
+import org.apache.bval.util.StringUtils;
+import org.apache.bval.util.Validate;
 import org.apache.bval.util.reflection.Reflection;
 import org.w3c.dom.Document;
 import org.xml.sax.Attributes;
@@ -75,8 +79,10 @@ public class SchemaManager {
 
         Key(String version, String ns) {
             super();
-            this.version = Objects.toString(version, "");
-            this.ns = Objects.toString(ns, "");
+            Validate.isTrue(StringUtils.isNotBlank(version), "version cannot 
be null/empty/blank");
+            this.version = version;
+            Validate.isTrue(StringUtils.isNotBlank(ns), "ns cannot be 
null/empty/blank");
+            this.ns = ns;
         }
 
         public String getVersion() {
@@ -126,14 +132,16 @@ public class SchemaManager {
         @Override
         public void startElement(String uri, String localName, String qName, 
Attributes atts) throws SAXException {
             if (getContentHandler() == ch) {
-                final Key schemaKey = new 
Key(Objects.toString(atts.getValue("version"), ""), uri);
-                if (data.containsKey(schemaKey)) {
-                    final Schema schema = data.get(schemaKey).get();
-                    final ValidatorHandler vh = schema.newValidatorHandler();
-                    vh.startDocument();
-                    vh.setContentHandler(ch);
-                    super.setContentHandler(vh);
-                }
+                final String version = 
Objects.toString(atts.getValue("version"), data.firstKey().getVersion());
+                final Key schemaKey = new Key(version, uri);
+                Exceptions.raiseUnless(data.containsKey(schemaKey), 
ValidationException::new,
+                    "Unknown validation schema %s", schemaKey);
+
+                final Schema schema = data.get(schemaKey).get();
+                final ValidatorHandler vh = schema.newValidatorHandler();
+                vh.startDocument();
+                vh.setContentHandler(ch);
+                super.setContentHandler(vh);
             }
             try {
                 super.startElement(uri, localName, qName, atts);
@@ -172,7 +180,8 @@ public class SchemaManager {
 
         @Override
         public void startElement(String uri, String localName, String qName, 
Attributes atts) throws SAXException {
-            final Key schemaKey = new 
Key(Objects.toString(atts.getValue("version"), ""), uri);
+            final Key schemaKey =
+                new Key(Objects.toString(atts.getValue("version"), 
data.firstKey().getVersion()), uri);
 
             if (!target.equals(schemaKey) && data.containsKey(schemaKey)) {
                 uri = target.ns;

http://git-wip-us.apache.org/repos/asf/bval/blob/85ea6c6a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationMappingParser.java
----------------------------------------------------------------------
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 16ab75d..8584c28 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
@@ -44,7 +44,8 @@ import org.xml.sax.InputSource;
 @Privilizing(@CallTo(Reflection.class))
 public class ValidationMappingParser implements MetadataSource {
     private static final SchemaManager SCHEMA_MANAGER = new 
SchemaManager.Builder()
-        .add(null, "http://jboss.org/xml/ns/javax/validation/mapping";, 
"META-INF/validation-mapping-1.0.xsd")
+        .add(XmlBuilder.Version.v10.getId(), 
"http://jboss.org/xml/ns/javax/validation/mapping";,
+            "META-INF/validation-mapping-1.0.xsd")
         .add(XmlBuilder.Version.v11.getId(), 
"http://jboss.org/xml/ns/javax/validation/mapping";,
             "META-INF/validation-mapping-1.1.xsd")
         .add(XmlBuilder.Version.v20.getId(), 
"http://xmlns.jcp.org/xml/ns/validation/mapping";,

http://git-wip-us.apache.org/repos/asf/bval/blob/85ea6c6a/bval-jsr/src/main/java/org/apache/bval/jsr/xml/ValidationParser.java
----------------------------------------------------------------------
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 6402971..e37253c 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
@@ -57,7 +57,7 @@ public class ValidationParser {
     private static final Logger log = 
Logger.getLogger(ValidationParser.class.getName());
 
     private static final SchemaManager SCHEMA_MANAGER = new 
SchemaManager.Builder()
-        .add(null, "http://jboss.org/xml/ns/javax/validation/configuration";,
+        .add(XmlBuilder.Version.v10.getId(), 
"http://jboss.org/xml/ns/javax/validation/configuration";,
             "META-INF/validation-configuration-1.0.xsd")
         .add(XmlBuilder.Version.v11.getId(), 
"http://jboss.org/xml/ns/javax/validation/configuration";,
             "META-INF/validation-configuration-1.1.xsd")

Reply via email to