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