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