Author: lindner
Date: Fri Aug 27 21:49:21 2010
New Revision: 990283

URL: http://svn.apache.org/viewvc?rev=990283&view=rev
Log:
Patch from Franck Tankoua | Opensocial Groups support for java

Added:
    
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/GroupImpl.java
    
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Group.java
    
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/GroupHandler.java
    
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/GroupService.java

Added: 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/GroupImpl.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/GroupImpl.java?rev=990283&view=auto
==============================================================================
--- 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/GroupImpl.java
 (added)
+++ 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/GroupImpl.java
 Fri Aug 27 21:49:21 2010
@@ -0,0 +1,33 @@
+package org.apache.shindig.social.core.model;
+
+import org.apache.shindig.social.opensocial.model.Group;
+import org.apache.shindig.social.opensocial.spi.GroupId;
+
+public class GroupImpl implements Group{
+
+       private GroupId groupId;
+       private String title;
+       private String description;
+
+       public String getTitle() {
+               return title;
+       }
+       public void setTitle(String title) {
+               this.title = title;
+       }
+       public String getDescription() {
+               return description;
+       }
+       public void setDescription(String description) {
+               this.description = description;
+       }
+
+       public void setId(GroupId groupId) {
+               this.groupId = groupId;
+       }
+       public GroupId getId() {
+               return groupId;
+       }
+
+
+}

Added: 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Group.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Group.java?rev=990283&view=auto
==============================================================================
--- 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Group.java
 (added)
+++ 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Group.java
 Fri Aug 27 21:49:21 2010
@@ -0,0 +1,65 @@
+package org.apache.shindig.social.opensocial.model;
+
+import org.apache.shindig.protocol.model.Exportablebean;
+import org.apache.shindig.social.core.model.GroupImpl;
+import org.apache.shindig.social.opensocial.spi.GroupId;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * <p>
+ * OpenSocial Groups are owned by people, and are used to tag or categorize 
people and their relationships.
+ * Each group has a display name, an identifier which is unique within the 
groups owned by that person, and a URI link.
+ * A group may be a private, invitation-only, public or a personal group used 
to organize friends.
+ * </p>
+ * <p>
+ * From 
http://opensocial-resources.googlecode.com/svn/spec/1.0/Social-Data.xml#Group
+ * </p>
+ */
+...@implementedby(GroupImpl.class)
+...@exportablebean
+public interface Group {
+
+        public static enum Field {
+                   /** Unique ID for this group Required. */
+                   ID("Id"),
+                   /** Title of group Required. */
+                   TITLE("title"),
+                   /** Description of group Optional. */
+                   DESCRIPTION("description");
+
+                   /**
+                    * The json field that the instance represents.
+                    */
+                   private final String jsonString;
+
+                   /**
+                    * create a field base on the a json element.
+                    *
+                    * @param jsonString the name of the element
+                    */
+                   private Field(String jsonString) {
+                     this.jsonString = jsonString;
+                   }
+
+                   /**
+                    * emit the field as a json element.
+                    *
+                    * @return the field name
+                    */
+                   @Override
+                   public String toString() {
+                     return jsonString;
+                   }
+        }
+
+        GroupId getId();
+        void setId(GroupId id);
+
+        String getTitle();
+        void setTitle(String title);
+
+        String getDescription();
+        void setDescription(String description);
+
+}

Added: 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/GroupHandler.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/GroupHandler.java?rev=990283&view=auto
==============================================================================
--- 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/GroupHandler.java
 (added)
+++ 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/GroupHandler.java
 Fri Aug 27 21:49:21 2010
@@ -0,0 +1,40 @@
+package org.apache.shindig.social.opensocial.service;
+
+import java.util.Set;
+import java.util.concurrent.Future;
+
+import org.apache.shindig.protocol.HandlerPreconditions;
+import org.apache.shindig.protocol.Operation;
+import org.apache.shindig.protocol.ProtocolException;
+import org.apache.shindig.protocol.Service;
+import org.apache.shindig.social.opensocial.spi.CollectionOptions;
+import org.apache.shindig.social.opensocial.spi.GroupService;
+import org.apache.shindig.social.opensocial.spi.UserId;
+
+import com.google.inject.Inject;
+
+
+...@service(name = "groups", path="/{userId}")
+public class GroupHandler {
+
+       private final GroupService service;
+
+        @Inject
+        public GroupHandler(GroupService service){
+                this.service = service;
+        }
+
+        @Operation(httpMethods="GET")
+         public Future<?> get(SocialRequestItem request) throws 
ProtocolException {
+                Set<UserId> userIds = request.getUsers();
+                CollectionOptions options = new CollectionOptions(request);
+
+                // Preconditions
+                HandlerPreconditions.requireNotEmpty(userIds, "No userId 
specified");
+                HandlerPreconditions.requireSingular(userIds, "Only one userId 
must be specified");
+
+                return service.getGroups(userIds.iterator().next(), options, 
request.getFields(), request.getToken());
+
+        }
+
+}

Added: 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/GroupService.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/GroupService.java?rev=990283&view=auto
==============================================================================
--- 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/GroupService.java
 (added)
+++ 
shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/GroupService.java
 Fri Aug 27 21:49:21 2010
@@ -0,0 +1,14 @@
+package org.apache.shindig.social.opensocial.spi;
+
+import java.util.Set;
+import java.util.concurrent.Future;
+
+import org.apache.shindig.auth.SecurityToken;
+import org.apache.shindig.protocol.RestfulCollection;
+import org.apache.shindig.social.opensocial.model.Group;
+
+public interface GroupService {
+
+       public Future<RestfulCollection<Group>> getGroups(UserId userId, 
CollectionOptions options, Set<String> fields, SecurityToken token);
+
+}


Reply via email to