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();
}