jericho     2002/10/22 18:39:39

  Modified:    httpclient/src/java/org/apache/commons/httpclient/util
                        URIUtil.java
               httpclient/src/test/org/apache/commons/httpclient
                        TestWebappRedirect.java
               httpclient/src/java/org/apache/commons/httpclient/methods
                        PostMethod.java
               httpclient/src/java/org/apache/commons/httpclient
                        HttpMethodBase.java
  Log:
  - Add encodeInQuery in URIUtil class for HTTP URL (It's useful for query inside 
manipulation)
  - Apply the encodeInQuery method for inside of the query component
  
  Revision  Changes    Path
  1.6       +47 -16    
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/util/URIUtil.java
  
  Index: URIUtil.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/util/URIUtil.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- URIUtil.java      21 Oct 2002 12:48:00 -0000      1.5
  +++ URIUtil.java      23 Oct 2002 01:39:39 -0000      1.6
  @@ -83,6 +83,16 @@
   
       protected static final BitSet empty = new BitSet(1);
   
  +    protected static final BitSet allowed_in_query = new BitSet(256);
  +    // Static initializer for allowed_in_query
  +    static {
  +        allowed_in_query.or(URI.allowed_query);
  +        allowed_in_query.clear('?');
  +        allowed_in_query.clear('=');
  +        allowed_in_query.clear('&');
  +        allowed_in_query.clear('#');
  +    }
  +
       // ---------------------------------------------------------- URI utilities
   
       /**
  @@ -195,6 +205,8 @@
   
       /**
        * Get the all escaped and encoded string with the default protocl charset.
  +     * It's the same function to use <code>encode(String unescaped, Bitset
  +     * empty, URI.getProtocolCharset())</code>.
        *
        * @param unescaped an unescaped string
        * @param charset the charset
  @@ -210,6 +222,8 @@
   
       /**
        * Get the all escaped and encoded string with a given charset.
  +     * It's the same function to use <code>encode(String unescaped, Bitset
  +     * empty, String charset)</code>.
        *
        * @param unescaped an unescaped string
        * @param charset the charset
  @@ -298,8 +312,8 @@
   
   
       /**
  -     * Escape and encode a string regarded as the query component of an URI with
  -     * the default protocol charset.
  +     * Escape and encode a string regarded as inside the query component of an
  +     * URI with the default protocol charset.
        *
        * @param unescaped an unescaped string
        * @return the escaped string
  @@ -307,14 +321,14 @@
        * @see URI#getProtocolCharset
        * @see #encode
        */
  -    public static String encodeQuery(String unescaped) throws URIException {
  +    public static String encodeInQuery(String unescaped) throws URIException {
           return encodeQuery(unescaped, URI.getProtocolCharset());
       }
   
   
       /**
  -     * Escape and encode a string regarded as the query component of an URI with
  -     * a given charset.
  +     * Escape and encode a string regarded as inside the query component of an
  +     * URI with a given charset.
        *
        * @param unescaped an unescaped string
        * @param charset the charset
  @@ -322,27 +336,44 @@
        * @exception URIException
        * @see #encode
        */
  -    public static String encodeQuery(String unescaped, String charset)
  +    public static String encodeInQuery(String unescaped, String charset)
           throws URIException {
   
  -        return encode(unescaped, URI.allowed_query, charset);
  +        return encode(unescaped, allowed_in_query, charset);
       }
   
   
       /**
  -     * Escape and encode a given string and the default protocol charset.
  +     * Escape and encode a string regarded as the query component of an URI with
  +     * the default protocol charset.
        *
  -     * @param unescaped a string
  +     * @param unescaped an unescaped string
        * @return the escaped string
        * @exception URIException
        * @see URI#getProtocolCharset
  -     * @see Coder#encode
  +     * @see #encode
        */
  -    public static String encode(String unescaped)
  +    public static String encodeQuery(String unescaped) throws URIException {
  +        return encodeQuery(unescaped, URI.getProtocolCharset());
  +    }
  +
  +
  +    /**
  +     * Escape and encode a string regarded as the query component of an URI with
  +     * a given charset.
  +     *
  +     * @param unescaped an unescaped string
  +     * @param charset the charset
  +     * @return the escaped string
  +     * @exception URIException
  +     * @see #encode
  +     */
  +    public static String encodeQuery(String unescaped, String charset)
           throws URIException {
   
  -        return encode(unescaped, empty, URI.getProtocolCharset());
  +        return encode(unescaped, URI.allowed_query, charset);
       }
  +
   
       /**
        * Escape and encode a given string with allowed characters not to be
  
  
  
  1.9       +9 -9      
jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestWebappRedirect.java
  
  Index: TestWebappRedirect.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestWebappRedirect.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TestWebappRedirect.java   22 Oct 2002 18:23:25 -0000      1.8
  +++ TestWebappRedirect.java   23 Oct 2002 01:39:39 -0000      1.9
  @@ -171,9 +171,9 @@
   
           String qs = "http://"; + host + ":" + port + "/" + context + 
"/params?foo=bar&bar=foo";
           for(int i=0;i<2;i++) {
  -            qs = "http://"; + host + ":" + port + "/" + context + "/redirect?to=" + 
URIUtil.encodeQuery(qs);
  +            qs = "http://"; + host + ":" + port + "/" + context + "/redirect?to=" + 
URIUtil.encodeInQuery(qs);
           }
  -        method.setQueryString("to=" + URIUtil.encodeQuery(qs));
  +        method.setQueryString("to=" + URIUtil.encodeInQuery(qs));
           method.setUseDisk(false);
           try {
               client.executeMethod(method);
  @@ -209,7 +209,7 @@
           HttpClient client = new HttpClient();
           client.startSession(host, port);
           PostMethod method = new PostMethod("/" + context + "/redirect");
  -        method.setQueryString("to=" + URIUtil.encodeQuery("http://"; + host + ":" + 
port + "/" + context + "/params?foo=bar&bar=foo"));
  +        method.setQueryString("to=" + URIUtil.encodeInQuery("http://"; + host + ":" 
+ port + "/" + context + "/params?foo=bar&bar=foo"));
           method.setRequestBody(new ByteArrayInputStream(body.getBytes()));
           method.setRequestContentLength(body.length());  //unbuffered request
           method.setFollowRedirects(true);
  @@ -224,7 +224,7 @@
           assertEquals(HttpStatus.SC_MOVED_TEMPORARILY,method.getStatusCode());
   
           method = new PostMethod("/" + context + "/redirect");
  -        method.setQueryString("to=" + URIUtil.encodeQuery("http://"; + host + ":" + 
port + "/" + context + "/params?foo=bar&bar=foo"));
  +        method.setQueryString("to=" + URIUtil.encodeInQuery("http://"; + host + ":" 
+ port + "/" + context + "/params?foo=bar&bar=foo"));
           method.setRequestBody(new ByteArrayInputStream(body.getBytes()));
           method.setRequestContentLength(PostMethod.CONTENT_LENGTH_AUTO); //buffered 
request
           method.setFollowRedirects(true);
  @@ -244,7 +244,7 @@
           HttpClient client = new HttpClient();
           client.startSession(host, port);
           PutMethod method = new PutMethod("/" + context + "/redirect");
  -        method.setQueryString("to=" + URIUtil.encodeQuery("http://"; + host + ":" + 
port + "/" + context + "/body?foo=bar&bar=foo"));
  +        method.setQueryString("to=" + URIUtil.encodeInQuery("http://"; + host + ":" 
+ port + "/" + context + "/body?foo=bar&bar=foo"));
           method.setRequestBody("This is data to be sent in the body of an HTTP 
PUT.");
           try {
               client.executeMethod(method);
  
  
  
  1.22      +5 -5      
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/PostMethod.java
  
  Index: PostMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/methods/PostMethod.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- PostMethod.java   21 Oct 2002 14:07:48 -0000      1.21
  +++ PostMethod.java   23 Oct 2002 01:39:39 -0000      1.22
  @@ -767,7 +767,7 @@
   
               String queryName = null;
               try {
  -                queryName = URIUtil.encodeQuery(parameter.getName());
  +                queryName = URIUtil.encodeInQuery(parameter.getName());
               } catch (URIException urie) {
                   log.error("URI query name encoding error", urie);
                   queryName = parameter.getName();
  @@ -775,7 +775,7 @@
               buff.append(queryName).append("=");
               String queryValue = null;
               try {
  -                queryValue = URIUtil.encodeQuery(parameter.getValue());
  +                queryValue = URIUtil.encodeInQuery(parameter.getValue());
               } catch (URIException urie) {
                   log.error("URI query value encoding error", urie);
                   queryValue = parameter.getValue();
  
  
  
  1.71      +8 -7      
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java
  
  Index: HttpMethodBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v
  retrieving revision 1.70
  retrieving revision 1.71
  diff -u -r1.70 -r1.71
  --- HttpMethodBase.java       22 Oct 2002 18:23:24 -0000      1.70
  +++ HttpMethodBase.java       23 Oct 2002 01:39:39 -0000      1.71
  @@ -379,7 +379,8 @@
       /**
        * Sets the query string.
        * The user must ensure that the string is properly URL encoded.
  -     * URIUtil.encodeQuery can be used to encode parameter names and values.
  +     * URIUtil.encodeAll, URIUtil.encodeInQuery or URIUtil.encodeQuery can be
  +     * used to encode parameter names and values.
        * The query string should not start with the question mark character.
        * 
        * @param queryString the query string
  @@ -407,7 +408,7 @@
                   }
                   String queryName = null;
                   try {
  -                    queryName = URIUtil.encodeQuery(params[i].getName());
  +                    queryName = URIUtil.encodeInQuery(params[i].getName());
                   } catch (URIException urie) {
                       log.error("URI query name encoding error", urie);
                       queryName = params[i].getName();
  @@ -416,7 +417,7 @@
                   if (params[i].getValue() != null) {
                       String queryValue = null;
                       try {
  -                        queryValue = URIUtil.encodeQuery(params[i].getValue());
  +                        queryValue = URIUtil.encodeInQuery(params[i].getValue());
                       } catch (URIException urie) {
                           log.error("URI query value encoding error", urie);
                           queryValue = params[i].getValue();
  
  
  

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>

Reply via email to