svn commit: r1765807 - in /cocoon/subprojects/cocoon-serializers-charsets/trunk/src: main/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java test/java/org/apache/cocoon/components/serializers/encoding/XMLEncoderTest.java

[email protected]
Newsgroups gmane.text.xml.cocoon.cvs
Message-ID <[email protected]>
Author: ilgrosso
Date: Thu Oct 20 11:45:55 2016
New Revision: 1765807

URL: http://svn.apache.org/viewvc?rev=1765807&view=rev
Log:
[COCOON-2352] Third PR applied - This closes #3

Modified:
    cocoon/subprojects/cocoon-serializers-charsets/trunk/src/main/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java
    cocoon/subprojects/cocoon-serializers-charsets/trunk/src/test/java/org/apache/cocoon/components/serializers/encoding/XMLEncoderTest.java

Modified: cocoon/subprojects/cocoon-serializers-charsets/trunk/src/main/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java
URL: http://svn.apache.org/viewvc/cocoon/subprojects/cocoon-serializers-charsets/trunk/src/main/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java?rev=1765807&r1=1765806&r2=1765807&view=diff
==============================================================================
--- cocoon/subprojects/cocoon-serializers-charsets/trunk/src/main/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java (original)
+++ cocoon/subprojects/cocoon-serializers-charsets/trunk/src/main/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java Thu Oct 20 11:45:55 2016
@@ -97,12 +97,15 @@ public class XMLEncoder extends Compiled
             }
             int codePoint = Character.toCodePoint(highSurrogate, c);
             highSurrogate = null;
-            return encode((char) codePoint);
+            return encode(codePoint);
         } else if (Character.isHighSurrogate(c)) {
             highSurrogate = c;
             return new char[0];
         }
+        return encode((int) c);
+    }
 
+    private char[] encode(int c) {
         switch (c) {
             case 0x22: return(ENCODE_QUOT); // (") [&quot;]
             case 0x26: return(ENCODE_AMP);  // (&) [&amp;]
@@ -110,6 +113,16 @@ public class XMLEncoder extends Compiled
             case 0x3c: return(ENCODE_LT);   // (<) [&lt;]
             case 0x3e: return(ENCODE_GT);   // (>) [&gt;]
             default: {
+                if (c > 0xffff) {
+                    char ret[] = { '&', '#', 'x',
+                        ENCODE_HEX[c >> 0x10 & 0xf],
+                        ENCODE_HEX[c >> 0xc & 0xf],
+                        ENCODE_HEX[c >> 0x8 & 0xf],
+                        ENCODE_HEX[c >> 0x4 & 0xf],
+                        ENCODE_HEX[c & 0xf], ';'
+                    };
+                    return(ret);
+                }
                 if (c > 0xfff) {
                     char ret[] = { '&', '#', 'x',
                         ENCODE_HEX[c >> 0xc & 0xf],

Modified: cocoon/subprojects/cocoon-serializers-charsets/trunk/src/test/java/org/apache/cocoon/components/serializers/encoding/XMLEncoderTest.java
URL: http://svn.apache.org/viewvc/cocoon/subprojects/cocoon-serializers-charsets/trunk/src/test/java/org/apache/cocoon/components/serializers/encoding/XMLEncoderTest.java?rev=1765807&r1=1765806&r2=1765807&view=diff
==============================================================================
--- cocoon/subprojects/cocoon-serializers-charsets/trunk/src/test/java/org/apache/cocoon/components/serializers/encoding/XMLEncoderTest.java (original)
+++ cocoon/subprojects/cocoon-serializers-charsets/trunk/src/test/java/org/apache/cocoon/components/serializers/encoding/XMLEncoderTest.java Thu Oct 20 11:45:55 2016
@@ -30,7 +30,7 @@ public class XMLEncoderTest {
      */
     @Test
     public void encodingSurrogatePairs() {
-        char[] expectedValue = encoder.encode((char) 127808);
+        char[] expectedValue = "&#x1F340;".toCharArray();
 
         assertTrue(encoder.encode('\uD83C').length == 0);
         assertTrue(Arrays.equals(expectedValue, encoder.encode('\uDF40')));
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.