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