From 377b2fbd3e70745fa5ae0f569fc7579d8291f8d0 Mon Sep 17 00:00:00 2001 From: "Dr. Martin Goik" <goik@hdm-stuttgart.de> Date: Sat, 9 Feb 2019 21:04:39 +0100 Subject: [PATCH] Bug fix not reading XML test instances. --- .../mi/unitmarking/xsd/CreateTestClass.java | 22 +----- .../xsd/InstanceSetEvaluation.java | 72 +++++++++++-------- 2 files changed, 43 insertions(+), 51 deletions(-) diff --git a/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/CreateTestClass.java b/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/CreateTestClass.java index 73ca55273..ec8c8fd62 100644 --- a/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/CreateTestClass.java +++ b/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/CreateTestClass.java @@ -40,23 +40,13 @@ class CreateTestClass { Arrays.stream(new File(xmlTestFileDir).listFiles(path -> path.getPath().endsWith(".xml"))). sorted(Comparator.comparing(File::toString)). forEach(this::readTestHeader); - } private void readTestHeader(final File instanceFilename) { - final SAXBuilder metainfoParser = new SAXBuilder(XMLReaders.NONVALIDATING); - try { - final Document doc = metainfoParser.build(instanceFilename); - - final XPathExpression<ProcessingInstruction> searchHeader = - XPathFactory.instance().compile( - "/processing-instruction('xmlTest')", - Filters.processinginstruction()); - final List<ProcessingInstruction> xmlTestList = - searchHeader.evaluate(doc); + final List<ProcessingInstruction> xmlTestList = InstanceSetEvaluation.getProcessingInstructions(instanceFilename); - switch (xmlTestList.size()) { + switch (xmlTestList.size()) { case 0: log.info("No 'xmlTest PI found, possible dependency file"); break; @@ -65,14 +55,6 @@ class CreateTestClass { break; default: log.info("Found " + xmlTestList.size() + "' annotations in file '" + instanceFilename.getPath() + "'\n"); - } - - } catch (final JDOMException e) { - log.error("Document '" + instanceFilename.getPath() + - "' is invalid:", e); - log.error("Unable to parse document " + instanceFilename.getPath() + ": " + e + "\n"); - } catch (final IOException e) { - log.error("Unable to read document " + instanceFilename.getPath() + ": " + e + "\n"); } } diff --git a/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/InstanceSetEvaluation.java b/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/InstanceSetEvaluation.java index 6ab8111dc..4bdd400e5 100644 --- a/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/InstanceSetEvaluation.java +++ b/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/unitmarking/xsd/InstanceSetEvaluation.java @@ -2,6 +2,7 @@ package de.hdm_stuttgart.mi.unitmarking.xsd; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Vector; @@ -40,6 +41,33 @@ public class InstanceSetEvaluation { final StringBuffer messages = new StringBuffer(), errorMessages = new StringBuffer(); + /** + * Read the list of all processing instructions (PIs) of a given XML file. + * + * @param instanceFilename The xml source to be searched for PIs. + * @return The list of all PIs. + * + */ + static public List<ProcessingInstruction> getProcessingInstructions(final File instanceFilename) { + final SAXBuilder metainfoParser = new SAXBuilder(XMLReaders.NONVALIDATING); + try { + final Document doc = metainfoParser.build(instanceFilename); + + final XPathExpression<ProcessingInstruction> searchHeader = + XPathFactory.instance().compile( + "/processing-instruction('xmlTest')", + Filters.processinginstruction()); + return searchHeader.evaluate(doc); + } catch (final JDOMException e) { + log.error("Document '" + instanceFilename.getPath() + + "' is invalid:", e); + warnings.append("Unable to parse document " + instanceFilename.getPath() + ": " + e + "\n"); + } catch (final IOException e) { + warnings.append("Unable to read document " + instanceFilename.getPath() + ": " + e + "\n"); + } + return new ArrayList<>(); + } + /** * @return Individual failed test(s) error message(s). */ @@ -102,37 +130,19 @@ public class InstanceSetEvaluation { } - void readTestHeader(final File instanceFilename, final String xsdSchemaFilename) { -// final SAXBuilder metainfoParser = new SAXBuilder(XMLReaders.NONVALIDATING); -// try { -// final Document doc = metainfoParser.build(instanceFilename); -// -// final XPathExpression<ProcessingInstruction> searchHeader = -// XPathFactory.instance().compile( -// "/processing-instruction('xmlTest')", -// Filters.processinginstruction()); -// final List<ProcessingInstruction> xmlTestList = -// searchHeader.evaluate(doc); -// -// switch (xmlTestList.size()) { -// case 0: -// log.info("No 'xmlTest PI found, possible dependency file"); -// break; -// case 1: -// tests.add(new InstanceTest(xmlTestList.get(0), xmlTestFileDir, xsdSchemaFilename, instanceFilename)); -// break; -// default: -// warnings.append("Found " + xmlTestList.size() + "' annotations in file '" + instanceFilename.getPath() + "'\n"); -// } -// -// } catch (final JDOMException e) { -// log.error("Document '" + instanceFilename.getPath() + -// "' is invalid:", e); -// warnings.append("Unable to parse document " + instanceFilename.getPath() + ": " + e + "\n"); -// } catch (final IOException e) { -// warnings.append("Unable to read document " + instanceFilename.getPath() + ": " + e + "\n"); -// } + final List<ProcessingInstruction> xmlTestList = getProcessingInstructions(instanceFilename); + + switch (xmlTestList.size()) { + case 0: + log.info("No 'xmlTest PI found, possible dependency file"); + break; + case 1: + tests.add(new InstanceTest(xmlTestList.get(0), xmlTestFileDir, xsdSchemaFilename, instanceFilename)); + break; + default: + warnings.append("Found " + xmlTestList.size() + "' annotations in file '" + instanceFilename.getPath() + "'\n"); + } } -} +} \ No newline at end of file -- GitLab