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/01/20 13:26:24 UTC

svn commit: r613541 - in /incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http: GadgetRenderingServlet.java JsServlet.java

Author: etnu
Date: Sun Jan 20 04:26:23 2008
New Revision: 613541

URL: http://svn.apache.org/viewvc?rev=613541&view=rev
Log:
Small patch to improve configurability of core servlets. JsServlet can now have a GagdetFeatureRegistry injected, and GadgetRenderingServlet now takes an entire GadgetServer instance rather than individual components. These changes make writing filters or using custom servlet containers more efficient.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderingServlet.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/JsServlet.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderingServlet.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderingServlet.java?rev=613541&r1=613540&r2=613541&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderingServlet.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/GadgetRenderingServlet.java Sun Jan 20 04:26:23 2008
@@ -17,7 +17,6 @@
 import org.apache.shindig.gadgets.BasicRemoteContentFetcher;
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContentFilter;
-import org.apache.shindig.gadgets.GadgetDataCache;
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.GadgetFeatureRegistry;
 import org.apache.shindig.gadgets.GadgetServer;
@@ -26,7 +25,6 @@
 import org.apache.shindig.gadgets.JsLibrary;
 import org.apache.shindig.gadgets.MessageBundle;
 import org.apache.shindig.gadgets.ProcessingOptions;
-import org.apache.shindig.gadgets.RemoteContentFetcher;
 import org.apache.shindig.gadgets.RenderingContext;
 import org.apache.shindig.gadgets.UserPrefs;
 
@@ -41,7 +39,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 
 import javax.servlet.ServletConfig;
@@ -56,6 +53,7 @@
 public class GadgetRenderingServlet extends HttpServlet {
   private GadgetServer gadgetServer;
   private String jsServicePath;
+  private boolean usingCustomServer = false;
   private GadgetFeatureRegistry registry;
   private static final String CAJA_PARAM = "caja";
   private static final String USERPREF_PARAM_PREFIX = "up_";
@@ -68,46 +66,42 @@
    * caches, etc.
    */
   public GadgetRenderingServlet() {
-    this(Executors.newCachedThreadPool(),
-         new BasicGadgetDataCache<MessageBundle>(),
-         new BasicGadgetDataCache<GadgetSpec>(),
-         new BasicRemoteContentFetcher(1024 * 1024));
+    gadgetServer = new GadgetServer(Executors.newCachedThreadPool());
+    gadgetServer.setMessageBundleCache(
+        new BasicGadgetDataCache<MessageBundle>());
+    gadgetServer.setSpecCache(new BasicGadgetDataCache<GadgetSpec>());
+    gadgetServer.setContentFetcher(new BasicRemoteContentFetcher(1024 * 1024));
+  }
+
+  /**
+   * Creates a servlet using a pre-configured server. Using this method
+   * will cause init to ignore feature loading parameters.
+   * @param server
+   */
+  public GadgetRenderingServlet(GadgetServer server) {
+    gadgetServer = server;
+    usingCustomServer = true;
   }
 
   @Override
   @SuppressWarnings("unchecked")
   public void init(ServletConfig config) {
     ServletContext context = config.getServletContext();
-    String features = context.getInitParameter("features");
     String jsPath = context.getInitParameter("js-service-path");
     if (jsPath == null) {
       jsPath = DEFAULT_JS_SERVICE_PATH;
     }
     jsServicePath = jsPath;
-    try {
-      registry = new GadgetFeatureRegistry(features);
-      gadgetServer.setGadgetFeatureRegistry(registry);
-    } catch (GadgetException e) {
-      e.printStackTrace();
-      System.exit(1);
+    if (!usingCustomServer) {
+      String features = context.getInitParameter("features");
+      try {
+        registry = new GadgetFeatureRegistry(features);
+        gadgetServer.setGadgetFeatureRegistry(registry);
+      } catch (GadgetException e) {
+        e.printStackTrace();
+        System.exit(1);
+      }
     }
-  }
-
-  /**
-   * A la carte rendering server creation.
-   * @param executor
-   * @param mbCache
-   * @param specCache
-   * @param fetcher
-   */
-  public GadgetRenderingServlet(Executor executor,
-                                GadgetDataCache<MessageBundle> mbCache,
-                                GadgetDataCache<GadgetSpec> specCache,
-                                RemoteContentFetcher fetcher) {
-    gadgetServer = new GadgetServer(executor);
-    gadgetServer.setMessageBundleCache(mbCache);
-    gadgetServer.setSpecCache(specCache);
-    gadgetServer.setContentFetcher(fetcher);
   }
 
   @Override

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/JsServlet.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/JsServlet.java?rev=613541&r1=613540&r2=613541&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/JsServlet.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/JsServlet.java Sun Jan 20 04:26:23 2008
@@ -36,18 +36,36 @@
  * Used by type=URL gadgets in loading JavaScript resources.
  */
 public class JsServlet extends HttpServlet {
-  private GadgetFeatureRegistry registry;
+  private GadgetFeatureRegistry registry = null;
+
+  /**
+   * Create a JsServlet using a pre-configured feature registry.
+   * @param registry
+   */
+  public JsServlet(GadgetFeatureRegistry registry) {
+    this.registry = registry;
+  }
+
+  /**
+   * Creates a JsServlet without a default registry; the registry will be
+   * created automatically when init is called.
+   */
+  public JsServlet() {
+    registry = null;
+  }
 
   @Override
   public void init(ServletConfig config) {
     ServletContext context = config.getServletContext();
-    String features = context.getInitParameter("features");
-    String jsPath = context.getInitParameter("js-service-path");
-    try {
-      registry = new GadgetFeatureRegistry(features);
-    } catch (GadgetException e) {
-      e.printStackTrace();
-      throw new RuntimeException(e);
+
+    if (registry == null) {
+      String features = context.getInitParameter("features");
+      try {
+        registry = new GadgetFeatureRegistry(features);
+      } catch (GadgetException e) {
+        e.printStackTrace();
+        throw new RuntimeException(e);
+      }
     }
   }