You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2016/06/10 15:24:36 UTC

svn commit: r1747734 - in /uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource: TreeWordList.java XMLEventHandler.java

Author: pkluegl
Date: Fri Jun 10 15:24:36 2016
New Revision: 1747734

URL: http://svn.apache.org/viewvc?rev=1747734&view=rev
Log:
UIMA-4784
- escape char for twl

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/XMLEventHandler.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java?rev=1747734&r1=1747733&r2=1747734&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/TreeWordList.java Fri Jun 10 15:24:36 2016
@@ -40,6 +40,7 @@ import javax.xml.parsers.ParserConfigura
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.uima.cas.FSIterator;
 import org.apache.uima.cas.text.AnnotationFS;
 import org.apache.uima.jcas.tcas.Annotation;
@@ -444,7 +445,8 @@ public class TreeWordList implements Rut
   }
 
   public void writeNode(Writer writer, TextNode node) throws IOException {
-    String output = "<node char=\"" + node.getValue() + "\" isWordEnd=\""
+    String value = StringEscapeUtils.escapeXml11(String.valueOf(node.getValue()));
+    String output = "<node char=\"" + value + "\" isWordEnd=\""
             + Boolean.toString(node.isWordEnd()) + "\">";
     writer.write(output);
     for (TextNode child : node.getChildren().values()) {

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/XMLEventHandler.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/XMLEventHandler.java?rev=1747734&r1=1747733&r2=1747734&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/XMLEventHandler.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/resource/XMLEventHandler.java Fri Jun 10 15:24:36 2016
@@ -21,6 +21,7 @@ package org.apache.uima.ruta.resource;
 
 import java.util.Stack;
 
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.DefaultHandler;
 
@@ -46,7 +47,10 @@ public class XMLEventHandler extends Def
   public void startElement(String namespaceURI, String localName, String qualifiedName,
           Attributes atts) {
     if ("node".equals(localName) || "node".equals(qualifiedName)) {
-      char c = atts.getValue("char").charAt(0);
+      String value = atts.getValue("char");
+      // unescaping should and is be done by the parser
+      String unescapeXml = StringEscapeUtils.unescapeXml(value);
+      char c = unescapeXml.charAt(0);
       boolean isWordEnd = Boolean.valueOf(atts.getValue("isWordEnd"));
       TextNode newNode = new TextNode(c, isWordEnd);
       stack.peek().addChild(newNode);