From 467d2470561e2b99548656ed9782b20265b33841 Mon Sep 17 00:00:00 2001 From: Martin Goik <goik@hdm-stuttgart.de> Date: Sun, 11 Dec 2016 19:47:50 +0100 Subject: [PATCH] Providing qualified test failure message in case of invalid schema files --- .../mi/unitmarking/xsd/InstanceTest.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/ws/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/InstanceTest.java b/ws/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/InstanceTest.java index ee68fe15f..1a12ee458 100644 --- a/ws/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/InstanceTest.java +++ b/ws/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/InstanceTest.java @@ -16,6 +16,7 @@ import org.jdom2.input.SAXBuilder; import org.jdom2.input.sax.XMLReaderSAX2Factory; import org.jdom2.input.sax.XMLReaders; import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; /** * Test and evaluate an individual XML instance. @@ -23,6 +24,7 @@ import org.xml.sax.SAXException; */ public class InstanceTest { + private static Logger log = LogManager.getLogger(InstanceTest.class); final SAXBuilder parser = new SAXBuilder(XMLReaders.XSDVALIDATING); final SAXBuilder b = new SAXBuilder(new XMLReaderSAX2Factory(false)); @@ -56,8 +58,6 @@ public class InstanceTest { */ public final Optional<String> errMsg; - private static Logger log = LogManager.getLogger(InstanceTest.class); - @Override public String toString() { @@ -89,11 +89,13 @@ public class InstanceTest { try { s = sf.newSchema (new File(xsdSchemaFilename)); validator = s.newValidator(); - } catch (SAXException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - + } catch (final SAXParseException e) { + System.err.println(getErrorDescription(e)); + System.exit(1); + } catch (SAXException e) { + System.err.println(getErrorDescription(e, xsdSchemaFilename)); + System.exit(1); + } this.instanceFilename = xmlInstance; @@ -161,4 +163,14 @@ public class InstanceTest { } } + static String getErrorDescription(final SAXParseException e) { + return "Your schema cannot be parsed:\n" + + e.getSystemId() + ", line " + e.getLineNumber() + ", column " + e.getLineNumber() + ": " + e.getLocalizedMessage() + + "\nThis may indicate your document is not well-formed\n\nAborting!\n\n\n"; + } + static String getErrorDescription(final SAXException e, final String fileName) { + return "Your schema " + fileName + " cannot be parsed:\n" + + e.getLocalizedMessage() + + "\nAre you using non-standard features?\n\nAborting!\n\n\n"; + } } -- GitLab