From 94658b2be0f97f17638e445d94a7069f5f7e05c0 Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Tue, 18 Jul 2023 14:46:03 +0200
Subject: [PATCH] - added external errorhandler - simplified code

---
 .../Validation/TestSLUBValidateDTD.java       | 46 ++++++++++++++++---
 .../Validation/TestSLUBValidateSchema.java    | 19 +++-----
 2 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/java/org/slub/rosetta/dps/repository/plugin/Validation/TestSLUBValidateDTD.java b/java/org/slub/rosetta/dps/repository/plugin/Validation/TestSLUBValidateDTD.java
index df89537..b04e8e0 100644
--- a/java/org/slub/rosetta/dps/repository/plugin/Validation/TestSLUBValidateDTD.java
+++ b/java/org/slub/rosetta/dps/repository/plugin/Validation/TestSLUBValidateDTD.java
@@ -3,6 +3,7 @@ package org.slub.rosetta.dps.repository.plugin.Validation;
 import org.junit.Before;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
+import org.slub.rosetta.dps.repository.plugin.SLUBXmlErrorHandler;
 import org.slub.rosetta.dps.repository.plugin.ValidationCatalogResolver;
 
 import java.util.ArrayList;
@@ -37,7 +38,8 @@ public class TestSLUBValidateDTD {
         };
         List<String> errors = new ArrayList<>();
         ValidationCatalogResolver validationCatalogResolver = new ValidationCatalogResolver(catalogs, errors, true);
-        var v = new SLUBValidateDTD( validationCatalogResolver );
+        SLUBXmlErrorHandler errorHandler = new SLUBXmlErrorHandler();
+        var v = new SLUBValidateDTD( validationCatalogResolver, errorHandler );
         assertNotNull( "validator DTD sucessfully instantiated", v);
         var has_exception = false;
         boolean res = false;
@@ -51,6 +53,29 @@ public class TestSLUBValidateDTD {
         assertFalse( has_exception );
         assertFalse( res);
     }
+    @org.junit.Test
+    public void dtd_invalid2() {
+        String[] catalogs = new String[] {
+                initp.get("catalog")
+        };
+        List<String> errors = new ArrayList<>();
+        ValidationCatalogResolver validationCatalogResolver = new ValidationCatalogResolver(catalogs, errors, true);
+        SLUBXmlErrorHandler errorHandler = new SLUBXmlErrorHandler();
+        var v = new SLUBValidateDTD( validationCatalogResolver, errorHandler );
+        assertNotNull( "validator DTD sucessfully instantiated", v);
+        var has_exception = false;
+        boolean res = false;
+        try {
+            var doc = "resources/test/invalid/xhtml/xhtml11-sample.invalid.xml";
+            res = v.validateAgainst(doc);
+            System.out.println("validating " + doc + " resulting in " + res);
+        } catch ( Exception e) {
+            has_exception = true;
+        }
+        assertFalse( has_exception );
+        assertFalse( res);
+    }
+
 
     @org.junit.Test
     /** regression:  Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.Map.containsKey(Object)" because "this.fTableOfIDAttributeNames" is null */
