You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2010/03/17 05:35:43 UTC

svn commit: r924152 - in /camel/branches/camel-1.x: ./ camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java camel-core/src/test/java/org/apache/camel/util/UnsafeCharactersEncoderTest.java

Author: ningjiang
Date: Wed Mar 17 04:35:43 2010
New Revision: 924152

URL: http://svn.apache.org/viewvc?rev=924152&view=rev
Log:
Merged revisions 924119 via svnmerge from 
https://svn.apache.org/repos/asf/camel/trunk

........
  r924119 | ningjiang | 2010-03-17 11:05:27 +0800 (Wed, 17 Mar 2010) | 1 line
  
  CAMEL-2554 Fixed the IndexOutOfBoundsException issue of  UnsafeUriCharactersEncoder
........

Modified:
    camel/branches/camel-1.x/   (props changed)
    camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java
    camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/UnsafeCharactersEncoderTest.java

Propchange: camel/branches/camel-1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 17 04:35:43 2010
@@ -1 +1 @@
-/camel/trunk:736980,739733,739904,740251,740295,740306,740596,740663,741848,742231,742705,742739,742854,742856,742898,742906,743613,743762,743773,743920,743959-743960,744123,745105,745367,745541,745751,745826,745978,746269,746872,746895,746962,747258,747678-747704,748392,748436,748821,749563-749564,749574,749628-749629,749936,749956,750017,750334,750396,750761,750796,752068,752117,752418,752751-752755,752764-752773,752956,753087,753101,753175,755136,755487,756313,756348,756870,756939,757636,757693,757743,757865,758539,758563,758600,758617,758692,758990,759362,759453,759887,759931,760003,760890,760909,760937,761194,761536,761583,761607,762047,762633,762650,762935,763095,763484,763551,765154,765686,765729,765743,765824,766016,766289,766584,766588,766590,766602,766673,767403,767824,768342,769239,769346,769368,769434,770172,770906,771303,773193,773446,773781,774192,774383,774658-774659,776198,776289,776504,776975,778102,778689-778701,779121,779143,779489,781314-781349,781775,781
 923,781974,781993,782557,782594,782681,782886,782918-782923,783204,783248,783363,783639,783704,785564,785584,785599,787206,787581,787598,787605,787928,788393,789121,789703,790560,790936,791379,791476,791767,792038,792381,792398,792899,793359,793518,793547-793555,793862,793935,794237,794368,794550,794967,795790,798027,798052,798063,798489,798864,799252,800340,800785,800797,801084,801196,801960,802307,802478,803559,807476,810751,812937,814493,816105,817654,818063,818182-818354,818744,818747,819475,819956,820152,820168,821272,821290,822655,823013,823018,823031,823102,823177,823575,824218,824721,825760,825765,828288,828333,832647,833285,833289,833350,833370,833381,833419,835511,880655,880667,883713,884525,884750,885876,887196,895119,896772,898201,901634,902688,903638,903970,904365,904440,904442,905171,905241,905585,905883,906013,906068,906342,908925,909028,916096
+/camel/trunk:736980,739733,739904,740251,740295,740306,740596,740663,741848,742231,742705,742739,742854,742856,742898,742906,743613,743762,743773,743920,743959-743960,744123,745105,745367,745541,745751,745826,745978,746269,746872,746895,746962,747258,747678-747704,748392,748436,748821,749563-749564,749574,749628-749629,749936,749956,750017,750334,750396,750761,750796,752068,752117,752418,752751-752755,752764-752773,752956,753087,753101,753175,755136,755487,756313,756348,756870,756939,757636,757693,757743,757865,758539,758563,758600,758617,758692,758990,759362,759453,759887,759931,760003,760890,760909,760937,761194,761536,761583,761607,762047,762633,762650,762935,763095,763484,763551,765154,765686,765729,765743,765824,766016,766289,766584,766588,766590,766602,766673,767403,767824,768342,769239,769346,769368,769434,770172,770906,771303,773193,773446,773781,774192,774383,774658-774659,776198,776289,776504,776975,778102,778689-778701,779121,779143,779489,781314-781349,781775,781
 923,781974,781993,782557,782594,782681,782886,782918-782923,783204,783248,783363,783639,783704,785564,785584,785599,787206,787581,787598,787605,787928,788393,789121,789703,790560,790936,791379,791476,791767,792038,792381,792398,792899,793359,793518,793547-793555,793862,793935,794237,794368,794550,794967,795790,798027,798052,798063,798489,798864,799252,800340,800785,800797,801084,801196,801960,802307,802478,803559,807476,810751,812937,814493,816105,817654,818063,818182-818354,818744,818747,819475,819956,820152,820168,821272,821290,822655,823013,823018,823031,823102,823177,823575,824218,824721,825760,825765,828288,828333,832647,833285,833289,833350,833370,833381,833419,835511,880655,880667,883713,884525,884750,885876,887196,895119,896772,898201,901634,902688,903638,903970,904365,904440,904442,905171,905241,905585,905883,906013,906068,906342,908925,909028,916096,924119

