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


Reply via email to