You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by do...@apache.org on 2008/05/29 13:33:55 UTC

svn commit: r661297 - in /incubator/shindig/trunk/java/social-api/src: main/java/org/apache/shindig/social/ main/java/org/apache/shindig/social/abdera/ test/java/org/apache/shindig/social/abdera/

Author: doll
Date: Thu May 29 04:33:55 2008
New Revision: 661297

URL: http://svn.apache.org/viewvc?rev=661297&view=rev
Log:
SHINDIG-268
Patch from David Primmer. Moves the route adding logic from the SocialApiProvider to the SocialRouteManager.


Modified:
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/RestServerServlet.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialRouteManager.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/RouteManagerTest.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/SocialApiProviderTestFixture.java

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/RestServerServlet.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/RestServerServlet.java?rev=661297&r1=661296&r2=661297&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/RestServerServlet.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/RestServerServlet.java Thu May 29 04:33:55 2008
@@ -18,19 +18,19 @@
  */
 package org.apache.shindig.social;
 
+import com.google.inject.Injector;
+
 import org.apache.shindig.common.servlet.GuiceServletContextListener;
 
-import com.google.inject.Injector;
 import org.apache.abdera.protocol.server.Provider;
 import org.apache.abdera.protocol.server.servlet.AbderaServlet;
 
+import java.util.logging.Logger;
+
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.UnavailableException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.logging.Logger;
 
 /**
  * Superclass for all servlets related to processing of REST api.
@@ -42,6 +42,7 @@
  * instead of injecting (this) as the GadgetServlet does,
  * here the Provider is injected.
  */
+@SuppressWarnings("serial")
 public class RestServerServlet extends AbderaServlet {
   private static Logger logger =
       Logger.getLogger(RestServerServlet.class.getName());
@@ -77,25 +78,5 @@
               GuiceServletContextListener.class.getName() + " as a listener");
     }
     injector.injectMembers(provider);
-    // all providers should implement initialize() so injection could happen
-    try {
-      Method m = provider.getClass().getMethod("initialize", new Class<?>[0]);
-      m.invoke(provider);
-    } catch (IllegalArgumentException e) {
-      logger.severe(e.getMessage());
-      e.printStackTrace();
-    } catch (IllegalAccessException e) {
-      logger.severe(e.getMessage());
-      e.printStackTrace();
-    } catch (InvocationTargetException e) {
-      logger.severe(e.getMessage());
-      e.printStackTrace();
-    } catch (SecurityException e) {
-      logger.severe(e.getMessage());
-      e.printStackTrace();
-    } catch (NoSuchMethodException e) {
-      logger.severe(e.getMessage());
-      e.printStackTrace();
-    }
   }
 }

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java?rev=661297&r1=661296&r2=661297&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java Thu May 29 04:33:55 2008
@@ -21,68 +21,20 @@
 import org.apache.shindig.social.abdera.util.ValidRequestFilter;
 
 import com.google.inject.Inject;
