You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by il...@apache.org on 2016/10/20 11:40:58 UTC
svn commit: r1765804 - in
/cocoon/branches/BRANCH_2_1_X/src/blocks/serializers:
java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java
test/org/apache/cocoon/components/serializers/encoding/XMLEncoderTestCase.java
Author: ilgrosso
Date: Thu Oct 20 11:40:57 2016
New Revision: 1765804
URL: http://svn.apache.org/viewvc?rev=1765804&view=rev
Log:
[COCOON-2352] Third PR applied - This closes #3
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/serializers/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java
cocoon/branches/BRANCH_2_1_X/src/blocks/serializers/test/org/apache/cocoon/components/serializers/encoding/XMLEncoderTestCase.java
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/serializers/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/serializers/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java?rev=1765804&r1=1765803&r2=1765804&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/serializers/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/serializers/java/org/apache/cocoon/components/serializers/encoding/XMLEncoder.java Thu Oct 20 11:40:57 2016
@@ -98,12 +98,15 @@ public class XMLEncoder extends Compiled
}
int codePoint = Character.toCodePoint(highSurrogate.charValue(), c);
highSurrogate = null;
- return encode((char) codePoint);
+ return encode(codePoint);
} else if (Character.isHighSurrogate(c)) {
highSurrogate = Character.valueOf(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); // (&) [&]
@@ -111,6 +114,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/branches/BRANCH_2_1_X/src/blocks/serializers/test/org/apache/cocoon/components/serializers/encoding/XMLEncoderTestCase.java
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/serializers/test/org/apache/cocoon/components/serializers/encoding/XMLEncoderTestCase.java?rev=1765804&r1=1765803&r2=1765804&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/serializers/test/org/apache/cocoon/components/serializers/encoding/XMLEncoderTestCase.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/serializers/test/org/apache/cocoon/components/serializers/encoding/XMLEncoderTestCase.java Thu Oct 20 11:40:57 2016
@@ -37,8 +37,7 @@ public class XMLEncoderTestCase extends
* Test COCOON-2352: XMLEncoder doesn't support Unicode surrogate pairs.
*/
public void testEncodingSurrogatePairs() {
- char[] expectedValue = encoder.encode((char) 127808);
-
+ char[] expectedValue = "🍀".toCharArray();
assertTrue(encoder.encode('\uD83C').length == 0);
assertTrue(Arrays.equals(expectedValue, encoder.encode('\uDF40')));
}