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/06/19 21:03:16 UTC

svn commit: r669654 - in /incubator/shindig/trunk/java/social-api/src: main/java/org/apache/shindig/social/ main/java/org/apache/shindig/social/dataservice/ main/java/org/apache/shindig/social/opensocial/ main/java/org/apache/shindig/social/opensocial/...

Author: doll
Date: Thu Jun 19 12:03:16 2008
New Revision: 669654

URL: http://svn.apache.org/viewvc?rev=669654&view=rev
Log:
SHINDIG-203
Updated the BeanJsonConverter to use guice to create class instances. This means that as long as Activity and MediaItem are bound in your guice modules the json will end up translating to the right implementation of those interfaces. 

This should finish up the extraction of interfaces for all of the opensocial model objects.  


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/opensocial/OpenSocialDataHandler.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Activity.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityImpl.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.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/DataServiceServletTest.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/util/BeanJsonConverterTest.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXmlConverterTest.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=669654&r1=669653&r2=669654&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 Thu Jun 19 12:03:16 2008
@@ -26,6 +26,10 @@
 import org.apache.shindig.social.opensocial.DataService;
 import org.apache.shindig.social.opensocial.OpenSocialDataHandler;
 import org.apache.shindig.social.opensocial.PeopleService;
+import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.ActivityImpl;
+import org.apache.shindig.social.opensocial.model.MediaItem;
+import org.apache.shindig.social.opensocial.model.MediaItemImpl;
 import org.apache.shindig.social.samplecontainer.BasicActivitiesService;
 import org.apache.shindig.social.samplecontainer.BasicDataService;
 import org.apache.shindig.social.samplecontainer.BasicPeopleService;
@@ -60,6 +64,9 @@
     bind(AppDataService.class).to(BasicDataService.class);
 
     bind(SocialRouteManager.class).to(SampleContainerRouteManager.class);
+
+    bind(Activity.class).to(ActivityImpl.class);
+    bind(MediaItem.class).to(MediaItemImpl.class);
   }
 
   public static class GadgetDataHandlersProvider

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=669654&r1=669653&r2=669654&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 Thu Jun 19 12:03:16 2008
@@ -63,8 +63,7 @@
     // TODO: Should we pass the groupId through to the service?
 
     String jsonActivity = request.getParameters().get("entry");
-    // TODO: Change this so that somehow we don't need to know the impl class.
-    Activity activity = converter.convertToObject(jsonActivity, ActivityImpl.class);
+    Activity activity = converter.convertToObject(jsonActivity, Activity.class);
 
     return service.createActivity(userId, activity, request.getToken());
   }

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/OpenSocialDataHandler.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/OpenSocialDataHandler.java?rev=669654&r1=669653&r2=669654&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/OpenSocialDataHandler.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/OpenSocialDataHandler.java Thu Jun 19 12:03:16 2008
@@ -146,7 +146,7 @@
           String personId = peopleIds.get(0);
 
           Activity activity = beanJsonConverter.convertToObject(
-              params.getString("activity"), ActivityImpl.class);
+              params.getString("activity"), Activity.class);
           response = activitiesHandler.createActivity(personId, activity,
               request.getToken());
           break;

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Activity.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Activity.java?rev=669654&r1=669653&r2=669654&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Activity.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Activity.java Thu Jun 19 12:03:16 2008
@@ -79,10 +79,9 @@
 
   void setUpdated(Date updated);
 
-  List<? extends MediaItem> getMediaItems();
+  List<MediaItem> getMediaItems();
 
-  // TODO: Change this to use the interface. This is only in place for the BeanJsonConverter
-  void setMediaItems(List<MediaItemImpl> mediaItems);
+  void setMediaItems(List<MediaItem> mediaItems);
 
   Long getPostedTime();
 

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityImpl.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityImpl.java?rev=669654&r1=669653&r2=669654&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityImpl.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityImpl.java Thu Jun 19 12:03:16 2008
@@ -29,7 +29,7 @@
   private String externalId;
   private String id;
   private Date updated;
-  private List<MediaItemImpl> mediaItems;
+  private List<MediaItem> mediaItems;
   private Long postedTime;
   private Float priority;
   private String streamFaviconUrl;
@@ -98,11 +98,11 @@
     this.updated = updated;
   }
 
