You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by so...@apache.org on 2014/09/06 00:39:41 UTC

svn commit: r1622814 - /myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/URLUtils.java

Author: sobryan
Date: Fri Sep  5 22:39:40 2014
New Revision: 1622814

URL: http://svn.apache.org/r1622814
Log:
TRINIDAD-2441 - URLUtil to escape a URL and remove invalid characters

* Changed encoding to use \x notation for javascript strings rather then %HH URL encoding

Modified:
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/URLUtils.java

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/URLUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/URLUtils.java?rev=1622814&r1=1622813&r2=1622814&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/URLUtils.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/URLUtils.java Fri Sep  5 22:39:40 2014
@@ -103,10 +103,9 @@ public final class URLUtils
   }
   
   /**
-   * Takes a URL that is not escaped and simply removes any invalid characters, replacing them with thier %XX
-   * equivalents.
+   * Takes a URL that is not escaped for javascript and escapes it   
    */
-  public static String escapeURL(String url, String charset)
+  public static String jsEncodeURL(String url, String charset)
     throws UnsupportedEncodingException
   {
     StringBuilder sb = new StringBuilder(url.length() * 2);
@@ -115,8 +114,7 @@ public final class URLUtils
       if ((c >= 'A' && c <= 'Z') ||
             (c >= 'a' && c <= 'z') ||
             (c >= '0' && c <= '9') ||
-            (c == _URL_ENCODE_CHARACTER) ||
-            _URL_VALID_CHARS.indexOf(c) > -1
+            _JS_IMMUNE_CHARS.indexOf(c) > -1
          )
       {
         //Valid character.  Just append.
@@ -127,7 +125,7 @@ public final class URLUtils
         //This is an invalid character, so we encode need to get the bytes
         for(byte b: Character.toString(c).getBytes(charset))
         {
-          sb.append("%")
+          sb.append("\\x")
             .append(String.format("%02X", b));
         }
       }
@@ -258,6 +256,5 @@ public final class URLUtils
   private static final String _URL_QUERY_SEPERATOR="?";
   private static final String _URL_FRAGMENT_SEPERATOR="#";
   private static final String _URL_NAME_VALUE_PAIR_SEPERATOR="=";
-  private static final char _URL_ENCODE_CHARACTER='%';
-  private static final String _URL_VALID_CHARS="-._~://?#[]@!$&'()*+,;=";
-}
\ No newline at end of file
+  private static final String _JS_IMMUNE_CHARS=",._";
+}