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