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")
