From a9740fef61108c68642fbeb283c691b178a03af7 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 20 Apr 2018 15:50:16 +0200 Subject: [PATCH] when exporting notes to sbml, the notes string is escaped first --- .../converter/model/sbml/SbmlBioEntityExporter.java | 3 ++- .../converter/model/sbml/SbmlExporterTest.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java index b4bc5cab6f..6566226645 100644 --- a/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java +++ b/converter-sbml/src/main/java/lcsb/mapviewer/converter/model/sbml/SbmlBioEntityExporter.java @@ -6,6 +6,7 @@ import java.util.Map; import javax.xml.stream.XMLStreamException; +import org.apache.commons.lang3.StringEscapeUtils; import org.apache.log4j.Logger; import org.sbml.jsbml.Model; import org.sbml.jsbml.ext.layout.AbstractReferenceGlyph; @@ -72,7 +73,7 @@ public abstract class SbmlBioEntityExporter<T extends BioEntity, S extends org.s } sbmlElement.setName(element.getName()); try { - sbmlElement.setNotes(element.getNotes()); + sbmlElement.setNotes(StringEscapeUtils.escapeXml(element.getNotes())); } catch (XMLStreamException e) { throw new InvalidStateException(e); } diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java index 65569d1d9c..3d6832feed 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/SbmlExporterTest.java @@ -261,4 +261,17 @@ public class SbmlExporterTest { assertEquals(0, comparator.compare(model, model2)); } + + @Test + public void testExportProblematicNotes() throws Exception { + Model model = createModelWithReaction(); + Reaction reaction = model.getReactions().iterator().next(); + reaction.setNotes("X=Y<Z"); + + Model deserializedModel = getModelAfterSerializing(model); + Reaction deserializedReaction = deserializedModel.getReactions().iterator().next(); + + assertEquals(reaction.getNotes(), deserializedReaction.getNotes()); + + } } -- GitLab