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