You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by et...@apache.org on 2008/06/06 09:33:56 UTC

svn commit: r663844 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/servlet/ProxyServletRequest.java test/java/org/apache/shindig/gadgets/servlet/ProxyServletRequestTest.java

Author: etnu
Date: Fri Jun  6 00:33:56 2008
New Revision: 663844

URL: http://svn.apache.org/viewvc?rev=663844&view=rev
Log:
Added missing test and fixed up style issues.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServletRequest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletRequestTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServletRequest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServletRequest.java?rev=663844&r1=663843&r2=663844&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServletRequest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServletRequest.java Fri Jun  6 00:33:56 2008
@@ -18,12 +18,13 @@
  */
 package org.apache.shindig.gadgets.servlet;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
+import org.apache.shindig.common.util.Utf8UrlCoder;
+
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.regex.Pattern;
 import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequestWrapper;
@@ -33,32 +34,38 @@
  * "http://shindig/proxy/additional=parameters/http://remotehost/file").
  */
 public class ProxyServletRequest extends HttpServletRequestWrapper {
-  protected static Pattern chainedSyntaxPattern = Pattern.compile("^[^?]+/proxy/([^?/]*)/(.*)$");
-  protected static Pattern parameterPairPattern = Pattern.compile("([^&=]+)=([^&=]*)");
+  protected static final Pattern CHAINED_SYNTAX_PATTERN
+      = Pattern.compile("^[^?]+/proxy/([^?/]*)/(.*)$");
+  protected static final Pattern PARAMETER_PAIR_PATTERN
+      = Pattern.compile("([^&=]+)=([^&=]*)");
 
-  protected boolean usingChainedSyntax;
-  protected Map<String, String> extractedParameters;
+  protected final boolean usingChainedSyntax;
+  protected final Map<String, String> extractedParameters;
 
   public ProxyServletRequest(HttpServletRequest request) {
     super(request);
-    Matcher chainedSyntaxMatcher = chainedSyntaxPattern.matcher(request.getRequestURI());
-    usingChainedSyntax = chainedSyntaxMatcher.matches();
+    Matcher chainedMatcher
+        = CHAINED_SYNTAX_PATTERN.matcher(request.getRequestURI());
+    usingChainedSyntax = chainedMatcher.matches();
     if (usingChainedSyntax) {
       extractedParameters = new HashMap<String, String>();
 
-      Matcher parameterPairMatcher = parameterPairPattern.matcher(chainedSyntaxMatcher.group(1));
-      while (parameterPairMatcher.find()) {
-        try {
-          extractedParameters.put(URLDecoder.decode(parameterPairMatcher.group(1), "UTF-8"),
-                                  URLDecoder.decode(parameterPairMatcher.group(2), "UTF-8"));
-        } catch (UnsupportedEncodingException e) {
-        }
+      Matcher paramMatcher
+          = PARAMETER_PAIR_PATTERN.matcher(chainedMatcher.group(1));
+      while (paramMatcher.find()) {
+        extractedParameters.put(Utf8UrlCoder.decode(paramMatcher.group(1)),
+                                Utf8UrlCoder.decode(paramMatcher.group(2)));
       }
 
-      extractedParameters.put(ProxyHandler.URL_PARAM, chainedSyntaxMatcher.group(2));
+      extractedParameters.put(ProxyHandler.URL_PARAM, chainedMatcher.group(2));
+    } else {
+      extractedParameters = Collections.emptyMap();
     }
   }
 
+  /**
+   * @return True if the request is using the chained syntax form.
+   */
   public boolean isUsingChainedSyntax() {
     return usingChainedSyntax;
   }

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletRequestTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletRequestTest.java?rev=663844&r1=663843&r2=663844&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletRequestTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletRequestTest.java Fri Jun  6 00:33:56 2008
@@ -25,29 +25,33 @@
 import javax.servlet.http.HttpServletRequest;
 
 public class ProxyServletRequestTest extends EasyMockTestCase {
-  public final HttpServletRequest request = mock(HttpServletRequest.class);
+  private final static String URL = "http://proxy/url";
+
+  private final HttpServletRequest request = mock(HttpServletRequest.class);
 
   public ProxyServletRequest setupMockRequest(String url) {
     expect(request.getRequestURI()).andReturn(url).atLeastOnce();
+    expect(request.getParameter("url")).andReturn(URL).anyTimes();
     replay();
     return new ProxyServletRequest(request);
   }
 
   public void testOldRequestSyntax() throws Exception {
     ProxyServletRequest req = setupMockRequest(
-      "http://localhost/gadgets/proxy?url=http://proxy/url"
+      "http://localhost/gadgets/proxy?url=" + URL
     );
     assertFalse(req.isUsingChainedSyntax());
+    assertEquals(URL, req.getParameter("url"));
     verify();
   }
 
   public void testChainedSyntaxWithNoParameters() throws Exception {
     ProxyServletRequest req = setupMockRequest(
-      "http://localhost/gadgets/proxy//http://remote/proxy?query"
+      "http://localhost/gadgets/proxy//http://remote/proxy?query=foo"
     );
     assertTrue(req.isUsingChainedSyntax());
-    assertEquals("http://remote/proxy?query", req.getParameter("url"));
-    assertNull(req.getParameter("nocache"));
+    assertEquals("http://remote/proxy?query=foo", req.getParameter("url"));
+    assertNull(req.getParameter("query"));
     verify();
   }