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] Thu, 20 Oct 2016 11:45:56 -0000
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); // (") ["]
case 0x26: return(ENCODE_AMP); // (&) [&]
@@ -110,6 +113,16 @@ public class XMLEncoder extends Compiled
case 0x3c: return(ENCODE_LT); // (<) [<]
case 0x3e: return(ENCODE_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 = "🍀".toCharArray();
assertTrue(encoder.encode('\uD83C').length == 0);
assertTrue(Arrays.equals(expectedValue, encoder.encode('\uDF40')));