You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by lr...@apache.org on 2009/02/10 02:56:17 UTC

svn commit: r742818 - /incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/JettyLauncher.java

Author: lryan
Date: Tue Feb 10 01:56:17 2009
New Revision: 742818

URL: http://svn.apache.org/viewvc?rev=742818&view=rev
Log:
Enhanced jetty launcher can now run sample container

Modified:
    incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/JettyLauncher.java

Modified: incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/JettyLauncher.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/JettyLauncher.java?rev=742818&r1=742817&r2=742818&view=diff
==============================================================================
--- incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/JettyLauncher.java (original)
+++ incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/JettyLauncher.java Tue Feb 10 01:56:17 2009
@@ -17,24 +17,27 @@
  */
 package org.apache.shindig.server;
 
-import com.google.common.base.Join;
-import com.google.common.collect.Maps;
-
 import org.apache.shindig.auth.AuthenticationServletFilter;
 import org.apache.shindig.common.PropertiesModule;
 import org.apache.shindig.common.servlet.GuiceServletContextListener;
 import org.apache.shindig.gadgets.DefaultGuiceModule;
 import org.apache.shindig.gadgets.oauth.OAuthModule;
-import org.apache.shindig.gadgets.servlet.AuthenticationModule;
 import org.apache.shindig.gadgets.servlet.ConcatProxyServlet;
 import org.apache.shindig.gadgets.servlet.GadgetRenderingServlet;
+import org.apache.shindig.gadgets.servlet.JsServlet;
 import org.apache.shindig.gadgets.servlet.ProxyServlet;
+import org.apache.shindig.gadgets.servlet.RpcServlet;
+import org.apache.shindig.protocol.DataServiceServlet;
+import org.apache.shindig.protocol.JsonRpcServlet;
 import org.apache.shindig.server.endtoend.EndToEndModule;
-import org.apache.shindig.social.opensocial.service.DataServiceServlet;
-import org.apache.shindig.social.opensocial.service.JsonRpcServlet;
+
+import com.google.common.base.Join;
+import com.google.common.collect.Maps;
 import org.mortbay.jetty.Server;
 import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.DefaultServlet;
 import org.mortbay.jetty.servlet.ServletHolder;
+import org.mortbay.resource.Resource;
 
 import java.io.IOException;
 import java.util.Map;
@@ -49,21 +52,24 @@
   private static final String REST_BASE = "/social/rest/*";
   private static final String JSON_RPC_BASE = "/social/rpc/*";
   private static final String CONCAT_BASE = "/gadgets/concat";
+  private static final String GADGETS_FILES = "/gadgets/files/*";
+  private static final String JS_BASE = "/gadgets/js/*";
+  private static final String METADATA_BASE = "/gadgets/metadata/*";
 
   private Server server;
 
-  private JettyLauncher(int port) throws IOException {
+  private JettyLauncher(int port, final String trunk) throws IOException {
 
     server = new Server(port);
 
     Context context = new Context(server, "/", Context.SESSIONS);
+    context.setResourceBase(trunk + "/javascript");
     context.addEventListener(new GuiceServletContextListener());
 
     Map<String, String> initParams = Maps.newHashMap();
     String modules = Join
         .join(":", EndToEndModule.class.getName(), DefaultGuiceModule.class.getName(),
-            PropertiesModule.class.getName(), OAuthModule.class.getName(),
-            AuthenticationModule.class.getName());
+            PropertiesModule.class.getName(), OAuthModule.class.getName());
 
     initParams.put(GuiceServletContextListener.MODULES_ATTRIBUTE, modules);
     context.setInitParams(initParams);
@@ -72,6 +78,14 @@
     ServletHolder concatHolder = new ServletHolder(new ConcatProxyServlet());
     context.addServlet(concatHolder, CONCAT_BASE);
 
+    // Attach the JS
+    ServletHolder jsHolder = new ServletHolder(new JsServlet());
+    context.addServlet(jsHolder, JS_BASE);
+
+    // Attach the metatdata handler
+    ServletHolder metadataHolder = new ServletHolder(new RpcServlet());
+    context.addServlet(metadataHolder, METADATA_BASE);
+
     // Attach the Proxy
     ServletHolder proxyHolder = new ServletHolder(new ProxyServlet());
     context.addServlet(proxyHolder, PROXY_BASE);
@@ -89,6 +103,23 @@
     ServletHolder rpcServletHolder = new ServletHolder(new JsonRpcServlet());
     context.addServlet(rpcServletHolder, JSON_RPC_BASE);
     context.addFilter(AuthenticationServletFilter.class, JSON_RPC_BASE, 0);
+
+    DefaultServlet defaultServlet = new DefaultServlet() {
+      public Resource getResource(String s) {
+        // Skip Gzip
+        if (s.endsWith(".gz")) return null;
+        
+        String stripped = s.substring("/gadgets/files/".length());
+        try {
+          return Resource.newResource(trunk + "/javascript/" + stripped);
+        } catch (IOException ioe) {
+          ioe.printStackTrace();
+          return null;
+        }
+      }
+    };
+    ServletHolder defaultHolder = new ServletHolder(defaultServlet);
+    context.addServlet(defaultHolder, GADGETS_FILES);
   }
 
   public void start() throws Exception {
@@ -96,8 +127,13 @@
     server.join();
   }
 
+  /**
+   * Takes a single path which is the trunk root directory. Uses
+   * current root otherwise
+   */
   public static void main(String[] argv) throws Exception {
-    JettyLauncher server = new JettyLauncher(8080);
+    String trunk = argv.length == 0 ? System.getProperty("user.dir") : argv[0];
+    JettyLauncher server = new JettyLauncher(8080, trunk);
     server.start();
   }
 }