You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by bl...@apache.org on 2009/09/29 21:28:38 UTC

svn commit: r820072 - in /incubator/wink/trunk/wink-common/src: main/java/org/apache/wink/common/internal/uri/UriEncoder.java test/java/org/apache/wink/common/uri/UriEncoderTest.java

Author: bluk
Date: Tue Sep 29 19:28:37 2009
New Revision: 820072

URL: http://svn.apache.org/viewvc?rev=820072&view=rev
Log:
ArrayIndexOutOfBoundsEx for international chars

See [WINK-208]

Modified:
    incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/uri/UriEncoder.java
    incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/uri/UriEncoderTest.java

Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/uri/UriEncoder.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/uri/UriEncoder.java?rev=820072&r1=820071&r2=820072&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/uri/UriEncoder.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/uri/UriEncoder.java Tue Sep 29 19:28:37 2009
@@ -457,7 +457,7 @@
                 if (d1 >= 0 && d2 >= 0) {
                     v = d1;
                     v = v << 4 | d2;
-                    if (decodeChars != null && !decodeChars[v]) {
+                    if (decodeChars != null && (v >= decodeChars.length || !decodeChars[v])) {
                         buffer.put((byte)string.charAt(i));
                         buffer.put(normalizedHexDigits[string.charAt(i + 1)]);
                         buffer.put(normalizedHexDigits[string.charAt(i + 2)]);

Modified: incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/uri/UriEncoderTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/uri/UriEncoderTest.java?rev=820072&r1=820071&r2=820072&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/uri/UriEncoderTest.java (original)
+++ incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/uri/UriEncoderTest.java Tue Sep 29 19:28:37 2009
@@ -21,6 +21,7 @@
 package org.apache.wink.common.uri;
 
 import org.apache.wink.common.internal.uri.UriEncoder;
+import org.apache.wink.common.internal.utils.UriHelper;
 
 import junit.framework.TestCase;
 
@@ -119,4 +120,11 @@
     public void testDecodeQuery() {
         assertEquals("a b c", UriEncoder.decodeQuery("a+b%20c"));
     }
+
+    public void testDecodeInternationalURI() {
+        // some text editors do not like the UTF-8 encoding so just making
+        // sure it doesn't throw an exception for now.
+        // see [WINK-208]
+        assertNotNull(UriHelper.normalize("http://l/%E3%81%82%E3%81%84"));
+    }
 }