From cf8fd96f23ef1b76bcedcbc16e1fce2131479a59 Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Thu, 23 Feb 2023 11:10:42 +0100
Subject: [PATCH] - refactoring, more explicite type in ValidationSchema -
 added schemaInst assignment in ValidationSchema - added debug handling in
 initParams()

---
 .../plugin/SLUBXmlFormatValidationPlugin.java | 20 +++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlFormatValidationPlugin.java b/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlFormatValidationPlugin.java
index a1ac083..d6bf65e 100644
--- a/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlFormatValidationPlugin.java
+++ b/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlFormatValidationPlugin.java
@@ -33,6 +33,8 @@ import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import java.io.File;
 import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -84,8 +86,8 @@ public class SLUBXmlFormatValidationPlugin implements FormatValidationPlugin {
                     assert (attr_strings.get(1).equals("namespace"));
                     assert (attr_strings.get(2).equals("schemaurl"));
                     var namespace = attr_list.get(1);
-                    var url = attr_list.get(2);
-                    ValidationSchema v = new ValidationSchema(namespace, schematype, url);
+                    String url = attr_list.get(2);
+                    ValidationSchema v = new ValidationSchema(namespace, schematype, new URL(url));
                     namespaceSchemaMap.add(v);
                 } else {
                     log.error("invalid entry(" + i + ") in namespace schema map file " + namespaceSchemaMapFile);
@@ -130,6 +132,8 @@ public class SLUBXmlFormatValidationPlugin implements FormatValidationPlugin {
      * @param initp parameter map
      */
     public void initParams(Map<String, String> initp) {
+        var debugstr = initp.get("debug");
+        debug= (null != debugstr && debugstr.equals("true"));
         if (debug) {
             System.out.println(initp);
         }
@@ -168,7 +172,15 @@ public class SLUBXmlFormatValidationPlugin implements FormatValidationPlugin {
                 if (debug) {
                     System.out.println("found schema " + type);
                 }
-                var ele = new ValidationSchema(null, type, info.systemID);
+                ValidationSchema ele = null;
+                try {
+                    ele = new ValidationSchema(null, type, new URL(info.systemID));
+                } catch (SAXException | MalformedURLException e) {
+                    if (debug) {
+                        System.out.println( e.getMessage() );
+                    }
+                    log.error( e.getMessage() );
+                }
                 optEle = Optional.of(ele);
             }
         } else {
@@ -225,7 +237,7 @@ public class SLUBXmlFormatValidationPlugin implements FormatValidationPlugin {
                         if (debug) {
                             System.out.println("-> dtd detected, use catalog");
                         }
-                    } else if (!schema.get().schemaURL.isBlank()) {
+                    } else if (!schema.get().schemaURL.toString().isBlank()) {
                         if (debug) {
                             System.out.println("-> set schema to " + schema.get().schemaURL);
                         }
-- 
GitLab