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 73ca55273c761387ff994e402ad01c5b228336c1..ec8c8fd62ae27c4be940e3fbdfdcbc172fb08251 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 6ab8111dc752afad532949f57ebfa66b53f8fc7c..4bdd400e5b6c1e05493c58c6645bb8e98574d776 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