Author: [email protected]
Date: Tue Apr  5 10:28:58 2011
New Revision: 942

Log:
[sandbox] ShindigRegistrationServiceImpl must monitor DispatcherService to 
manage shindig servlet lifecycles

Modified:
   
branches/AMDATU-283-dev/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java
   
branches/AMDATU-283-dev/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigRegistrationServiceImpl.java

Modified: 
branches/AMDATU-283-dev/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java
==============================================================================
--- 
branches/AMDATU-283-dev/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java
   (original)
+++ 
branches/AMDATU-283-dev/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/osgi/Activator.java
   Tue Apr  5 10:28:58 2011
@@ -146,6 +146,7 @@
             createComponent()
                 .setImplementation(ShindigRegistrationServiceImpl.class)
                 .setInterface(new String[] { ShindigService.class.getName() }, 
null)
+                
.add(createServiceDependency().setService(DispatcherService.class).setRequired(true))
                 
.add(createServiceDependency().setService(LogService.class).setRequired(true))
                 
.add(createServiceDependency().setService(GuiceInjectorService.class).setRequired(true))
                 
.add(createServiceDependency().setService(SocialApiModule.class).setRequired(true))

Modified: 
branches/AMDATU-283-dev/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigRegistrationServiceImpl.java
==============================================================================
--- 
branches/AMDATU-283-dev/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigRegistrationServiceImpl.java
   (original)
+++ 
branches/AMDATU-283-dev/amdatu-opensocial/shindig/src/main/java/org/amdatu/opensocial/shindig/service/ShindigRegistrationServiceImpl.java
   Tue Apr  5 10:28:58 2011
@@ -33,7 +33,6 @@
 import org.amdatu.opensocial.shindig.ShindigService;
 import org.amdatu.opensocial.shindig.osgi.Activator;
 import org.amdatu.web.dispatcher.DispatcherService;
-import org.amdatu.web.httpcontext.ResourceProvider;
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
 import org.apache.shindig.auth.AuthenticationServletFilter;
@@ -48,14 +47,12 @@
 import org.apache.shindig.protocol.JsonRpcServlet;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
-import org.osgi.service.http.HttpService;
 import org.osgi.service.log.LogService;
 
 /**
- * This service is responsible for registration and unregistration of Shindig 
servlets, filters and static
- * resources.
- * 
- * @author ivol
+ * This service manages construction/destruction and 
registration/deregistration of
+ * shindig servlets and filters. These depend on 
<code>GuiceInjectorService</code>
+ * availability and <code>DispatcherService</code> lifecycle.
  */
 public class ShindigRegistrationServiceImpl implements ShindigService {
 
@@ -104,7 +101,6 @@
         registerAuthenticationFilter();
 
         m_logService.log(LogService.LOG_INFO, getClass().getName() + " service 
initialized");
-
     }
 
     /**
@@ -210,30 +206,28 @@
     }
 
     /**
-     * This method sets the given {@link HttpService} object and initializes 
all Shindig-specific servlets.
-     * Since it can only be invoked when the Guice context is available, it is 
invoked from there
+     * Register additional servlets
      */
     private void registerResources() {
         try {
             // Register the gadget rendering servlet. The gadget rendering 
servlet takes a gadget XML file
             // (for example 
http://gerculanum.appspot.com/gadgets/com.example.chessgadget.client.ChessGadget.gadget.xml)
             // and converts it to HTML. 'ifr' stands for the 'iframe' way of 
gadget rendering
-            registerServlet(GADGET_SERVLET_BASE, new GadgetRenderingServlet());
+            registerServlet(GADGET_SERVLET_BASE, new GadgetRenderingServlet(), 
null);
+
+            registerServlet(MAKEREQUEST_BASE, new MakeRequestServlet(), null);
+            registerServlet(PROXY_BASE, new ProxyServlet(), null);
+            registerServlet(CONCAT_BASE, new ConcatProxyServlet(), null);
+            registerServlet(OAUTH_CALLBACK_BASE, new OAuthCallbackServlet(), 
null);
+            registerServlet(METADATA_BASE, new RpcServlet(), null);
+            registerServlet(JS_BASE, new JsServlet(), null);
 
-            // Register other servlets
             Properties servletProperties = new Properties();
             servletProperties.put("init.handlers", 
"org.apache.shindig.social.handlers");
-            registerServlet(MAKEREQUEST_BASE, new MakeRequestServlet());
-            registerServlet(PROXY_BASE, new ProxyServlet());
-            registerServlet(CONCAT_BASE, new ConcatProxyServlet());
-            registerServlet(OAUTH_CALLBACK_BASE, new OAuthCallbackServlet());
-            registerServlet(METADATA_BASE, new RpcServlet());
-            registerServlet(JS_BASE, new JsServlet());
             registerServlet(REST_BASE, new DataServiceServlet(), 
servletProperties);
             registerServlet(GADGETS_REST_BASE, new DataServiceServlet(), 
servletProperties);
             registerServlet(GADGETS_RPC_BASE, new JsonRpcServlet(), 
servletProperties);
             registerServlet(ECHO_BASE, new EchoServlet(), servletProperties);
-
         }
         catch (Throwable t) {
             m_logService.log(LogService.LOG_ERROR, "Can not activate 
OpenSocial API.", t);
@@ -241,41 +235,23 @@
     }
 
     /**
-     * This method sets the given {@link HttpService} object and deregisters 
all Shindig-specific servlets.
+     * Destroy all components to guard Servlet lifecycle
      */
     private void unregisterResources() {
         for (Component servletComponent : m_registeredServletComponents) {
             m_dependencyManager.remove(servletComponent);
         }
         m_registeredServletComponents.clear();
-
-    }
-
-    public URL getResource(String name) {
-        final String pathPrefix = Activator.ALIAS + "/";
-        if (name != null && name.startsWith(pathPrefix)) {
-            return 
m_bundleContext.getBundle().getResource(name.substring(pathPrefix.length()));
-        }
-        return null;
-    }
-
-    private void registerServlet(String alias, Servlet servlet) {
-        registerServlet(alias, servlet, null);
     }
 
     /**
-     * Registers a servlet whiteboard-style. Note that we should not mix 
whiteboard style with direct calls to the
-     * HttpService;
-     * they do not share the same servlet context and the Guice injector is 
only registered on the servlet context for
-     * the
-     * whiteboard-style http service.
+     * Register servlet under the common opensoial contextId
      */
     private void registerServlet(String alias, Servlet servlet, Properties 
servletProperties) {
-        Properties properties = new Properties();
+        final Properties properties = new Properties();
         if (servletProperties != null) {
             properties.putAll(servletProperties);
         }
-
         properties.put(DispatcherService.ALIAS_KEY, alias);
         properties.put(DispatcherService.CONTEXT_ID_KEY, Activator.CONTEXTID);
 
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to