Propchange: camel/branches/camel-1.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java?rev=924152&r1=924151&r2=924152&view=diff
==============================================================================
--- camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java (original)
+++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/UnsafeUriCharactersEncoder.java Wed Mar 17 04:35:43 2010
@@ -60,32 +60,31 @@ public final class UnsafeUriCharactersEn
             return s;
         }
 
-        try {
-            // First check whether we actually need to encode
-            byte[] bytes = s.getBytes("UTF8");
-            for (int i = 0;;) {
-                if (unsafeCharacters.get(bytes[i])) {
+        // First check whether we actually need to encode
+        char chars[] = s.toCharArray();
+        for (int i = 0;;) {
+            // just deal with the ascii character
+            if (chars[i] > 0 && chars[i] < 128) {
+                if (unsafeCharacters.get(chars[i])) {
                     break;
                 }
-                if (++i >= bytes.length) {
-                    return s;
-                }
             }
+            if (++i >= chars.length) {
+                return s;
+            }
+        }
 
-            // okay there are some unsafe characters so we do need to encode
-            StringBuffer sb = new StringBuffer();
-            for (byte b : bytes) {
-                if (unsafeCharacters.get(b)) {
-                    appendEscape(sb, b);
-                } else {
-                    sb.append((char)b);
-                }
+        // okay there are some unsafe characters so we do need to encode
+        StringBuffer sb = new StringBuffer();
+        for (char ch : chars) {
+            if (ch > 0 && ch < 128 && unsafeCharacters.get(ch)) {
+                appendEscape(sb, (byte)ch);
+            } else {
+                sb.append(ch);
             }
-            return sb.toString();
-        } catch (UnsupportedEncodingException e) {
-            LOG.error("Can't encoding the uri: ", e);
-            return null;
         }
+        return sb.toString();
+
     }
 
     private static void appendEscape(StringBuffer sb, byte b) {

Modified: camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/UnsafeCharactersEncoderTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/UnsafeCharactersEncoderTest.java?rev=924152&r1=924151&r2=924152&view=diff
==============================================================================
--- camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/UnsafeCharactersEncoderTest.java (original)
+++ camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/util/UnsafeCharactersEncoderTest.java Wed Mar 17 04:35:43 2010
@@ -19,17 +19,24 @@ package org.apache.camel.util;
 import junit.framework.TestCase;
 
 public class UnsafeCharactersEncoderTest extends TestCase {
+    private void testEncoding(String before, String after) {
+        String result = UnsafeUriCharactersEncoder.encode(before);
+        assertEquals("Get the wrong encoding result", result, after);
+    }
+    
     public void testQnameEncoder() {
         String afterEncoding = "%7Bhttp://www.example.com/test%7DServiceName";
         String beforeEncoding = "{http://www.example.com/test}ServiceName";
-
-        String result = UnsafeUriCharactersEncoder.encode(beforeEncoding);
-        assertEquals("Get the wrong encoding result", result, afterEncoding);
+        testEncoding(beforeEncoding, afterEncoding);
     }
 
     public void testNoEncoding() {
         String noEncoding = "http://www.example.com";
-        String result = UnsafeUriCharactersEncoder.encode(noEncoding);
-        assertEquals("Get the wrong encoding result", result, noEncoding);
+        testEncoding(noEncoding, noEncoding);
+    }
+    
+    public void testUnicodes() {
+        String noEncoding = "http://test.com/\uFD04";
+        testEncoding(noEncoding, noEncoding);
     }
 }