@@ -61,14 +86,16 @@ public class TestSLUBValidateDTD {
 
         List<String> errors = new ArrayList<>();
         ValidationCatalogResolver validationCatalogResolver = new ValidationCatalogResolver(catalogs, errors, true);
-        var v = new SLUBValidateDTD( validationCatalogResolver );
+        SLUBXmlErrorHandler errorHandler = new SLUBXmlErrorHandler();
+        var v = new SLUBValidateDTD( validationCatalogResolver, errorHandler );
         assertNotNull( "validator DTD sucessfully instantiated", v);
         var has_exception = false;
         boolean res = false;
         try {
             var doc = "resources/test/valid/mathml/mathml1.example1.xml";
             res = v.validateAgainst(doc);
-            System.out.println("validating " + doc + " resulting in " + res+ " :" + v.get_errors());
+            System.out.println("validating " + doc + " resulting in " + res);
+
         } catch ( Exception e) {
             e.printStackTrace();
             has_exception = true;
@@ -85,14 +112,17 @@ public class TestSLUBValidateDTD {
         };
         List<String> errors = new ArrayList<>();
         ValidationCatalogResolver validationCatalogResolver = new ValidationCatalogResolver(catalogs, errors, true);
-        var v = new SLUBValidateDTD( validationCatalogResolver );
+        SLUBXmlErrorHandler errorHandler = new SLUBXmlErrorHandler();
+        var v = new SLUBValidateDTD( validationCatalogResolver , errorHandler);
         assertNotNull( "validator DTD sucessfully instantiated", v);
         var has_exception = false;
         boolean res = false;
         try {
             var doc = "resources/test/valid/mathml/mathml2.example1.xml";
             res = v.validateAgainst(doc);
-            System.out.println("validating " + doc + " resulting in " + res+ " :" + v.get_errors());
+            System.out.println("validating " + doc + " resulting in " + res);
+            System.out.println("RES: " + errorHandler.get_log() );
+
         } catch ( Exception e) {
             e.printStackTrace();
             has_exception = true;
@@ -108,7 +138,8 @@ public class TestSLUBValidateDTD {
         String[] catalogs = new String[0];
         List<String> errors = new ArrayList<>();
         ValidationCatalogResolver validationCatalogResolver = new ValidationCatalogResolver(catalogs, errors, true);
-        var v = new SLUBValidateDTD( validationCatalogResolver );
+        SLUBXmlErrorHandler errorHandler = new SLUBXmlErrorHandler();
+        var v = new SLUBValidateDTD( validationCatalogResolver, errorHandler );
         assertNotNull( "validator DTD sucessfully instantiated", v);
         var has_exception = false;
         boolean res = false;
@@ -132,7 +163,8 @@ public class TestSLUBValidateDTD {
         };
         List<String> errors = new ArrayList<>();
         ValidationCatalogResolver validationCatalogResolver = new ValidationCatalogResolver(catalogs, errors, true);
-        var v = new SLUBValidateDTD( validationCatalogResolver );
+        SLUBXmlErrorHandler errorHandler = new SLUBXmlErrorHandler();
+        var v = new SLUBValidateDTD( validationCatalogResolver, errorHandler );
         assertNotNull( "validator DTD sucessfully instantiated", v);
         var has_exception = false;
         boolean res = false;
diff --git a/java/org/slub/rosetta/dps/repository/plugin/Validation/TestSLUBValidateSchema.java b/java/org/slub/rosetta/dps/repository/plugin/Validation/TestSLUBValidateSchema.java
index 0b731e2..51ff0bd 100644
--- a/java/org/slub/rosetta/dps/repository/plugin/Validation/TestSLUBValidateSchema.java
+++ b/java/org/slub/rosetta/dps/repository/plugin/Validation/TestSLUBValidateSchema.java
@@ -10,10 +10,8 @@ import org.slub.rosetta.dps.repository.plugin.ValidationSchema;
 import java.io.File;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -53,8 +51,8 @@ public class TestSLUBValidateSchema {
 
     @org.junit.Test
     public void schema_valid() {
-        List<String> errors = new ArrayList<>();
-        ValidationResourceResolver validationResourceResolver = new ValidationResourceResolver(mock.getNamespaceSchemaMap(), errors, true);
+
+        ValidationResourceResolver validationResourceResolver = new ValidationResourceResolver(mock.getNamespaceSchemaMap(), true);
         var v = new SLUBValidateSchema(validationResourceResolver);
         assertNotNull( "validator schema sucessfully instantiated", v);
         var has_exception = false;
@@ -72,8 +70,7 @@ public class TestSLUBValidateSchema {
 
     @org.junit.Test
     public void schema_invalid() {
-        List<String> errors = new ArrayList<>();
-        ValidationResourceResolver validationResourceResolver = new ValidationResourceResolver(mock.getNamespaceSchemaMap(), errors, true);
+        ValidationResourceResolver validationResourceResolver = new ValidationResourceResolver(mock.getNamespaceSchemaMap(), true);
         var v = new SLUBValidateSchema(validationResourceResolver);
         assertNotNull( "validator schema sucessfully instantiated", v);
         var has_exception = false;
@@ -92,19 +89,15 @@ public class TestSLUBValidateSchema {
 
     @org.junit.Test
     public void check_import_regression() {
-        List<String> errors = new ArrayList<>();
         Set<ValidationSchema> nssm  = new HashSet<>();
         Set<ValidationSchema> old = mock.getNamespaceSchemaMap();
-
-        var i = old.iterator();
-        while (i.hasNext()) { // filter Atoim out to trigger error
-            var val = i.next();
-            System.out.println("###### " +  val.nameSpace);
+        for (ValidationSchema val : old) { // filter Atoim out to trigger error
+            System.out.println("###### " + val.nameSpace);
             if (!val.nameSpace.equals("http://www.w3.org/2005/Atom")) {
                 nssm.add(val);
             }
         }
-        ValidationResourceResolver validationResourceResolver = new ValidationResourceResolver(nssm, errors, true);
+        ValidationResourceResolver validationResourceResolver = new ValidationResourceResolver(nssm,  true);
         var v = new SLUBValidateSchema(validationResourceResolver);
         assertNotNull( "validator schema sucessfully instantiated", v);
         var has_exception = false;
-- 
GitLab