-import org.apache.abdera.protocol.server.TargetType;
 import org.apache.abdera.protocol.server.impl.DefaultProvider;
 
 public class SocialApiProvider extends DefaultProvider {
-  //TODO why is this hardcoded here. can't this be from servletContext?
-  private static final String BASE = "/social/rest/";
-
-  private PersonAdapter personAdapter;
-  private DataAdapter dataAdapter;
-  private ActivityAdapter activityAdapter;
-
-  @Inject
-  public void setAdapters(
-      PersonAdapter personAdapter,
-      DataAdapter dataAdapter,
-      ActivityAdapter activityAdapter) {
-    this.personAdapter = personAdapter;
-    this.dataAdapter = dataAdapter;
-    this.activityAdapter = activityAdapter;
-  }
-
-  /**
-   * CollectionAdapters are provided via Guice and the RouteManager wires
-   * together the Routes, their TargetTypes and CollectionAdapters.
-   *
-   * TODO: Implement the group urls.
-   */
-  public void initialize() {
-    routeManager = new SocialRouteManager(BASE)
-        // People
-        .addRoute(RequestUrlTemplate.PROFILES_OF_CONNECTIONS_OF_USER,
-            TargetType.TYPE_COLLECTION, personAdapter)
-        .addRoute(RequestUrlTemplate.PROFILES_OF_FRIENDS_OF_USER,
-            TargetType.TYPE_COLLECTION, personAdapter)
-        .addRoute(RequestUrlTemplate.PROFILES_IN_GROUP_OF_USER,
-            TargetType.TYPE_COLLECTION, personAdapter)
-        .addRoute(RequestUrlTemplate.PROFILE_OF_CONNECTION_OF_USER,
-            TargetType.TYPE_ENTRY, personAdapter)
-        .addRoute(RequestUrlTemplate.PROFILE_OF_USER,
-            TargetType.TYPE_ENTRY, personAdapter)
-
-         // Activities
-        .addRoute(RequestUrlTemplate.ACTIVITIES_OF_USER,
-            TargetType.TYPE_COLLECTION, activityAdapter)
-        .addRoute(RequestUrlTemplate.ACTIVITIES_OF_FRIENDS_OF_USER,
-            TargetType.TYPE_COLLECTION, activityAdapter)
-        .addRoute(RequestUrlTemplate.ACTIVITIES_OF_GROUP_OF_USER,
-            TargetType.TYPE_COLLECTION, null)
-        .addRoute(RequestUrlTemplate.ACTIVITY_OF_USER,
-            TargetType.TYPE_ENTRY, activityAdapter)
-
-         // AppData
-        .addRoute(RequestUrlTemplate.APPDATA_OF_APP_OF_USER,
-            TargetType.TYPE_COLLECTION, dataAdapter)
-        .addRoute(RequestUrlTemplate.APPDATA_OF_FRIENDS_OF_USER,
-            TargetType.TYPE_COLLECTION, dataAdapter)
-        ;
-
+  public SocialApiProvider() {
     addFilter(new ValidRequestFilter());
     // JsonFilter should always be the last class in the chain of filters
     addFilter(new JSONFilter());
-    targetBuilder = routeManager;
-    targetResolver = routeManager;
+  }
+
+  @Inject
+  public void setSocialRouteManager(SocialRouteManager socialRouteManager) {
+    routeManager = socialRouteManager;
+    socialRouteManager.setRoutes();
+    setTargetBuilder(socialRouteManager);
+    setTargetResolver(socialRouteManager);
   }
 }

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialRouteManager.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialRouteManager.java?rev=661297&r1=661296&r2=661297&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialRouteManager.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialRouteManager.java Thu May 29 04:33:55 2008
@@ -17,19 +17,60 @@
  */
 package org.apache.shindig.social.abdera;
 
+import com.google.inject.Inject;
+
 import org.apache.abdera.protocol.server.CollectionAdapter;
 import org.apache.abdera.protocol.server.TargetType;
 import org.apache.abdera.protocol.server.impl.RouteManager;
 
-
 public class SocialRouteManager extends RouteManager {
+  private PersonAdapter personAdapter;
+  private DataAdapter dataAdapter;
+  private ActivityAdapter activityAdapter;
+  private static final String BASE = "/social/rest/";
   private String base;
 
-  /**
-   * @param base Should be the same as RequestContext.getContextPath()
-   */
-  public SocialRouteManager(String base) {
-    this.base = base;
+  public SocialRouteManager() {
+    this.base = BASE;
+  }
+
+  public void setRoutes() {
+        // People
+    this.addRoute(RequestUrlTemplate.PROFILES_OF_CONNECTIONS_OF_USER,
+            TargetType.TYPE_COLLECTION, personAdapter)
+        .addRoute(RequestUrlTemplate.PROFILES_OF_FRIENDS_OF_USER,
+            TargetType.TYPE_COLLECTION, personAdapter)
+        .addRoute(RequestUrlTemplate.PROFILES_IN_GROUP_OF_USER,
+            TargetType.TYPE_COLLECTION, personAdapter)
+        .addRoute(RequestUrlTemplate.PROFILE_OF_CONNECTION_OF_USER,
+            TargetType.TYPE_ENTRY, personAdapter)
+        .addRoute(RequestUrlTemplate.PROFILE_OF_USER,
+            TargetType.TYPE_ENTRY, personAdapter)
+
+        // Activities
+        .addRoute(RequestUrlTemplate.ACTIVITIES_OF_USER,
+            TargetType.TYPE_COLLECTION, activityAdapter)
+        .addRoute(RequestUrlTemplate.ACTIVITIES_OF_FRIENDS_OF_USER,
+            TargetType.TYPE_COLLECTION, activityAdapter)
+        .addRoute(RequestUrlTemplate.ACTIVITIES_OF_GROUP_OF_USER,
+            TargetType.TYPE_COLLECTION, null)
+        .addRoute(RequestUrlTemplate.ACTIVITY_OF_USER,
+            TargetType.TYPE_ENTRY, activityAdapter)
+
+        // AppData
+        .addRoute(RequestUrlTemplate.APPDATA_OF_APP_OF_USER,
+            TargetType.TYPE_COLLECTION, dataAdapter)
+        .addRoute(RequestUrlTemplate.APPDATA_OF_FRIENDS_OF_USER,
+            TargetType.TYPE_COLLECTION, dataAdapter)
+        ;
+  }
+
+  @Inject
+  public void setAdapters(PersonAdapter personAdapter, DataAdapter dataAdapter,
+      ActivityAdapter activityAdapter) {
+    this.personAdapter = personAdapter;
+    this.dataAdapter = dataAdapter;
+    this.activityAdapter = activityAdapter;
   }
 
   /**

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/RouteManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/RouteManagerTest.java?rev=661297&r1=661296&r2=661297&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/RouteManagerTest.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/RouteManagerTest.java Thu May 29 04:33:55 2008
@@ -24,11 +24,10 @@
 import org.junit.Test;
 
 public class RouteManagerTest extends SocialApiProviderTestFixture {
-
   private RouteManager rm;
 
   @Override
-  public void setUp(){
+  public void setUp() {
     rm = provider.getRouteManager();
   }
 
@@ -48,7 +47,7 @@
     mockAndResolve("appdata/x/@self/y");
   }
 
-  private void mockAndResolve(String path){
+  private void mockAndResolve(String path) {
     expect(request.getTargetPath()).andReturn(base + path);
     org.easymock.EasyMock.replay(request);
     assertNotNull("path = " + path, rm.resolve(request));

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/SocialApiProviderTestFixture.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/SocialApiProviderTestFixture.java?rev=661297&r1=661296&r2=661297&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/SocialApiProviderTestFixture.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/abdera/SocialApiProviderTestFixture.java Thu May 29 04:33:55 2008
@@ -17,20 +17,16 @@
  */
 package org.apache.shindig.social.abdera;
 
-import static org.easymock.EasyMock.expect;
-
 import org.apache.shindig.social.EasyMockTestCase;
 
 import org.apache.abdera.protocol.server.RequestContext;
 
-@SuppressWarnings("unchecked")
 public class SocialApiProviderTestFixture extends EasyMockTestCase {
-
   public final String base = "/social/rest/";
   public final RequestContext request = mock(RequestContext.class);
   public final SocialApiProvider provider = new SocialApiProvider();
 
   public SocialApiProviderTestFixture() {
-    provider.initialize();
+    provider.setSocialRouteManager(new SocialRouteManager());
   }
 }