-  public List<? extends MediaItem> getMediaItems() {
+  public List<MediaItem> getMediaItems() {
     return mediaItems;
   }
 
-  public void setMediaItems(List<MediaItemImpl> mediaItems) {
+  public void setMediaItems(List<MediaItem> mediaItems) {
     this.mediaItems = mediaItems;
   }
 

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java?rev=669654&r1=669653&r2=669654&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/util/BeanJsonConverter.java Thu Jun 19 12:03:16 2008
@@ -19,6 +19,8 @@
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.inject.Injector;
+import com.google.inject.Inject;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -44,6 +46,12 @@
   private static final String EXCLUDED_FIELDS = "class";
   private static final Pattern GETTER = Pattern.compile("^get([a-zA-Z]+)$");
   private static final Pattern SETTER = Pattern.compile("^set([a-zA-Z]+)$");
+  private Injector injector;
+
+  @Inject
+  public BeanJsonConverter(Injector injector) {
+    this.injector = injector;
+  }
 
   /**
    * Convert the passed in object to a string
@@ -171,7 +179,7 @@
     String errorMessage = "Could not convert " + json + " to " + className;
 
     try {
-      T pojo = className.newInstance();
+      T pojo = injector.getInstance(className);
       return convertToObject(json, pojo);
     } catch (JSONException e) {
       throw new RuntimeException(errorMessage, e);

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java?rev=669654&r1=669653&r2=669654&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java Thu Jun 19 12:03:16 2008
@@ -314,8 +314,8 @@
     }
   }
 
-  private List<MediaItemImpl> getMediaItems(Node activityItem) {
-    List<MediaItemImpl> media = Lists.newArrayList();
+  private List<MediaItem> getMediaItems(Node activityItem) {
+    List<MediaItem> media = Lists.newArrayList();
 
     NodeList mediaItems = activityItem.getChildNodes();
     if (mediaItems != null) {

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java?rev=669654&r1=669653&r2=669654&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java Thu Jun 19 12:03:16 2008
@@ -20,36 +20,38 @@
 
 import org.apache.shindig.common.BasicSecurityTokenDecoder;
 import org.apache.shindig.common.SecurityTokenDecoder;
+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.PeopleService;
-import org.apache.shindig.social.opensocial.model.BodyType;
+import org.apache.shindig.social.opensocial.model.Activity;
 import org.apache.shindig.social.opensocial.model.ActivityImpl;
+import org.apache.shindig.social.opensocial.model.Address;
 import org.apache.shindig.social.opensocial.model.AddressImpl;
+import org.apache.shindig.social.opensocial.model.BodyType;
 import org.apache.shindig.social.opensocial.model.BodyTypeImpl;
+import org.apache.shindig.social.opensocial.model.Email;
 import org.apache.shindig.social.opensocial.model.EmailImpl;
 import org.apache.shindig.social.opensocial.model.Enum;
 import org.apache.shindig.social.opensocial.model.EnumImpl;
+import org.apache.shindig.social.opensocial.model.MediaItem;
+import org.apache.shindig.social.opensocial.model.MediaItemImpl;
 import org.apache.shindig.social.opensocial.model.NameImpl;
+import org.apache.shindig.social.opensocial.model.Organization;
 import org.apache.shindig.social.opensocial.model.OrganizationImpl;
 import org.apache.shindig.social.opensocial.model.PersonImpl;
-import org.apache.shindig.social.opensocial.model.PhoneImpl;
-import org.apache.shindig.social.opensocial.model.UrlImpl;
-import org.apache.shindig.social.opensocial.model.Address;
-import org.apache.shindig.social.opensocial.model.Email;
-import org.apache.shindig.social.opensocial.model.Organization;
 import org.apache.shindig.social.opensocial.model.Phone;
+import org.apache.shindig.social.opensocial.model.PhoneImpl;
 import org.apache.shindig.social.opensocial.model.Url;
-import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.UrlImpl;
 import org.apache.shindig.social.samplecontainer.BasicActivitiesService;
 import org.apache.shindig.social.samplecontainer.BasicDataService;
 import org.apache.shindig.social.samplecontainer.BasicPeopleService;
-import org.apache.shindig.social.samplecontainer.XmlStateFileFetcher;
 import org.apache.shindig.social.samplecontainer.SampleContainerRouteManager;
-import org.apache.shindig.social.abdera.SocialRouteManager;
-import org.apache.shindig.social.dataservice.PersonService;
-import org.apache.shindig.social.dataservice.ActivityService;
-import org.apache.shindig.social.dataservice.AppDataService;
+import org.apache.shindig.social.samplecontainer.XmlStateFileFetcher;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -57,7 +59,6 @@
 import com.google.inject.Singleton;
 
 import java.net.URI;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -85,6 +86,9 @@
     bind(SocialRouteManager.class).to(SampleContainerRouteManager.class);
 
     bind(SecurityTokenDecoder.class).to(BasicSecurityTokenDecoder.class);
+
+    bind(Activity.class).to(ActivityImpl.class);
+    bind(MediaItem.class).to(MediaItemImpl.class);
   }
 
   @Singleton

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=669654&r1=669653&r2=669654&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 Thu Jun 19 12:03:16 2008
@@ -112,8 +112,8 @@
     params.put("entry", jsonActivity);
     setPathAndParams("/people/john.doe/@self", params);
 
-    ActivityImpl activity = new ActivityImpl();
-    EasyMock.expect(converter.convertToObject(jsonActivity, ActivityImpl.class)).andReturn(activity);
+    Activity activity = new ActivityImpl();
+    EasyMock.expect(converter.convertToObject(jsonActivity, Activity.class)).andReturn(activity);
 
     ResponseItem data = new ResponseItem<Object>(null);
     EasyMock.expect(activityService.createActivity(new UserId(UserId.Type.userId, "john.doe"),

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=669654&r1=669653&r2=669654&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 Thu Jun 19 12:03:16 2008
@@ -24,8 +24,10 @@
 import org.apache.shindig.social.opensocial.util.BeanXmlConverter;
 import org.apache.shindig.social.opensocial.util.BeanConverter;
 import org.apache.shindig.social.ResponseItem;
+import org.apache.shindig.social.SocialApiTestsGuiceModule;
 
 import com.google.inject.Injector;
+import com.google.inject.Guice;
 import com.google.common.collect.Maps;
 import junit.framework.TestCase;
 import org.easymock.classextension.EasyMock;
@@ -204,7 +206,8 @@
   }
 
   public void testGetConverterForRequest() throws Exception {
-    BeanJsonConverter json = new BeanJsonConverter();
+    BeanJsonConverter json = new BeanJsonConverter(
+        Guice.createInjector(new SocialApiTestsGuiceModule()));
     BeanXmlConverter xml = new BeanXmlConverter();
     servlet.setBeanConverters(json, xml);
 

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=669654&r1=669653&r2=669654&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 Thu Jun 19 12:03:16 2008
@@ -61,7 +61,8 @@
     servlet = new DataServiceServlet();
     servlet.setHandlers(new HandlerProvider(handlers));
     servlet.setInjector(Guice.createInjector(new SocialApiTestsGuiceModule()));
-    servlet.setBeanConverters(new BeanJsonConverter(), new BeanXmlConverter());
+    servlet.setBeanConverters(new BeanJsonConverter(
+        Guice.createInjector(new SocialApiTestsGuiceModule())), new BeanXmlConverter());
     servlet.setSecurityTokenDecoder(new BasicSecurityTokenDecoder());
 
     req = EasyMock.createMock(HttpServletRequest.class);

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanJsonConverterTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanJsonConverterTest.java?rev=669654&r1=669653&r2=669654&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanJsonConverterTest.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanJsonConverterTest.java Thu Jun 19 12:03:16 2008
@@ -31,9 +31,11 @@
 import org.apache.shindig.social.opensocial.model.PersonImpl;
 import org.apache.shindig.social.opensocial.model.PhoneImpl;
 import org.apache.shindig.social.opensocial.model.Address;
+import org.apache.shindig.social.SocialApiTestsGuiceModule;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.inject.Guice;
 import junit.framework.TestCase;
 import org.json.JSONArray;
 import org.json.JSONObject;
@@ -63,10 +65,11 @@
 
     activity = new ActivityImpl("activityId", johnDoe.getId());
 
-    activity.setMediaItems(Lists.newArrayList(
-        new MediaItemImpl("image/jpg", MediaItemImpl.Type.IMAGE, "http://foo.bar")));
+    activity.setMediaItems(Lists.<MediaItem>newArrayList(
+        new MediaItemImpl("image/jpg", MediaItem.Type.IMAGE, "http://foo.bar")));
 
-    beanJsonConverter = new BeanJsonConverter();
+    beanJsonConverter = new BeanJsonConverter(
+        Guice.createInjector(new SocialApiTestsGuiceModule()));
   }
 
   public static class SpecialPerson extends PersonImpl {
@@ -190,7 +193,7 @@
         "]}";
     // TODO: rename the enums to be lowercase
     Activity result = beanJsonConverter.convertToObject(jsonActivity,
-        ActivityImpl.class);
+        Activity.class);
 
     assertEquals("5", result.getUserId());
     assertEquals("6", result.getId());

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXmlConverterTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXmlConverterTest.java?rev=669654&r1=669653&r2=669654&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXmlConverterTest.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXmlConverterTest.java Thu Jun 19 12:03:16 2008
@@ -65,8 +65,8 @@
 
     activity = new ActivityImpl("activityId", johnDoe.getId());
 
-    activity.setMediaItems(Lists.newArrayList(
-        new MediaItemImpl("image/jpg", MediaItemImpl.Type.IMAGE, "http://foo.bar")));
+    activity.setMediaItems(Lists.<MediaItem>newArrayList(
+        new MediaItemImpl("image/jpg", MediaItem.Type.IMAGE, "http://foo.bar")));
 
     beanXmlConverter = new BeanXmlConverter();
   }