Author: doll
Date: Fri Jun 13 15:20:38 2008
New Revision: 667673

URL: http://svn.apache.org/viewvc?rev=667673&view=rev
Log:
The dataservice restful code now outputs xml with the beanXmlConverter if the 
format=atom. It does this by setting the converter field on the handler to the 
appropriate BeanConverter impl. 

Also made the handlers injected by class instead of object. This gives us the 
ability to make a new instance for each handler. So, the handlers can keep 
track of state if they need to.

End to end tests coming soon... 



Added:
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java
Modified:
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/ActivityHandler.java
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataRequestHandler.java
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/PersonHandler.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataRequestHandlerTest.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/SocialApiGuiceModule.java
 Fri Jun 13 15:20:38 2008
@@ -19,6 +19,9 @@
 package org.apache.shindig.social;
 
 import org.apache.shindig.social.abdera.SocialRouteManager;
+import org.apache.shindig.social.dataservice.ActivityService;
+import org.apache.shindig.social.dataservice.AppDataService;
+import org.apache.shindig.social.dataservice.PersonService;
 import org.apache.shindig.social.opensocial.ActivitiesService;
 import org.apache.shindig.social.opensocial.DataService;
 import org.apache.shindig.social.opensocial.OpenSocialDataHandler;
@@ -28,17 +31,14 @@
 import org.apache.shindig.social.samplecontainer.BasicPeopleService;
 import org.apache.shindig.social.samplecontainer.SampleContainerRouteManager;
 import org.apache.shindig.social.samplecontainer.StateFileDataHandler;
-import org.apache.shindig.social.dataservice.*;
 
 import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
 import com.google.inject.AbstractModule;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.TypeLiteral;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * Provides social api component injection
@@ -54,8 +54,7 @@
 
     bind(new TypeLiteral<List<GadgetDataHandler>>() {})
         .toProvider(GadgetDataHandlersProvider.class);
-    bind(new TypeLiteral<Map<String, DataRequestHandler>>() {})
-        .toProvider(DataRequestHandlersProvider.class);
+
     bind(PersonService.class).to(BasicPeopleService.class);
     bind(ActivityService.class).to(BasicActivitiesService.class);
     bind(AppDataService.class).to(BasicDataService.class);
@@ -78,21 +77,4 @@
     }
   }
 
-  public static class DataRequestHandlersProvider
-      implements Provider<Map<String, DataRequestHandler>> {
-    Map<String, DataRequestHandler> handlers;
-
-    @Inject
-    public DataRequestHandlersProvider(PersonHandler peopleHandler, 
ActivityHandler activityHandler, AppDataHandler appDataHandler) {
-      handlers = Maps.newHashMap();
-      handlers.put(DataServiceServlet.PEOPLE_ROUTE, peopleHandler);
-      handlers.put(DataServiceServlet.ACTIVITY_ROUTE, activityHandler);
-      handlers.put(DataServiceServlet.APPDATA_ROUTE, appDataHandler);
-    }
-
-    public Map<String, DataRequestHandler> get() {
-      return handlers;
-    }
-  }
-
 }

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/ActivityHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/ActivityHandler.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/ActivityHandler.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/ActivityHandler.java
 Fri Jun 13 15:20:38 2008
@@ -30,8 +30,7 @@
   private ActivityService service;
 
   @Inject
