You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by ti...@apache.org on 2010/01/05 02:59:10 UTC

svn commit: r895845 - /incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java

Author: tillw
Date: Tue Jan  5 01:59:09 2010
New Revision: 895845

URL: http://svn.apache.org/viewvc?rev=895845&view=rev
Log:
- escape HTML entities

Modified:
    incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java

Modified: incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java?rev=895845&r1=895844&r2=895845&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java (original)
+++ incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java Tue Jan  5 01:59:09 2010
@@ -252,13 +252,42 @@
                 + "\">&nbsp;&nbsp;&nbsp;</a>");
         resOut.println(queryDisplayName);
         resOut.println("<pre>");
-        // TODO need to escape HTML entities
         if (res.result != null) {
-            resOut.println(res.result);
+            resOut.println(escape(res.result));
         } else {
             res.error.printStackTrace(resOut);
         }
         resOut.println("</pre>");
         return queryDisplayName;
     }
+    
+    /* this should not be necessary anymore, when the XQuery serialization 
+     * works right
+     */
+    private static String escape(String s) {
+        final char[] ca = s.toCharArray();
+        final int l = ca.length;
+        int start = 0;
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < l; ++i) {
+            switch (ca[i]) {
+                case '<':
+                    sb.append(ca, start, i - start);
+                    sb.append("&lt;");
+                    start = i + 1;
+                    break;
+                case '>':
+                    sb.append(ca, start, i - start);
+                    sb.append("&gt;");
+                    start = i + 1;
+                    break;                    
+                case '&':
+                    sb.append(ca, start, i - start);
+                    sb.append("&amp;");
+                    start = i + 1;
+                    break;                
+            }
+        }
+        return start > 0 ? sb.toString() : s;   
+    }
 }
\ No newline at end of file