You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2007/04/22 13:42:36 UTC

svn commit: r531165 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultHighlighter.java

Author: mreutegg
Date: Sun Apr 22 04:42:35 2007
New Revision: 531165

URL: http://svn.apache.org/viewvc?view=rev&rev=531165
Log:
JCR-859: rep:excerpt() may return malformed XML

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultHighlighter.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultHighlighter.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultHighlighter.java?view=diff&rev=531165&r1=531164&r2=531165
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultHighlighter.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DefaultHighlighter.java Sun Apr 22 04:42:35 2007
@@ -28,6 +28,7 @@
 import org.apache.lucene.index.TermVectorOffsetInfo;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.Query;
+import org.apache.jackrabbit.util.Text;
 
 /**
  * This is an adapted version of the <code>FulltextHighlighter</code> posted in
@@ -212,7 +213,8 @@
                     if (skippedChars > surround) {
                         skippedChars = surround;
                     }
-                    sb.append(cbuf, 0, surround - skippedChars);
+                    sb.append(Text.encodeIllegalXMLCharacters(
+                            new String(cbuf, 0, surround - skippedChars)));
                     sb.append(END_FRAGMENT_SEPARATOR);
                 }
             }
@@ -239,7 +241,8 @@
                 }
             }
 
-            sb.append(cbuf, skippedChars, cbuf.length - skippedChars);
+            sb.append(Text.encodeIllegalXMLCharacters(
+                    new String(cbuf, skippedChars, cbuf.length - skippedChars)));
 
             // iterate terms
             for (Iterator iter = fi.iterator(); iter.hasNext();) {
@@ -283,7 +286,8 @@
                 } else {
                     skippedChars = 0;
                 }
-                sb.append(cbuf, 0, EOF ? skip : (surround - skippedChars));
+                sb.append(Text.encodeIllegalXMLCharacters(
+                        new String(cbuf, 0, EOF ? skip : (surround - skippedChars))));
                 sb.append(END_FRAGMENT_SEPARATOR);
             }
         }