You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by ev...@apache.org on 2008/10/07 22:40:18 UTC

svn commit: r702623 - in /incubator/shindig/trunk/java: server/src/test/java/org/apache/shindig/server/endtoend/ social-api/src/main/java/org/apache/shindig/social/core/config/ social-api/src/main/java/org/apache/shindig/social/opensocial/service/ soci...

Author: evan
Date: Tue Oct  7 13:40:18 2008
New Revision: 702623

URL: http://svn.apache.org/viewvc?rev=702623&view=rev
Log:
Patch for SHINDIG-641 - Simplify DataRequestHandler dispatching

Removed:
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/HandlerProvider.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/service/SampleContainerHandlerProvider.java
Modified:
    incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ApiServlet.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/JsonRpcServletTest.java

Modified: incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java?rev=702623&r1=702622&r2=702623&view=diff
==============================================================================
--- incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java (original)
+++ incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndModule.java Tue Oct  7 13:40:18 2008
@@ -26,7 +26,6 @@
 import org.apache.shindig.social.core.util.BeanAtomConverter;
 import org.apache.shindig.social.opensocial.service.BeanConverter;
 import org.apache.shindig.social.opensocial.service.DataServiceServletFetcher;
-import org.apache.shindig.social.opensocial.service.HandlerProvider;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.TypeLiteral;

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java?rev=702623&r1=702622&r2=702623&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java Tue Oct  7 13:40:18 2008
@@ -27,10 +27,13 @@
 import org.apache.shindig.social.core.util.BeanXmlConverter;
 import org.apache.shindig.social.opensocial.service.BeanConverter;
 import org.apache.shindig.social.opensocial.service.DataServiceServletFetcher;
-import org.apache.shindig.social.opensocial.service.HandlerProvider;
-import org.apache.shindig.social.sample.service.SampleContainerHandlerProvider;
+import org.apache.shindig.social.opensocial.service.StandardHandlerDispatcher;
+import org.apache.shindig.social.opensocial.service.HandlerDispatcher;
+import org.apache.shindig.social.sample.service.SampleContainerHandler;
 
 import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
 import com.google.inject.TypeLiteral;
 import com.google.inject.name.Names;
 
@@ -47,7 +50,7 @@
   /** {@inheritDoc} */
   @Override
   protected void configure() {
-    bind(HandlerProvider.class).to(SampleContainerHandlerProvider.class);
+    bind(HandlerDispatcher.class).toProvider(HandlerDispatcherProvider.class);
 
     bind(ParameterFetcher.class).annotatedWith(Names.named("DataServiceServlet"))
         .to(DataServiceServletFetcher.class);
@@ -69,4 +72,23 @@
     bind(new TypeLiteral<List<AuthenticationHandler>>(){}).toProvider(
         AuthenticationHandlerProvider.class);
   }
+
+  /**
+   * Provider for the HandlerDispatcher.  Adds the sample container handler
+   * at "samplecontainer".
+   */
+  static class HandlerDispatcherProvider implements Provider<HandlerDispatcher> {
+    private final HandlerDispatcher dispatcher;
+
+    @Inject
+    public HandlerDispatcherProvider(StandardHandlerDispatcher dispatcher,
+        Provider<SampleContainerHandler> sampleHandler) {
+      dispatcher.addHandler("samplecontainer", sampleHandler);
+      this.dispatcher = dispatcher;
+    }
+
+    public HandlerDispatcher get() {
+      return dispatcher;
+    }
+  }
 }

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ApiServlet.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ApiServlet.java?rev=702623&r1=702622&r2=702623&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ApiServlet.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ApiServlet.java Tue Oct  7 13:40:18 2008
@@ -26,12 +26,10 @@
 import org.apache.shindig.social.opensocial.spi.SocialSpiException;
 
 import com.google.inject.Inject;
-import com.google.inject.Provider;
 import com.google.inject.name.Named;
 
 import java.io.IOException;
 import java.util.Collections;