-  public ActivityHandler(ActivityService service, BeanJsonConverter converter) 
{
-    super(converter);
+  public ActivityHandler(ActivityService service) {
     this.service = service;
   }
 

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataHandler.java
 Fri Jun 13 15:20:38 2008
@@ -33,8 +33,7 @@
   private AppDataService service;
 
   @Inject
-  public AppDataHandler(AppDataService service, BeanJsonConverter converter) {
-    super(converter);
+  public AppDataHandler(AppDataService service) {
     this.service = service;
   }
 

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataRequestHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataRequestHandler.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataRequestHandler.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataRequestHandler.java
 Fri Jun 13 15:20:38 2008
@@ -19,10 +19,10 @@
 
 import org.apache.shindig.common.SecurityToken;
 import org.apache.shindig.social.ResponseItem;
-import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
+import org.apache.shindig.social.opensocial.util.BeanConverter;
 
-import com.google.inject.Inject;
 import com.google.common.collect.Lists;
+import org.apache.commons.lang.StringUtils;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -30,14 +30,11 @@
 import java.io.PrintWriter;
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
-
 public abstract class DataRequestHandler {
-  protected BeanJsonConverter converter;
+  protected BeanConverter converter;
   protected static final String APP_SUBSTITUTION_TOKEN = "@app";
 
-  @Inject
-  DataRequestHandler(BeanJsonConverter converter) {
+  public void setConverter(BeanConverter converter) {
     this.converter = converter;
   }
 
@@ -61,7 +58,7 @@
     }
     if (responseItem.getError() == null) {
       PrintWriter writer = servletResponse.getWriter();
-      
writer.write(converter.convertToJson(responseItem.getResponse()).toString());
+      writer.write(converter.convertToString(responseItem.getResponse()));
     } else {
       // throw an error
     }

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/DataServiceServlet.java
 Fri Jun 13 15:20:38 2008
@@ -18,11 +18,15 @@
 package org.apache.shindig.social.dataservice;
 
 import com.google.inject.Inject;
+import com.google.inject.Injector;
 
 import org.apache.shindig.common.SecurityTokenDecoder;
 import org.apache.shindig.common.SecurityToken;
 import org.apache.shindig.common.SecurityTokenException;
 import org.apache.shindig.common.servlet.InjectedServlet;
+import org.apache.shindig.social.opensocial.util.BeanConverter;
+import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
+import org.apache.shindig.social.opensocial.util.BeanXmlConverter;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -35,10 +39,11 @@
 
 public class DataServiceServlet extends InjectedServlet {
 
-  protected static final String X_HTTP_METHOD_OVERRIDE
-      = "X-HTTP-Method-Override";
+  protected static final String X_HTTP_METHOD_OVERRIDE = 
"X-HTTP-Method-Override";
   protected static final String SECURITY_TOKEN_PARAM = "st";
   protected static final String REQUEST_PARAMETER = "request";
+  protected static final String FORMAT_PARAM = "format";
+  protected static final String ATOM_FORMAT = "atom";
 
   public static final String PEOPLE_ROUTE = "people";
   public static final String ACTIVITY_ROUTE = "activities";
@@ -48,11 +53,13 @@
       "org.apache.shindig.social.dataservice");
 
   private SecurityTokenDecoder securityTokenDecoder;
-  private Map<String, DataRequestHandler> handlers;
+  private Map<String, Class<? extends DataRequestHandler>> handlers;
+  private BeanJsonConverter jsonConverter;
+  private BeanXmlConverter xmlConverter;
 
   @Inject
-  public void setHandlers(Map<String, DataRequestHandler> handlers) {
-    this.handlers = handlers;
+  public void setHandlers(HandlerProvider handlers) {
+    this.handlers = handlers.get();
   }
 
   @Inject
@@ -61,6 +68,17 @@
     this.securityTokenDecoder = securityTokenDecoder;
   }
 
+  @Inject
+  public void setBeanConverters(BeanJsonConverter jsonConverter, 
BeanXmlConverter xmlConverter) {
+    this.jsonConverter = jsonConverter;
+    this.xmlConverter = xmlConverter;
+  }
+
+  // Only for testing use. Do not override the injector.
+  void setInjector(Injector injector) {
+    this.injector = injector;
+  }
+
   protected void doGet(HttpServletRequest servletRequest,
       HttpServletResponse servletResponse)
       throws ServletException, IOException {
@@ -82,14 +100,21 @@
   protected void doPost(HttpServletRequest servletRequest,
       HttpServletResponse servletResponse)
       throws ServletException, IOException {
+    String path = servletRequest.getPathInfo();
+    logger.finest("Handling restful request for " + path);
+
     servletRequest.setCharacterEncoding("UTF-8");
 
-    String route = getRouteFromParameter(servletRequest.getPathInfo());
-    DataRequestHandler handler = handlers.get(route);
-    if (handler == null) {
+    String route = getRouteFromParameter(path);
+    Class<? extends DataRequestHandler> handlerClass = handlers.get(route);
+
+    if (handlerClass == null) {
       throw new RuntimeException("No handler for route: " + route);
     }
 
+    DataRequestHandler handler = injector.getInstance(handlerClass);
+    handler.setConverter(getConverterForRequest(servletRequest));
+
     String method = getHttpMethodFromParameter(servletRequest.getMethod(),
         servletRequest.getParameter(X_HTTP_METHOD_OVERRIDE));
     try {
@@ -100,7 +125,14 @@
       throw new RuntimeException(
           "Implement error return for bad security token.");
     }
+  }
 
+  /*package-protected*/ BeanConverter 
getConverterForRequest(HttpServletRequest servletRequest) {
+    String formatString = servletRequest.getParameter(FORMAT_PARAM);
+    if (!StringUtils.isBlank(formatString) && 
formatString.equals(ATOM_FORMAT)) {
+      return xmlConverter;
+    }
+    return jsonConverter;
   }
 
   /*package-protected*/ String getHttpMethodFromParameter(String method,

Added: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java?rev=667673&view=auto
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java
 (added)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/HandlerProvider.java
 Fri Jun 13 15:20:38 2008
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.social.dataservice;
+
+import com.google.inject.Inject;
+import com.google.common.collect.Maps;
+
+import java.util.Map;
+
+// TODO: We may want to extract an interface here for easier overriding
+// For now you can subclass it and inject with guice
+public class HandlerProvider {
+  Map<String, Class<? extends DataRequestHandler>> handlers;
+
+  @Inject
+  public HandlerProvider(PersonHandler peopleHandler, ActivityHandler 
activityHandler,
+      AppDataHandler appDataHandler) {
+    handlers = Maps.newHashMap();
+    handlers.put(DataServiceServlet.PEOPLE_ROUTE, peopleHandler.getClass());
+    handlers.put(DataServiceServlet.ACTIVITY_ROUTE, 
activityHandler.getClass());
+    handlers.put(DataServiceServlet.APPDATA_ROUTE, appDataHandler.getClass());
+  }
+
+  public Map<String, Class<? extends DataRequestHandler>> get() {
+    return handlers;
+  }
+}

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/PersonHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/PersonHandler.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/PersonHandler.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/PersonHandler.java
 Fri Jun 13 15:20:38 2008
@@ -35,9 +35,7 @@
   private PersonService personService;
 
   @Inject
-  public PersonHandler(PersonService personService,
-      BeanJsonConverter converter) {
-    super(converter);
+  public PersonHandler(PersonService personService) {
     this.personService = personService;
   }
 

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/ActivityHandlerTest.java
 Fri Jun 13 15:20:38 2008
@@ -43,7 +43,8 @@
     servletRequest = EasyMock.createMock(HttpServletRequest.class);
     activityService = EasyMock.createMock(ActivityService.class);
 
-    handler = new ActivityHandler(activityService, converter);
+    handler = new ActivityHandler(activityService);
+    handler.setConverter(converter);
   }
 
   private void replay() {

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/AppDataHandlerTest.java
 Fri Jun 13 15:20:38 2008
@@ -44,7 +44,8 @@
     servletRequest = EasyMock.createMock(HttpServletRequest.class);
     appDataService = EasyMock.createMock(AppDataService.class);
 
-    handler = new AppDataHandler(appDataService, converter);
+    handler = new AppDataHandler(appDataService);
+    handler.setConverter(converter);
   }
 
   private void replay() {

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataRequestHandlerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataRequestHandlerTest.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataRequestHandlerTest.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataRequestHandlerTest.java
 Fri Jun 13 15:20:38 2008
@@ -45,7 +45,7 @@
     resp = EasyMock.createMock(HttpServletResponse.class);
     converter = EasyMock.createMock(BeanJsonConverter.class);
 
-    drh = new DataRequestHandler(converter) {
+    drh = new DataRequestHandler() {
       ResponseItem handleDelete(HttpServletRequest servletRequest,
           SecurityToken token) {
         return new ResponseItem<String>("DELETE");
@@ -66,6 +66,8 @@
         return new ResponseItem<String>("GET");
       }
     };
+
+    drh.setConverter(converter);
   }
 
   public void testHandleMethodSuccess() throws Exception {
@@ -78,7 +80,7 @@
   private void verifyDispatchMethodCalled(String methodName, BeanJsonConverter 
converter)
       throws IOException {
     String jsonObject = "my lovely json";
-    EasyMock.expect(converter.convertToJson(methodName)).andReturn(jsonObject);
+    
EasyMock.expect(converter.convertToString(methodName)).andReturn(jsonObject);
 
     PrintWriter writerMock = EasyMock.createMock(PrintWriter.class);
     EasyMock.expect(resp.getWriter()).andReturn(writerMock);
@@ -107,7 +109,7 @@
   }
 
   public void testHandleMethodFailure() throws Exception {
-    drh = new DataRequestHandler(null) {
+    drh = new DataRequestHandler() {
       ResponseItem handleDelete(HttpServletRequest servletRequest,
           SecurityToken token) {
         return null;

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/DataServiceServletTest.java
 Fri Jun 13 15:20:38 2008
@@ -20,14 +20,17 @@
 import org.apache.shindig.common.BasicSecurityTokenDecoder;
 import org.apache.shindig.common.SecurityTokenException;
 import org.apache.shindig.common.testing.FakeGadgetToken;
+import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
+import org.apache.shindig.social.opensocial.util.BeanXmlConverter;
+import org.apache.shindig.social.opensocial.util.BeanConverter;
 
 import com.google.common.collect.Maps;
+import com.google.inject.Injector;
 import junit.framework.TestCase;
 import org.easymock.classextension.EasyMock;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
 import java.util.Map;
 
 public class DataServiceServletTest extends TestCase {
@@ -38,26 +41,33 @@
   private ActivityHandler activityHandler;
   private AppDataHandler appDataHandler;
   private BasicSecurityTokenDecoder tokenDecoder;
+  protected Injector injector;
 
   protected void setUp() throws Exception {
+    servlet = new DataServiceServlet();
     req = EasyMock.createMock(HttpServletRequest.class);
     res = EasyMock.createMock(HttpServletResponse.class);
 
-    Map<String, DataRequestHandler> handlers = Maps.newHashMap();
     peopleHandler = EasyMock.createMock(PersonHandler.class);
     activityHandler = EasyMock.createMock(ActivityHandler.class);
     appDataHandler = EasyMock.createMock(AppDataHandler.class);
 
-    handlers.put(DataServiceServlet.PEOPLE_ROUTE, peopleHandler);
-    handlers.put(DataServiceServlet.ACTIVITY_ROUTE, activityHandler);
-    handlers.put(DataServiceServlet.APPDATA_ROUTE, appDataHandler);
-    servlet = new DataServiceServlet();
-    servlet.setHandlers(handlers);
+    injector = EasyMock.createMock(Injector.class);
+    servlet.setInjector(injector);
+
+    servlet.setHandlers(new HandlerProvider(new PersonHandler(null), new 
ActivityHandler(null),
+        new AppDataHandler(null)));
 
     tokenDecoder = EasyMock.createMock(BasicSecurityTokenDecoder.class);
     servlet.setSecurityTokenDecoder(tokenDecoder);
   }
 
+  private void setupInjector() {
+    
EasyMock.expect(injector.getInstance(PersonHandler.class)).andStubReturn(peopleHandler);
+    
EasyMock.expect(injector.getInstance(ActivityHandler.class)).andStubReturn(activityHandler);
+    
EasyMock.expect(injector.getInstance(AppDataHandler.class)).andStubReturn(appDataHandler);
+  }
+
   public void testPeopleUriRecognition() throws Exception {
     verifyHandlerWasFoundForPathInfo("/"
         + DataServiceServlet.PEOPLE_ROUTE + "/5/@self", peopleHandler);
@@ -99,6 +109,7 @@
     EasyMock.expect(req.getMethod()).andReturn(actualMethod);
     
EasyMock.expect(req.getParameter(DataServiceServlet.X_HTTP_METHOD_OVERRIDE)).andReturn(
         overrideMethod);
+    
EasyMock.expect(req.getParameter(DataServiceServlet.FORMAT_PARAM)).andReturn(null);
 
     String tokenString = "owner:viewer:app:container.com:foo:bar";
     FakeGadgetToken token = new FakeGadgetToken();
@@ -106,12 +117,14 @@
         .andReturn(tokenString);
     EasyMock.expect(tokenDecoder.createToken(tokenString)).andReturn(token);
 
+    setupInjector();
+    handler.setConverter(null);
     handler.handleMethod(expectedMethod, req, res, token);
 
-    EasyMock.replay(req, res, handler, tokenDecoder);
+    EasyMock.replay(req, res, handler, tokenDecoder, injector);
     servlet.service(req, res);
-    EasyMock.verify(req, res, handler, tokenDecoder);
-    EasyMock.reset(req, res, handler, tokenDecoder);
+    EasyMock.verify(req, res, handler, tokenDecoder, injector);
+    EasyMock.reset(req, res, handler, tokenDecoder, injector);
   }
 
   public void testInvalidRoute() throws Exception {
@@ -134,13 +147,16 @@
     EasyMock.expect(req.getPathInfo()).andReturn("/" + 
DataServiceServlet.APPDATA_ROUTE);
     EasyMock.expect(req.getMethod()).andReturn("POST");
     
EasyMock.expect(req.getParameter(DataServiceServlet.X_HTTP_METHOD_OVERRIDE)).andReturn("POST");
+    
EasyMock.expect(req.getParameter(DataServiceServlet.FORMAT_PARAM)).andReturn(null);
 
     String tokenString = "owner:viewer:app:container.com:foo:bar";
     EasyMock.expect(req.getParameter(DataServiceServlet.SECURITY_TOKEN_PARAM))
         .andReturn(tokenString);
     EasyMock.expect(tokenDecoder.createToken(tokenString)).andThrow(new 
SecurityTokenException(""));
 
-    EasyMock.replay(req, tokenDecoder);
+    setupInjector();
+
+    EasyMock.replay(req, tokenDecoder, injector);
     try {
       servlet.doPost(req, res);
       fail("The route should have thrown an exception due to the invalid 
security token.");
@@ -150,7 +166,7 @@
       // instead of just throwing an exception.
       assertEquals("Implement error return for bad security token.", 
e.getMessage());
     }
-    EasyMock.verify(req, tokenDecoder);
+    EasyMock.verify(req, tokenDecoder, injector);
   }
 
   public void testGetHttpMethodFromParameter() throws Exception {
@@ -167,4 +183,23 @@
     assertEquals("path", servlet.getRouteFromParameter("/path/fun/yes"));
   }
 
+  public void testGetConverterForRequest() throws Exception {
+    BeanJsonConverter json = new BeanJsonConverter();
+    BeanXmlConverter xml = new BeanXmlConverter();
+    servlet.setBeanConverters(json, xml);
+
+    assertConverter(xml, "atom");
+    assertConverter(json, "");
+    assertConverter(json, null);
+    assertConverter(json, "ahhhh!");
+  }
+
+  private void assertConverter(BeanConverter converter, String format) {
+    
EasyMock.expect(req.getParameter(DataServiceServlet.FORMAT_PARAM)).andReturn(format);
+    EasyMock.replay(req);
+    assertEquals(converter, servlet.getConverterForRequest(req));
+    EasyMock.verify(req);
+    EasyMock.reset(req);
+  }
+
 }

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java?rev=667673&r1=667672&r2=667673&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/PersonHandlerTest.java
 Fri Jun 13 15:20:38 2008
@@ -43,7 +43,8 @@
     servletRequest = EasyMock.createMock(HttpServletRequest.class);
     personService = EasyMock.createMock(PersonService.class);
 
-    handler = new PersonHandler(personService, converter);
+    handler = new PersonHandler(personService);
+    handler.setConverter(converter);
   }
 
   private void replay() {


Reply via email to