diff --git a/java/org/slub/rosetta/dps/repository/plugin/Validation/SLUBValidateDTD.java b/java/org/slub/rosetta/dps/repository/plugin/Validation/SLUBValidateDTD.java index 5ab4812d855587251a8b9ee8da07d92b62faa072..c7481d8796966a05d66966fe29911f94ff90c7b8 100644 --- a/java/org/slub/rosetta/dps/repository/plugin/Validation/SLUBValidateDTD.java +++ b/java/org/slub/rosetta/dps/repository/plugin/Validation/SLUBValidateDTD.java @@ -1,9 +1,7 @@ package org.slub.rosetta.dps.repository.plugin.Validation; +import org.slub.rosetta.dps.repository.plugin.SLUBXmlErrorHandler; import org.slub.rosetta.dps.repository.plugin.ValidationCatalogResolver; -import org.xml.sax.ErrorHandler; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; @@ -11,36 +9,15 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; public class SLUBValidateDTD { - private boolean is_valid = true; - private final List<String> errors = new ArrayList<>(); - public List<String> get_errors() { - return errors; - } private final ValidationCatalogResolver validationCatalogResolver; + private final SLUBXmlErrorHandler slubXmlErrorHandler; - public SLUBValidateDTD(ValidationCatalogResolver catalogResolver) { + public SLUBValidateDTD(ValidationCatalogResolver catalogResolver, SLUBXmlErrorHandler slubXmlErrorHandler) { this.validationCatalogResolver = catalogResolver; + this.slubXmlErrorHandler = slubXmlErrorHandler; } - private final ErrorHandler validationErrorHandler = new ErrorHandler() { - @Override - public void warning(SAXParseException e) { - errors.add("[WW] "+ e.getMessage()); - } - @Override - public void error(SAXParseException e) { - is_valid = false; - errors.add("[EE] "+e.getMessage() + " line=" + e.getLineNumber() + " col=" + e.getColumnNumber()); - } - @Override - public void fatalError(SAXParseException e) { - is_valid = false; - errors.add("[EE] Fatal, "+e.getMessage() + " line=" + e.getLineNumber() + " col=" + e.getColumnNumber()); - } - }; private final DocumentBuilderFactory dbf = DocumentBuilderFactory.newDefaultNSInstance(); public boolean validateAgainst(String filePath) throws IOException, ParserConfigurationException { dbf.setValidating(true); @@ -49,19 +26,23 @@ public class SLUBValidateDTD { //dbf.setAttribute("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); // MATHML 2.0 triggers an error if enabled dbf.setAttribute(XMLConstants.FEATURE_SECURE_PROCESSING, true); dbf.setIgnoringElementContentWhitespace(true); - dbf.setValidating(true); - + dbf.setNamespaceAware(true); DocumentBuilder dbValidate = dbf.newDocumentBuilder(); + assert(dbValidate.isValidating()); //reportDetail("align entitity resolver"); dbValidate.setEntityResolver(validationCatalogResolver); - dbValidate.setErrorHandler(validationErrorHandler); + dbValidate.setErrorHandler(slubXmlErrorHandler); + //reportDetail("reparse using own catalog"); + try { dbValidate.parse(new File(filePath)); - } catch ( SAXException e ) { - errors.add( e.getMessage()); - is_valid = false; + //} catch (SAXException e) { + } catch (Exception e) { + System.out.println("ERROR: " + e.getMessage()); } - return is_valid; + return slubXmlErrorHandler.is_Valid(); + } + } diff --git a/java/org/slub/rosetta/dps/repository/plugin/Validation/SLUBValidateSchema.java b/java/org/slub/rosetta/dps/repository/plugin/Validation/SLUBValidateSchema.java index c690173ce4eadf2760e536a2503f187e147aa24b..7a4c9333f44e6106b4e787bb862b791143cb1144 100644 --- a/java/org/slub/rosetta/dps/repository/plugin/Validation/SLUBValidateSchema.java +++ b/java/org/slub/rosetta/dps/repository/plugin/Validation/SLUBValidateSchema.java @@ -3,9 +3,7 @@ package org.slub.rosetta.dps.repository.plugin.Validation; import org.apache.xerces.jaxp.validation.XMLSchemaFactory; import org.slub.rosetta.dps.repository.plugin.ValidationResourceResolver; import org.w3c.dom.Node; -import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; import javax.xml.XMLConstants; import javax.xml.transform.dom.DOMSource; @@ -14,35 +12,14 @@ import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import java.io.IOException; import java.net.URI; -import java.util.ArrayList; -import java.util.List; public class SLUBValidateSchema { - private boolean is_valid = true; - private final List<String> errors = new ArrayList<>(); - public List<String> get_errors() { - return errors; - } + private ValidationResourceResolver validationResourceResolver; public SLUBValidateSchema(ValidationResourceResolver validationResourceResolver) { this.validationResourceResolver = validationResourceResolver; } - private final ErrorHandler validationErrorHandler = new ErrorHandler() { - @Override - public void warning(SAXParseException e) { - errors.add("[WW] "+ e.getMessage()); - } - @Override - public void error(SAXParseException e) { - is_valid = false; - errors.add("[EE] "+e.getMessage() + " line=" + e.getLineNumber() + " col=" + e.getColumnNumber()); - } - @Override - public void fatalError(SAXParseException e) { - is_valid = false; - errors.add("[EE] Fatal, "+e.getMessage() + " line=" + e.getLineNumber() + " col=" + e.getColumnNumber()); - } - }; + public boolean validateAgainst(Node docvalidate, URI xsdUri) throws IOException { boolean isValidXml = false; try { @@ -60,12 +37,14 @@ public class SLUBValidateSchema { isValidXml = true; } catch (SAXException e) { System.out.println( e.getMessage() ); + /* errors.add( e.getMessage() ); if (e.getMessage().contains("Premature end of file")) { errors.add("Hint: if a 'premature end of file' error occured the reason could be:"); errors.add(" * the URL is moved permanently or"); errors.add(" * protocol is changed from http to https!"); } + */ e.printStackTrace(); } return isValidXml;