-import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import javax.servlet.http.HttpServletRequest;
@@ -43,14 +41,14 @@
 public abstract class ApiServlet extends InjectedServlet {
   protected static final String DEFAULT_ENCODING = "UTF-8";
 
-  private Map<String, Provider<? extends DataRequestHandler>> handlers;
+  private HandlerDispatcher dispatcher;
   protected BeanJsonConverter jsonConverter;
   protected BeanConverter xmlConverter;
   protected BeanConverter atomConverter;
 
   @Inject
-  public void setHandlers(HandlerProvider handlers) {
-    this.handlers = handlers.get();
+  public void setHandlerDispatcher(HandlerDispatcher dispatcher) {
+    this.dispatcher = dispatcher;
   }
 
   @Inject
@@ -82,14 +80,13 @@
    */
   protected Future<?> handleRequestItem(RequestItem requestItem,
       HttpServletRequest servletRequest) {
-    Provider<? extends DataRequestHandler> handlerProvider = handlers.get(requestItem.getService());
+    DataRequestHandler handler = dispatcher.getHandler(requestItem.getService());
 
-    if (handlerProvider == null) {
+    if (handler == null) {
       return ImmediateFuture.errorInstance(new SocialSpiException(ResponseError.NOT_IMPLEMENTED,
           "The service " + requestItem.getService() + " is not implemented"));
     }
 
-    DataRequestHandler handler = handlerProvider.get();
     return handler.handleItem(requestItem);
   }
 

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java?rev=702623&r1=702622&r2=702623&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java Tue Oct  7 13:40:18 2008
@@ -22,12 +22,8 @@
 import org.apache.shindig.social.core.util.BeanAtomConverter;
 import org.apache.shindig.social.core.util.BeanJsonConverter;
 import org.apache.shindig.social.core.util.BeanXmlConverter;
-import org.apache.shindig.social.opensocial.service.ActivityHandler;
-import org.apache.shindig.social.opensocial.service.AppDataHandler;
-import org.apache.shindig.social.opensocial.service.DataRequestHandler;
 import org.apache.shindig.social.opensocial.service.DataServiceServlet;
-import org.apache.shindig.social.opensocial.service.HandlerProvider;
-import org.apache.shindig.social.opensocial.service.PersonHandler;
+import org.apache.shindig.social.opensocial.service.HandlerDispatcher;
 
 import com.google.common.collect.Maps;
 import com.google.inject.Guice;
@@ -69,7 +65,7 @@
     
     servlet = new DataServiceServlet();
 
-    servlet.setHandlers(injector.getInstance(HandlerProvider.class));
+    servlet.setHandlerDispatcher(injector.getInstance(HandlerDispatcher.class));
     servlet.setBeanConverters(new BeanJsonConverter(injector), new BeanXmlConverter(),
         new BeanAtomConverter());
 

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java?rev=702623&r1=702622&r2=702623&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java Tue Oct  7 13:40:18 2008
@@ -72,8 +72,9 @@
     activityHandler = EasyMock.createMock(ActivityHandler.class);
     appDataHandler = EasyMock.createMock(AppDataHandler.class);
 
-    servlet.setHandlers(new HandlerProvider(constant(peopleHandler),
-        constant(activityHandler), constant(appDataHandler)));
+    HandlerDispatcher dispatcher = new StandardHandlerDispatcher(constant(peopleHandler),
+        constant(activityHandler), constant(appDataHandler));
+    servlet.setHandlerDispatcher(dispatcher);
 
     servlet.setBeanConverters(jsonConverter, xmlConverter, atomConverter);
   }

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/JsonRpcServletTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/JsonRpcServletTest.java?rev=702623&r1=702622&r2=702623&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/JsonRpcServletTest.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/JsonRpcServletTest.java Tue Oct  7 13:40:18 2008
@@ -71,8 +71,9 @@
     activityHandler = EasyMock.createMock(ActivityHandler.class);
     appDataHandler = EasyMock.createMock(AppDataHandler.class);
 
-    servlet.setHandlers(new HandlerProvider(constant(peopleHandler), constant(activityHandler),
-        constant(appDataHandler)));
+    HandlerDispatcher dispatcher = new StandardHandlerDispatcher(constant(peopleHandler),
+        constant(activityHandler), constant(appDataHandler));
+    servlet.setHandlerDispatcher(dispatcher);
 
     servlet.setBeanConverters(jsonConverter, xmlConverter, atomConverter);
   }