2014-02-18 16:28 GMT+01:00 Duncan Jones <djo...@apache.org>:

> On 15 February 2014 10:35,  <brit...@apache.org> wrote:
> > Author: britter
> > Date: Sat Feb 15 10:35:35 2014
> > New Revision: 1568612
> >
> > URL: http://svn.apache.org/r1568612
> > Log:
> > LANG-977: NumericEntityEscaper incorrectly encodes supplementary
> characters. Thanks to Chris Karcher.
>
>
> Chris isn't listed as a contributor in the POM file. Should we add him
> or is the "due-to" field replacing the need for that?
>

Well there are no absolute rules about this. But in this case we could add
him, I guess. I'll take care of this.

Thanks!


>
> - Duncan
>
>
>
> >
> > Modified:
> >     commons/proper/lang/trunk/src/changes/changes.xml
> >
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringEscapeUtils.java
> >
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/CharSequenceTranslator.java
> >
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
> >
> > Modified: commons/proper/lang/trunk/src/changes/changes.xml
> > URL:
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1568612&r1=1568611&r2=1568612&view=diff
> >
> ==============================================================================
> > --- commons/proper/lang/trunk/src/changes/changes.xml [utf-8] (original)
> > +++ commons/proper/lang/trunk/src/changes/changes.xml [utf-8] Sat Feb 15
> 10:35:35 2014
> > @@ -22,6 +22,7 @@
> >    <body>
> >
> >    <release version="3.3" date="TBA" description="Bugfix and Feature
> release">
> > +    <action issue="LANG-977" type="fix" dev="britter" due-to="Chris
> Karcher">NumericEntityEscaper incorrectly encodes supplementary
> characters</action>
> >      <action issue="LANG-973" type="fix" dev="sebb">Make some private
> fields final</action>
> >      <action issue="LANG-971" type="fix"
> dev="sebb">NumberUtils#isNumber(String) fails to reject invalid Octal
> numbers</action>
> >      <action issue="LANG-972" type="fix" dev="sebb">NumberUtils#isNumber
> does not allow for hex 0XABCD</action>
> >
> > Modified:
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringEscapeUtils.java
> > URL:
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringEscapeUtils.java?rev=1568612&r1=1568611&r2=1568612&view=diff
> >
> ==============================================================================
> > ---
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringEscapeUtils.java
> (original)
> > +++
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringEscapeUtils.java
> Sat Feb 15 10:35:35 2014
> > @@ -185,7 +185,7 @@ public class StringEscapeUtils {
> >                  out.write(StringUtils.replace(input.toString(),
> CSV_QUOTE_STR, CSV_QUOTE_STR + CSV_QUOTE_STR));
> >                  out.write(CSV_QUOTE);
> >              }
> > -            return input.length();
> > +            return Character.codePointCount(input, 0, input.length());
> >          }
> >      }
> >
> > @@ -314,7 +314,7 @@ public class StringEscapeUtils {
> >
> >              if ( input.charAt(0) != CSV_QUOTE ||
> input.charAt(input.length() - 1) != CSV_QUOTE ) {
> >                  out.write(input.toString());
> > -                return input.length();
> > +                return Character.codePointCount(input, 0,
> input.length());
> >              }
> >
> >              // strip quotes
> > @@ -326,7 +326,7 @@ public class StringEscapeUtils {
> >              } else {
> >                  out.write(input.toString());
> >              }
> > -            return input.length();
> > +            return Character.codePointCount(input, 0, input.length());
> >          }
> >      }
> >
> >
> > Modified:
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/CharSequenceTranslator.java
> > URL:
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/CharSequenceTranslator.java?rev=1568612&r1=1568611&r2=1568612&view=diff
> >
> ==============================================================================
> > ---
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/CharSequenceTranslator.java
> (original)
> > +++
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/CharSequenceTranslator.java
> Sat Feb 15 10:35:35 2014
> > @@ -89,10 +89,10 @@ public abstract class CharSequenceTransl
> >                  pos+= c.length;
> >                  continue;
> >              }
> > -//          // contract with translators is that they have to
> understand codepoints
> > -//          // and they just took care of a surrogate pair
> > +            // contract with translators is that they have to
> understand codepoints
> > +            // and they just took care of a surrogate pair
> >              for (int pt = 0; pt < consumed; pt++) {
> > -                pos += Character.charCount(Character.codePointAt(input,
> pt));
> > +                pos += Character.charCount(Character.codePointAt(input,
> pos));
> >              }
> >          }
> >      }
> >
> > Modified:
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
> > URL:
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java?rev=1568612&r1=1568611&r2=1568612&view=diff
> >
> ==============================================================================
> > ---
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
> (original)
> > +++
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
> Sat Feb 15 10:35:35 2014
> > @@ -348,6 +348,9 @@ public class StringEscapeUtilsTest {
> >
> >          assertEquals("Supplementary character must be represented using
> a single escape", "&#144308;",
> >                  escapeXml.translate("\uD84C\uDFB4"));
> > +
> > +        assertEquals("Supplementary characters mixed with basic
> characters should be encoded correctly", "a b c &#144308;",
> > +                        escapeXml.translate("a b c \uD84C\uDFB4"));
> >      }
> >
> >      @Test
> > @@ -377,6 +380,9 @@ public class StringEscapeUtilsTest {
> >      public void testUnescapeXmlSupplementaryCharacters() {
> >          assertEquals("Supplementary character must be represented using
> a single escape", "\uD84C\uDFB4",
> >                  StringEscapeUtils.unescapeXml("&#144308;") );
> > +
> > +        assertEquals("Supplementary characters mixed with basic
> characters should be decoded correctly", "a b c \uD84C\uDFB4",
> > +                StringEscapeUtils.unescapeXml("a b c &#144308;") );
> >      }
> >
> >      // Tests issue #38569
> > @@ -396,22 +402,24 @@ public class StringEscapeUtilsTest {
> >
> >      @Test
> >      public void testEscapeCsvString() throws Exception {
> > -        assertEquals("foo.bar",
>  StringEscapeUtils.escapeCsv("foo.bar"));
> > -        assertEquals("\"foo,bar\"",
>  StringEscapeUtils.escapeCsv("foo,bar"));
> > -        assertEquals("\"foo\nbar\"",
> StringEscapeUtils.escapeCsv("foo\nbar"));
> > -        assertEquals("\"foo\rbar\"",
> StringEscapeUtils.escapeCsv("foo\rbar"));
> > -        assertEquals("\"foo\"\"bar\"",
> StringEscapeUtils.escapeCsv("foo\"bar"));
> > +        assertEquals("foo.bar",
>  StringEscapeUtils.escapeCsv("foo.bar"));
> > +        assertEquals("\"foo,bar\"",
>  StringEscapeUtils.escapeCsv("foo,bar"));
> > +        assertEquals("\"foo\nbar\"",
> StringEscapeUtils.escapeCsv("foo\nbar"));
> > +        assertEquals("\"foo\rbar\"",
> StringEscapeUtils.escapeCsv("foo\rbar"));
> > +        assertEquals("\"foo\"\"bar\"",
> StringEscapeUtils.escapeCsv("foo\"bar"));
> > +        assertEquals("foo\uD84C\uDFB4bar",
> StringEscapeUtils.escapeCsv("foo\uD84C\uDFB4bar"));
> >          assertEquals("",   StringEscapeUtils.escapeCsv(""));
> >          assertEquals(null, StringEscapeUtils.escapeCsv(null));
> >      }
> >
> >      @Test
> >      public void testEscapeCsvWriter() throws Exception {
> > -        checkCsvEscapeWriter("foo.bar",        "foo.bar");
> > -        checkCsvEscapeWriter("\"foo,bar\"",    "foo,bar");
> > -        checkCsvEscapeWriter("\"foo\nbar\"",   "foo\nbar");
> > -        checkCsvEscapeWriter("\"foo\rbar\"",   "foo\rbar");
> > -        checkCsvEscapeWriter("\"foo\"\"bar\"", "foo\"bar");
> > +        checkCsvEscapeWriter("foo.bar",            "foo.bar");
> > +        checkCsvEscapeWriter("\"foo,bar\"",        "foo,bar");
> > +        checkCsvEscapeWriter("\"foo\nbar\"",       "foo\nbar");
> > +        checkCsvEscapeWriter("\"foo\rbar\"",       "foo\rbar");
> > +        checkCsvEscapeWriter("\"foo\"\"bar\"",     "foo\"bar");
> > +        checkCsvEscapeWriter("foo\uD84C\uDFB4bar",
> "foo\uD84C\uDFB4bar");
> >          checkCsvEscapeWriter("", null);
> >          checkCsvEscapeWriter("", "");
> >      }
> > @@ -428,11 +436,12 @@ public class StringEscapeUtilsTest {
> >
> >      @Test
> >      public void testUnescapeCsvString() throws Exception {
> > -        assertEquals("foo.bar",
>  StringEscapeUtils.unescapeCsv("foo.bar"));
> > -        assertEquals("foo,bar",
>  StringEscapeUtils.unescapeCsv("\"foo,bar\""));
> > -        assertEquals("foo\nbar",
> StringEscapeUtils.unescapeCsv("\"foo\nbar\""));
> > -        assertEquals("foo\rbar",
> StringEscapeUtils.unescapeCsv("\"foo\rbar\""));
> > -        assertEquals("foo\"bar",
> StringEscapeUtils.unescapeCsv("\"foo\"\"bar\""));
> > +        assertEquals("foo.bar",
>  StringEscapeUtils.unescapeCsv("foo.bar"));
> > +        assertEquals("foo,bar",
>  StringEscapeUtils.unescapeCsv("\"foo,bar\""));
> > +        assertEquals("foo\nbar",
> StringEscapeUtils.unescapeCsv("\"foo\nbar\""));
> > +        assertEquals("foo\rbar",
> StringEscapeUtils.unescapeCsv("\"foo\rbar\""));
> > +        assertEquals("foo\"bar",
> StringEscapeUtils.unescapeCsv("\"foo\"\"bar\""));
> > +        assertEquals("foo\uD84C\uDFB4bar",
> StringEscapeUtils.unescapeCsv("foo\uD84C\uDFB4bar"));
> >          assertEquals("",   StringEscapeUtils.unescapeCsv(""));
> >          assertEquals(null, StringEscapeUtils.unescapeCsv(null));
> >
> > @@ -441,11 +450,12 @@ public class StringEscapeUtilsTest {
> >
> >      @Test
> >      public void testUnescapeCsvWriter() throws Exception {
> > -        checkCsvUnescapeWriter("foo.bar",        "foo.bar");
> > -        checkCsvUnescapeWriter("foo,bar",    "\"foo,bar\"");
> > -        checkCsvUnescapeWriter("foo\nbar",   "\"foo\nbar\"");
> > -        checkCsvUnescapeWriter("foo\rbar",   "\"foo\rbar\"");
> > -        checkCsvUnescapeWriter("foo\"bar", "\"foo\"\"bar\"");
> > +        checkCsvUnescapeWriter("foo.bar",            "foo.bar");
> > +        checkCsvUnescapeWriter("foo,bar",            "\"foo,bar\"");
> > +        checkCsvUnescapeWriter("foo\nbar",           "\"foo\nbar\"");
> > +        checkCsvUnescapeWriter("foo\rbar",           "\"foo\rbar\"");
> > +        checkCsvUnescapeWriter("foo\"bar",           "\"foo\"\"bar\"");
> > +        checkCsvUnescapeWriter("foo\uD84C\uDFB4bar",
> "foo\uD84C\uDFB4bar");
> >          checkCsvUnescapeWriter("", null);
> >          checkCsvUnescapeWriter("", "");
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>


-- 
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter

Reply via email to