From 92966b8590deb0d30f0c9be8b375166deeb9607c Mon Sep 17 00:00:00 2001 From: Jordan Padams Date: Wed, 24 Jan 2024 12:21:23 -0800 Subject: [PATCH] Update conversion of URL to path to support Windows When using Path.of() we need to pass a URI on a Windows machine, not the Path. Resolves #809 --- .../validate/CrossLabelFileAreaReferenceChecker.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/gov/nasa/pds/tools/validate/CrossLabelFileAreaReferenceChecker.java b/src/main/java/gov/nasa/pds/tools/validate/CrossLabelFileAreaReferenceChecker.java index 1a70e85d1..d7a8c9ee9 100644 --- a/src/main/java/gov/nasa/pds/tools/validate/CrossLabelFileAreaReferenceChecker.java +++ b/src/main/java/gov/nasa/pds/tools/validate/CrossLabelFileAreaReferenceChecker.java @@ -1,6 +1,7 @@ package gov.nasa.pds.tools.validate; import java.io.IOException; +import java.net.URISyntaxException; import java.nio.file.Path; import java.util.Arrays; import java.util.HashMap; @@ -14,9 +15,9 @@ public class CrossLabelFileAreaReferenceChecker { final private static HashMap> knownRefs = new HashMap>(); - private static String resolve (String name, ValidationTarget target) { + private static String resolve (String name, ValidationTarget target) throws URISyntaxException { if (!name.startsWith ("/")) { - name = Path.of(target.getUrl().getPath()).getParent().resolve(name).toString(); + name = Path.of(target.getUrl().toURI()).getParent().resolve(name).toString(); } return name; } @@ -30,8 +31,9 @@ private static String resolve (String name, ValidationTarget target) { * @throws IOException * @throws ParserConfigurationException * @throws SAXException + * @throws URISyntaxException */ - public static boolean add (String name, ValidationTarget target) throws IOException, ParserConfigurationException, SAXException { + public static boolean add (String name, ValidationTarget target) throws IOException, ParserConfigurationException, SAXException, URISyntaxException { boolean success = false; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); Document xml = dbf.newDocumentBuilder().parse(target.getUrl().openStream()); @@ -49,10 +51,10 @@ public static boolean add (String name, ValidationTarget target) throws IOExcept } return success; } - public static String getOtherId (String name, ValidationTarget target) { + public static String getOtherId (String name, ValidationTarget target) throws URISyntaxException { return knownRefs.get(resolve(name, target)).get(0); } - public static String getOtherFilename (String name, ValidationTarget target) { + public static String getOtherFilename (String name, ValidationTarget target) throws URISyntaxException { return knownRefs.get(resolve(name, target)).get(1); } public static void reset() {