You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by zh...@apache.org on 2010/08/25 19:22:46 UTC

svn commit: r989233 - in /shindig/trunk: config/ java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/

Author: zhoresh
Date: Wed Aug 25 17:22:45 2010
New Revision: 989233

URL: http://svn.apache.org/viewvc?rev=989233&view=rev
Log:
Url: http://codereview.appspot.com/1949048/
Issue  1949048: Moving HtmlAccelServlet from "default" container to "accel" container 
patch provided by Gagan.

Modified:
    shindig/trunk/config/container.js
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/AccelHandler.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AccelUriManager.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java

Modified: shindig/trunk/config/container.js
URL: http://svn.apache.org/viewvc/shindig/trunk/config/container.js?rev=989233&r1=989232&r2=989233&view=diff
==============================================================================
--- shindig/trunk/config/container.js (original)
+++ shindig/trunk/config/container.js Wed Aug 25 17:22:45 2010
@@ -44,7 +44,8 @@
 
 // Container must be an array; this allows multiple containers
 // to share configuration.
-{"gadgets.container" : ["default"],
+// TODO: Move out accel container config into a separate accel.js file.
+{"gadgets.container" : ["default", "accel"],
 
 // Set of regular expressions to validate the parent parameter. This is
 // necessary to support situations where you want a single container to support

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/AccelHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/AccelHandler.java?rev=989233&r1=989232&r2=989233&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/AccelHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/AccelHandler.java Wed Aug 25 17:22:45 2010
@@ -47,11 +47,6 @@ import java.io.IOException;
 @Singleton
 public class AccelHandler {
   static final String ERROR_FETCHING_DATA = "Error fetching data";
-
-  // TODO: parameterize these.
-  static final Integer LONG_LIVED_REFRESH = (365 * 24 * 60 * 60);  // 1 year
-  static final Integer DEFAULT_REFRESH = (60 * 60);                // 1 hour
-
   protected final RequestPipeline requestPipeline;
   protected final ResponseRewriterRegistry contentRewriterRegistry;
   protected final AccelUriManager uriManager;
@@ -74,7 +69,7 @@ public class AccelHandler {
     // TODO: Handle if modified since headers.
 
     // Parse and normalize to get a proxied request uri.
-    ProxyUriManager.ProxyUri proxyUri = getProxyUri(request.getUri());
+    ProxyUriManager.ProxyUri proxyUri = getProxyUri(request);
 
     // Fetch the content of the requested uri.
     HttpRequest req = buildHttpRequest(request, proxyUri);
@@ -117,12 +112,12 @@ public class AccelHandler {
 
   /**
    * Returns the proxy uri encapsulating the request uri.
-   * @param requestUri The request uri.
+   * @param httpRequest The http request.
    * @return The proxy uri encapsulating the request uri.
    * @throws GadgetException In case of errors.
    */
-  public ProxyUriManager.ProxyUri getProxyUri(Uri requestUri) throws GadgetException {
-    Uri proxiedUri = uriManager.parseAndNormalize(requestUri);
+  public ProxyUriManager.ProxyUri getProxyUri(HttpRequest httpRequest) throws GadgetException {
+    Uri proxiedUri = uriManager.parseAndNormalize(httpRequest);
     String uriString = proxiedUri.getQueryParameter(UriCommon.Param.URL.getKey());
 
     // Throw BAD_GATEWAY in case parsing of url fails.
@@ -135,7 +130,7 @@ public class AccelHandler {
                                 HttpResponse.SC_BAD_GATEWAY);
     }
 
-    Gadget gadget = DomWalker.makeGadget(requestUri);
+    Gadget gadget = DomWalker.makeGadget(httpRequest);
     return new ProxyUriManager.ProxyUri(gadget, normalizedUri);
   }
 

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java?rev=989233&r1=989232&r2=989233&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java Wed Aug 25 17:22:45 2010
@@ -22,6 +22,7 @@ import org.apache.shindig.common.servlet
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.http.HttpResponse;
+import org.apache.shindig.gadgets.uri.AccelUriManager;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
@@ -61,6 +62,7 @@ public class HtmlAccelServlet extends In
     }
     
     HttpRequest req = ServletUtil.fromHttpServletRequest(request);
+    req.setContainer(AccelUriManager.CONTAINER);
     HttpResponse response = null;
     try {
       response = accelHandler.fetch(req);

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AccelUriManager.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AccelUriManager.java?rev=989233&r1=989232&r2=989233&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AccelUriManager.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AccelUriManager.java Wed Aug 25 17:22:45 2010
@@ -19,9 +19,9 @@
 package org.apache.shindig.gadgets.uri;
 
 import com.google.inject.ImplementedBy;
-
 import org.apache.shindig.common.uri.Uri;
 import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.http.HttpRequest;
 
 /**
  * UriManager for Accel servlet.
@@ -30,12 +30,14 @@ import org.apache.shindig.gadgets.Gadget
 public interface AccelUriManager {
   public static final String PROXY_HOST_PARAM = DefaultProxyUriManager.PROXY_HOST_PARAM;
   public static final String PROXY_PATH_PARAM = DefaultProxyUriManager.PROXY_PATH_PARAM;
+  public static final String CONTAINER = "accel";
 
   /**
-   * Parses and normalizes the given uri to be proxied through accel.
-   * @param requestUri The uri to proxy through accel. @return Accel proxied uri.
-   * @return Normalized uri to be proxied through accel.
+   * Parses and normalizes the given request uri to be proxied through accel.
+   *
+   * @param httpRequest The http request.
+   * @return Normalized uri which is proxied through accel.
    * @throws GadgetException In case of errors.
    */
-  public Uri parseAndNormalize(Uri requestUri) throws GadgetException;
+  public Uri parseAndNormalize(HttpRequest httpRequest) throws GadgetException;
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java?rev=989233&r1=989232&r2=989233&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java Wed Aug 25 17:22:45 2010
@@ -20,12 +20,12 @@ package org.apache.shindig.gadgets.uri;
 
 import com.google.common.collect.ImmutableList;
 import com.google.inject.Inject;
-
 import org.apache.commons.lang.StringUtils;
 import org.apache.shindig.common.uri.Uri;
 import org.apache.shindig.config.ContainerConfig;
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.rewrite.DomWalker;
 
 /**
@@ -33,7 +33,6 @@ import org.apache.shindig.gadgets.rewrit
  * TODO: Add support for multiple accel hosts.
  */
 public class DefaultAccelUriManager implements AccelUriManager {
-  public static final String CONTAINER = "default";
   final String accelHost;
   final String accelPath;
 
@@ -47,11 +46,11 @@ public class DefaultAccelUriManager impl
     accelPath = config.getString(CONTAINER, PROXY_PATH_PARAM);
   }
 
-  public Uri parseAndNormalize(Uri requestUri) throws GadgetException {
-    Gadget gadget = DomWalker.makeGadget(requestUri);
-    ProxyUriManager.ProxyUri proxied = looksLikeAccelUri(requestUri) ?
-        proxyUriManager.process(requestUri) : new ProxyUriManager.ProxyUri(
-        gadget, requestUri);
+  public Uri parseAndNormalize(HttpRequest httpRequest) throws GadgetException {
+    Gadget gadget = DomWalker.makeGadget(httpRequest);
+    ProxyUriManager.ProxyUri proxied = looksLikeAccelUri(httpRequest.getUri()) ?
+        proxyUriManager.process(httpRequest.getUri()) : new ProxyUriManager.ProxyUri(
+        gadget, httpRequest.getUri());
     return proxyUriManager.make(ImmutableList.of(proxied), 0).get(0);
   }
 

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java?rev=989233&r1=989232&r2=989233&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java Wed Aug 25 17:22:45 2010
@@ -19,31 +19,40 @@
 package org.apache.shindig.gadgets.uri;
 
 import com.google.common.collect.ImmutableMap;
-
 import org.apache.shindig.common.uri.Uri;
 import org.apache.shindig.config.AbstractContainerConfig;
 import org.apache.shindig.config.ContainerConfig;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import org.apache.shindig.gadgets.http.HttpRequest;
 import org.junit.Before;
 import org.junit.Test;
 
 import java.util.Map;
 
+import static org.junit.Assert.*;
+
 /**
  * Tests for DefaultAccelUriManager.
  */
 public class DefaultAccelUriManagerTest {
   private static class FakeContainerConfig extends AbstractContainerConfig {
-    protected final Map<String, Object> data = ImmutableMap.<String, Object>builder()
+    protected final Map<String, Object> defaultConfig = ImmutableMap.<String, Object>builder()
+        .put(AccelUriManager.PROXY_HOST_PARAM, "apache.org")
+        .put(AccelUriManager.PROXY_PATH_PARAM, "/gadgets/proxy")
+        .build();
+    protected final Map<String, Object> accelConfig = ImmutableMap.<String, Object>builder()
         .put(AccelUriManager.PROXY_HOST_PARAM, "apache.org")
         .put(AccelUriManager.PROXY_PATH_PARAM, "/gadgets/accel")
         .build();
 
+    protected final Map<String, Map<String, Object>> data =
+        ImmutableMap.<String, Map<String, Object>>builder()
+            .put("default", defaultConfig)
+            .put("accel", accelConfig)
+            .build();
+
     @Override
     public Object getProperty(String container, String name) {
-      return data.get(name);
+      return data.get(container) != null ? data.get(container).get(name) : null;
     }
   }
 
@@ -59,28 +68,39 @@ public class DefaultAccelUriManagerTest 
   @Test
   public void testParseAndNormalizeNonAccelUri() throws Exception {
     Uri uri = Uri.parse("http://www.example.org/index.html");
-    assertEquals(Uri.parse("//apache.org/gadgets/accel?container=default"
+    HttpRequest req = new HttpRequest(uri);
+    assertEquals(Uri.parse("//apache.org/gadgets/proxy?container=default"
+                 + "&gadget=http%3A%2F%2Fwww.example.org%2Findex.html"
+                 + "&debug=0&nocache=0&refresh=0"
+                 + "&url=http%3A%2F%2Fwww.example.org%2Findex.html"),
+                 uriManager.parseAndNormalize(req));
+
+    uri = Uri.parse("http://www.example.org/index.html");
+    req = new HttpRequest(uri);
+    req.setContainer("accel");
+    assertEquals(Uri.parse("//apache.org/gadgets/accel?container=accel"
                  + "&gadget=http%3A%2F%2Fwww.example.org%2Findex.html"
                  + "&debug=0&nocache=0&refresh=0"
                  + "&url=http%3A%2F%2Fwww.example.org%2Findex.html"),
-                 uriManager.parseAndNormalize(uri));
+                 uriManager.parseAndNormalize(req));
   }
 
   @Test
   public void testParseAndNormalizeAccelUri() throws Exception {
-    Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=proxy"
+    Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=accel"
                         + "&gadget=http%3A%2F%2Fwww.1.com%2Fa.html"
                         + "&url=http%3A%2F%2Fwww.example.org%2Findex.html");
-    assertEquals(Uri.parse("//apache.org/gadgets/accel?container=proxy"
+    HttpRequest req = new HttpRequest(uri);
+    assertEquals(Uri.parse("//apache.org/gadgets/accel?container=accel"
                  + "&gadget=http%3A%2F%2Fwww.1.com%2Fa.html"
                  + "&debug=0&nocache=0&refresh=0"
                  + "&url=http%3A%2F%2Fwww.example.org%2Findex.html"),
-                 uriManager.parseAndNormalize(uri));
+                 uriManager.parseAndNormalize(req));
   }
 
   @Test
   public void testLooksLikeAccelUri() throws Exception {
-    Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=proxy"
+    Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=accel"
                         + "&gadget=http%3A%2F%2Fwww.1.com%2Fa.html"
                         + "&url=http%3A%2F%2Fwww.example.org%2Findex.html");
     assertTrue(uriManager.looksLikeAccelUri(uri));