diff --git a/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java b/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java index 3c090c0498949db7b6166a9414e7b9dbcbc5a6df..1345498efa6091cbe6f8e065e4c97ab1c227566c 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java +++ b/src/main/java/de/tudresden/inf/st/pnml/PnmlParser.java @@ -37,22 +37,18 @@ public class PnmlParser { * @param fileName the file name of a *.pnml file * @return a list of Petri nets */ - public static List<PetriNet> parsePnml(String fileName) { + public static List<PetriNet> parsePnml(String fileName) throws PnmlParseException { Path file = Paths.get(fileName); HLAPIRootClass document = null; try { document = PNMLUtils.importPnmlDocument(file.toFile(), false); - - logger.info(document.toPNML()); + logger.debug(document.toPNML()); } catch (ImportException | InvalidIDException e) { - logger.error("Unable to import PNML document from file '{}'", fileName); - logger.error("Exception was thrown!", e); - System.exit(-1); + throw new PnmlParseException("Unable to import PNML document from file '" + fileName + "'", e); } - logger.info("Imported document workspace ID: {}", ModelRepository.getInstance().getCurrentDocWSId()); List<PetriNet> petriNets = new ArrayList<>(); @@ -60,18 +56,12 @@ public class PnmlParser { fr.lip6.move.pnml.framework.general.PNType type = PNMLUtils.determinePNType(document); switch (type) { case PTNET: - PetriNetDocHLAPI ptDoc = - (PetriNetDocHLAPI) document; - + PetriNetDocHLAPI ptDoc = (PetriNetDocHLAPI) document; for (fr.lip6.move.pnml.ptnet.PetriNet pmnlNet : ptDoc.getNets()) { PnmlParser parser; - try { - parser = new PnmlParser(pmnlNet); - petriNets.add(parser.getPetriNet()); - } catch (PnmlParseException e) { - logger.error("Parsing the Petri net using the PNML framework failed.", e); - } + parser = new PnmlParser(pmnlNet); + petriNets.add(parser.getPetriNet()); } break; @@ -80,7 +70,7 @@ public class PnmlParser { case HLPN: case PTHLPN: default: - logger.error("Petri net is of unsupported type {}.", type.getLiteral()); + throw new PnmlParseException("Petri net is of unsupported type " + type.getLiteral() + "."); } return petriNets; } diff --git a/src/test/java/de/tudresden/inf/st/pnml/PnmlTest.java b/src/test/java/de/tudresden/inf/st/pnml/PnmlTest.java index d94e599176387d0b9f4b28eae6887e74e6ec77f8..4c058a0ef11b2ee3de556819fa852f4e26852302 100644 --- a/src/test/java/de/tudresden/inf/st/pnml/PnmlTest.java +++ b/src/test/java/de/tudresden/inf/st/pnml/PnmlTest.java @@ -2,6 +2,7 @@ package de.tudresden.inf.st.pnml; import de.tudresden.inf.st.pnml.jastadd.model.PNType; import de.tudresden.inf.st.pnml.jastadd.model.PetriNet; +import de.tudresden.inf.st.pnml.jastadd.model.PnmlParseException; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.slf4j.Logger; @@ -17,7 +18,7 @@ class PnmlTest { @ParameterizedTest @ValueSource(strings = {"src/test/resources/minimal.pnml", "src/test/resources/philo.pnml", "src/test/resources/haddadin_automaton_flat.pnml"}) - void parsePnml(String fileName) { + void parsePnml(String fileName) throws PnmlParseException { List<PetriNet> result = PnmlParser.parsePnml(fileName); assertThat(result).asList() .isNotEmpty()