You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2010/08/27 14:01:07 UTC

svn commit: r990118 - in /shindig/trunk/java/social-api/src: main/java/org/apache/shindig/social/opensocial/service/ main/java/org/apache/shindig/social/opensocial/spi/ test/java/org/apache/shindig/social/opensocial/service/

Author: lindner
Date: Fri Aug 27 12:01:06 2010
New Revision: 990118

URL: http://svn.apache.org/viewvc?rev=990118&view=rev
Log:
SHINDIG-1410 | use guava methods, add stub test classes, default NotImplemented implementation

Added:
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AlbumHandlerTest.java
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/MediaItemHandlerTest.java
Modified:
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AlbumHandler.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/MediaItemHandler.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/AlbumService.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/MediaItemService.java

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AlbumHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AlbumHandler.java?rev=990118&r1=990117&r2=990118&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AlbumHandler.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/AlbumHandler.java Fri Aug 27 12:01:06 2010
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Future;
 
+import com.google.common.base.Objects;
 import org.apache.shindig.config.ContainerConfig;
 import org.apache.shindig.protocol.HandlerPreconditions;
 import org.apache.shindig.protocol.Operation;
@@ -39,8 +40,6 @@ import com.google.inject.Inject;
 
 /*
  * Receives and delegates requests to the OpenSocial Album service.
- * 
- * TODO: test cases
  */
 @Service(name = "albums", path = "/{userId}+/{groupId}/{albumId}+")
 public class AlbumHandler {
@@ -173,13 +172,9 @@ public class AlbumHandler {
     */
   @Operation(httpMethods = "GET", path = "/@supportedFields")
   public List<Object> supportedFields(RequestItem request) {
-    String container = firstNonNull(request.getToken().getContainer(),
+    String container = Objects.firstNonNull(request.getToken().getContainer(),
         ContainerConfig.DEFAULT_CONTAINER);
     return config.getList(container,
         "${Cur['gadgets.features'].opensocial.supportedFields.album}");
   }
-
-  private static <T> T firstNonNull(T first, T second) {
-    return first != null ? first : Preconditions.checkNotNull(second);
-  }
 }
\ No newline at end of file

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/MediaItemHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/MediaItemHandler.java?rev=990118&r1=990117&r2=990118&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/MediaItemHandler.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/MediaItemHandler.java Fri Aug 27 12:01:06 2010
@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Future;
 
+import com.google.common.base.Objects;
 import org.apache.shindig.config.ContainerConfig;
 import org.apache.shindig.protocol.HandlerPreconditions;
 import org.apache.shindig.protocol.Operation;
@@ -190,13 +191,9 @@ public class MediaItemHandler {
   @Operation(httpMethods = "GET", path = "/@supportedFields")
   public List<Object> supportedFields(RequestItem request) {
     // TODO: Would be nice if name in config matched name of service.
-    String container = firstNonNull(request.getToken().getContainer(),
+    String container = Objects.firstNonNull(request.getToken().getContainer(),
         ContainerConfig.DEFAULT_CONTAINER);
     return config.getList(container,
         "${Cur['gadgets.features'].opensocial.supportedFields.mediaItem}");
   }
-
-  private static <T> T firstNonNull(T first, T second) {
-    return first != null ? first : Preconditions.checkNotNull(second);
-  }
 }

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/AlbumService.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/AlbumService.java?rev=990118&r1=990117&r2=990118&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/AlbumService.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/AlbumService.java Fri Aug 27 12:01:06 2010
@@ -20,15 +20,19 @@ package org.apache.shindig.social.openso
 import java.util.Set;
 import java.util.concurrent.Future;
 
+import com.google.inject.ImplementedBy;
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.protocol.ProtocolException;
 import org.apache.shindig.protocol.RestfulCollection;
 import org.apache.shindig.social.opensocial.model.Album;
 
+import javax.servlet.http.HttpServletResponse;
+
 /*
  * The AlbumService interface defines the service provider interface for
  * creating, retrieving, updating, and deleting OpenSocial albums.
  */
+@ImplementedBy(AlbumService.NotImplementedAlbumService.class)
 public interface AlbumService {
 
   /*
@@ -118,4 +122,30 @@ public interface AlbumService {
     */
   Future<Void> updateAlbum(UserId userId, String appId, Album album,
                            String albumId, SecurityToken token) throws ProtocolException;
+
+  public static class NotImplementedAlbumService implements AlbumService {
+    public Future<Album> getAlbum(UserId userId, String appId, Set<String> fields, String albumId, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<RestfulCollection<Album>> getAlbums(UserId userId, String appId, Set<String> fields, CollectionOptions options, Set<String> albumIds, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<RestfulCollection<Album>> getAlbums(Set<UserId> userIds, GroupId groupId, String appId, Set<String> fields, CollectionOptions options, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<Void> deleteAlbum(UserId userId, String appId, String albumId, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<Void> createAlbum(UserId userId, String appId, Album album, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<Void> updateAlbum(UserId userId, String appId, Album album, String albumId, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+  }
 }
\ No newline at end of file

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/MediaItemService.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/MediaItemService.java?rev=990118&r1=990117&r2=990118&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/MediaItemService.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/MediaItemService.java Fri Aug 27 12:01:06 2010
@@ -8,6 +8,8 @@ import org.apache.shindig.protocol.Proto
 import org.apache.shindig.protocol.RestfulCollection;
 import org.apache.shindig.social.opensocial.model.MediaItem;
 
+import javax.servlet.http.HttpServletResponse;
+
 /*
  * The MediaItemService interface defines the service provider interface for
  * creating, retrieving, updating, and deleting OpenSocial MediaItems.
@@ -126,4 +128,34 @@ public interface MediaItemService {
   Future<Void> updateMediaItem(UserId userId, String appId, String albumId,
                                String mediaItemId, MediaItem mediaItem, SecurityToken token)
       throws ProtocolException;
+
+  public class NotImplementedMediaItemService implements MediaItemService {
+    public Future<MediaItem> getMediaItem(UserId userId, String appId, String albumId, String mediaItemId, Set<String> fields, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<RestfulCollection<MediaItem>> getMediaItems(UserId userId, String appId, String albumId, Set<String> mediaItemIds, Set<String> fields, CollectionOptions options, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<RestfulCollection<MediaItem>> getMediaItems(UserId userId, String appId, String albumId, Set<String> fields, CollectionOptions options, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<RestfulCollection<MediaItem>> getMediaItems(Set<UserId> userIds, GroupId groupId, String appId, Set<String> fields, CollectionOptions options, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<Void> deleteMediaItem(UserId userId, String appId, String albumId, String mediaItemId, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<Void> createMediaItem(UserId userId, String appId, String albumId, MediaItem mediaItem, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+
+    public Future<Void> updateMediaItem(UserId userId, String appId, String albumId, String mediaItemId, MediaItem mediaItem, SecurityToken token) throws ProtocolException {
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Not Implemented");
+    }
+  }
 }

Added: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AlbumHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AlbumHandlerTest.java?rev=990118&view=auto
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AlbumHandlerTest.java (added)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/AlbumHandlerTest.java Fri Aug 27 12:01:06 2010
@@ -0,0 +1,86 @@
+package org.apache.shindig.social.opensocial.service;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+import org.apache.shindig.common.EasyMockTestCase;
+import org.apache.shindig.common.testing.FakeGadgetToken;
+import org.apache.shindig.config.ContainerConfig;
+import org.apache.shindig.config.JsonContainerConfig;
+import org.apache.shindig.expressions.Expressions;
+import org.apache.shindig.protocol.DefaultHandlerRegistry;
+import org.apache.shindig.protocol.HandlerExecutionListener;
+import org.apache.shindig.protocol.HandlerRegistry;
+import org.apache.shindig.protocol.RestHandler;
+import org.apache.shindig.protocol.conversion.BeanJsonConverter;
+import org.apache.shindig.social.opensocial.spi.AlbumService;
+import org.json.JSONObject;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+
+public class AlbumHandlerTest extends EasyMockTestCase {
+  private AlbumService albumService;
+  private AlbumHandler handler;
+  private ContainerConfig containerConfig;
+  private FakeGadgetToken token;
+  protected HandlerRegistry registry;
+  private BeanJsonConverter converter;
+  
+  @Before
+  public void setUp() throws Exception {
+    token = new FakeGadgetToken();
+    converter = mock(BeanJsonConverter.class);
+    albumService = mock(AlbumService.class);
+    JSONObject config = new JSONObject('{' + ContainerConfig.DEFAULT_CONTAINER + ':' +
+            "{'gadgets.features':{opensocial:" +
+               "{supportedFields: {album: ['id', 'title', 'location']}}" +
+             "}}}");
+
+    containerConfig = new JsonContainerConfig(config, Expressions.forTesting());
+    handler = new AlbumHandler(albumService, containerConfig);
+
+    registry = new DefaultHandlerRegistry(null, converter,
+        new HandlerExecutionListener.NoOpHandler());
+    registry.addHandlers(ImmutableSet.<Object>of(handler));
+  }
+
+  @Test
+  public void testCreate() throws Exception {
+    // TODO
+  }
+
+  @Test
+  public void testGet() throws Exception {
+    // TODO
+  }
+
+  @Test
+  public void testUpdate() throws Exception {
+    // TODO
+  }
+
+  @Test
+  public void testDelete() throws Exception {
+    // TODO
+  }
+
+  @Test
+  public void testSupportedFields() throws Exception {
+    String path = "/albums/@supportedFields";
+    RestHandler operation = registry.getRestHandler(path, "GET");
+
+    replay();
+    @SuppressWarnings("unchecked")
+    List<Object> received = (List<Object>) operation.execute(Maps.<String, String[]>newHashMap(),
+        null, token, converter).get();
+    assertEquals(3, received.size());
+    assertEquals("id", received.get(0).toString());
+    assertEquals("title", received.get(1).toString());
+    assertEquals("location", received.get(2).toString());
+
+    verify();
+  }
+}

Added: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/MediaItemHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/MediaItemHandlerTest.java?rev=990118&view=auto
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/MediaItemHandlerTest.java (added)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/MediaItemHandlerTest.java Fri Aug 27 12:01:06 2010
@@ -0,0 +1,85 @@
+package org.apache.shindig.social.opensocial.service;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+import org.apache.shindig.common.EasyMockTestCase;
+import org.apache.shindig.common.testing.FakeGadgetToken;
+import org.apache.shindig.config.ContainerConfig;
+import org.apache.shindig.config.JsonContainerConfig;
+import org.apache.shindig.expressions.Expressions;
+import org.apache.shindig.protocol.DefaultHandlerRegistry;
+import org.apache.shindig.protocol.HandlerExecutionListener;
+import org.apache.shindig.protocol.HandlerRegistry;
+import org.apache.shindig.protocol.RestHandler;
+import org.apache.shindig.protocol.conversion.BeanJsonConverter;
+import org.apache.shindig.social.opensocial.spi.AlbumService;
+import org.apache.shindig.social.opensocial.spi.MediaItemService;
+import org.json.JSONObject;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+public class MediaItemHandlerTest extends EasyMockTestCase {
+  private MediaItemService mediaService;
+  private MediaItemHandler handler;
+  private ContainerConfig containerConfig;
+  private FakeGadgetToken token;
+  protected HandlerRegistry registry;
+  private BeanJsonConverter converter;
+  
+  @Before
+  public void setUp() throws Exception {
+    token = new FakeGadgetToken();
+    converter = mock(BeanJsonConverter.class);
+    mediaService = mock(MediaItemService.class);
+    JSONObject config = new JSONObject('{' + ContainerConfig.DEFAULT_CONTAINER + ':' +
+            "{'gadgets.features':{opensocial:" +
+               "{supportedFields: {mediaItem: ['id', 'language', 'title']}}" +
+             "}}}");
+
+    containerConfig = new JsonContainerConfig(config, Expressions.forTesting());
+    handler = new MediaItemHandler(mediaService, containerConfig);
+
+    registry = new DefaultHandlerRegistry(null, converter,
+        new HandlerExecutionListener.NoOpHandler());
+    registry.addHandlers(ImmutableSet.<Object>of(handler));
+  }
+
+  @Test
+  public void testCreate() throws Exception {
+    // TODO
+  }
+
+  @Test
+  public void testGet() throws Exception {
+    // TODO
+  }
+
+  @Test
+  public void testUpdate() throws Exception {
+    // TODO
+  }
+
+  @Test
+  public void testDelete() throws Exception {
+    // TODO
+  }
+
+  @Test
+  public void testSupportedFields() throws Exception {
+    String path = "/mediaItems/@supportedFields";
+    RestHandler operation = registry.getRestHandler(path, "GET");
+
+    replay();
+    @SuppressWarnings("unchecked")
+    List<Object> received = (List<Object>) operation.execute(Maps.<String, String[]>newHashMap(),
+        null, token, converter).get();
+    assertEquals(3, received.size());
+    assertEquals("id", received.get(0).toString());
+    assertEquals("language", received.get(1).toString());
+    assertEquals("title", received.get(2).toString());
+
+    verify();
+  }
+}