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/13 03:02:32 UTC
svn commit: r667308 - in /incubator/shindig/trunk:
features/opensocial-current/
java/social-api/src/main/java/org/apache/shindig/social/dataservice/
java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/
java/social-api/src/test/java/...
Author: doll
Date: Thu Jun 12 18:02:31 2008
New Revision: 667308
URL: http://svn.apache.org/viewvc?rev=667308&view=rev
Log:
The dataservice json rest code now allows the special tokens @viewer, @owner and @app. These get translated behind the service layer so that containers can make optimizations based on the token.
This involved adding a new UserId class and pulling the GroupId class to the top level. GroupId now supports arbitrary groups. Changed all interfaces to take the UserId and added tests.
Added:
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/GroupId.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/UserId.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/GroupIdTest.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/UserIdTest.java
Modified:
incubator/shindig/trunk/features/opensocial-current/restfulcontainer.js
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/ActivityService.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/AppDataService.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/main/java/org/apache/shindig/social/dataservice/PersonService.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicActivitiesService.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicDataService.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.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/PersonHandlerTest.java
Modified: incubator/shindig/trunk/features/opensocial-current/restfulcontainer.js
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/features/opensocial-current/restfulcontainer.js?rev=667308&r1=667307&r2=667308&view=diff
==============================================================================
--- incubator/shindig/trunk/features/opensocial-current/restfulcontainer.js (original)
+++ incubator/shindig/trunk/features/opensocial-current/restfulcontainer.js Thu Jun 12 18:02:31 2008
@@ -38,20 +38,9 @@
this.baseUrl_ = baseUrl;
this.securityToken_ = shindig.auth.getSecurityToken();
- this.parseSecurityToken();
};
RestfulContainer.inherits(opensocial.Container);
-// Hopefully we can get rid of these with special @viewer and @owner tokens
-// in the restful spec, because this code is never going to work in the
-// real world.
-RestfulContainer.prototype.parseSecurityToken = function() {
- var parts = this.securityToken_.split(":");
- this.ownerId_ = parts[0];
- this.viewerId_ = parts[1];
- this.appId_ = parts[2];
-};
-
RestfulContainer.prototype.getEnvironment = function() {
return this.environment_;
};
@@ -138,9 +127,9 @@
var groupId = newIdSpec.getField('groupId');
if (userId == 'OWNER') {
- userId = this.ownerId_;
+ userId = '@owner';
} else if (userId == 'VIEWER') {
- userId = this.viewerId_;
+ userId = '@viewer';
} else if (opensocial.Container.isArray(idSpec)) {
for (var i = 0; i < idSpec.length; i++) {
// TODO: We will need multiple urls here....don't want to think about
@@ -208,7 +197,7 @@
RestfulContainer.prototype.newFetchPersonAppDataRequest = function(idSpec,
keys) {
- var url = "/appdata/" + this.translateIdSpec(idSpec) + "/" + this.appId_
+ var url = "/appdata/" + this.translateIdSpec(idSpec) + "/@app"
+ "?fields=" + this.getFieldsList(keys);
return new RestfulRequestItem(url, "GET", null,
function (appData) {
@@ -219,7 +208,7 @@
RestfulContainer.prototype.newUpdatePersonAppDataRequest = function(id, key,
value) {
var url = "/appdata/" + this.translateIdSpec(this.makeIdSpec(id))
- + "/" + this.appId_ + "?fields=" + key;
+ + "/@app?fields=" + key;
var data = {};
data[key] = value;
var postData = {};
@@ -229,14 +218,14 @@
RestfulContainer.prototype.newRemovePersonAppDataRequest = function(id, keys) {
var url = "/appdata/" + this.translateIdSpec(this.makeIdSpec(id))
- + "/" + this.appId_ + "?fields=" + this.getFieldsList(keys);
+ + "/@app?fields=" + this.getFieldsList(keys);
return new RestfulRequestItem(url, "DELETE");
};
RestfulContainer.prototype.newFetchActivitiesRequest = function(idSpec,
opt_params) {
var url = "/activities/" + this.translateIdSpec(idSpec)
- + "?app=" + this.appId_;
+ + "?app=@app"; // TODO: Handle appId correctly
return new RestfulRequestItem(url, "GET", null,
function(rawJson) {
rawJson = rawJson['entry'];
@@ -262,7 +251,7 @@
RestfulContainer.prototype.newCreateActivityRequest = function(idSpec,
activity) {
var url = "/activities/" + this.translateIdSpec(idSpec)
- + "/" + this.appId_;
+ + "/@app"; // TODO: Handle appId correctly
var postData = {};
postData['entry'] = gadgets.json.stringify(activity.toJsonObject());
return new RestfulRequestItem(url, "POST", postData);
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=667308&r1=667307&r2=667308&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 12 18:02:31 2008
@@ -64,9 +64,8 @@
SecurityToken token) {
String[] segments = getParamsFromRequest(servletRequest);
- String userId = segments[0];
- DataServiceServlet.GroupId groupId
- = DataServiceServlet.GroupId.fromJson(segments[1]);
+ UserId userId = UserId.fromJson(segments[0]);
+ GroupId groupId = GroupId.fromJson(segments[1]);
// TODO: Should we pass the groupId through to the service?
String jsonActivity = servletRequest.getParameter("entry");
@@ -87,9 +86,8 @@
SecurityToken token) {
String[] segments = getParamsFromRequest(servletRequest);
- String userId = segments[0];
- DataServiceServlet.GroupId groupId
- = DataServiceServlet.GroupId.fromJson(segments[1]);
+ UserId userId = UserId.fromJson(segments[0]);
+ GroupId groupId = GroupId.fromJson(segments[1]);
String optionalActivityId = null;
if (segments.length > 2) {
optionalActivityId = segments[2];
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/ActivityService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/ActivityService.java?rev=667308&r1=667307&r2=667308&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/ActivityService.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/ActivityService.java Thu Jun 12 18:02:31 2008
@@ -31,8 +31,8 @@
* @param token A valid SecurityToken
* @return a response item with the list of activities.
*/
- public ResponseItem<RestfulCollection<Activity>> getActivities(String userId,
- DataServiceServlet.GroupId groupId, SecurityToken token);
+ public ResponseItem<RestfulCollection<Activity>> getActivities(UserId userId,
+ GroupId groupId, SecurityToken token);
/**
* Returns the activity for the passed in user and group that corresponds to
@@ -44,8 +44,8 @@
* @param token A valid SecurityToken
* @return a response item with the list of activities.
*/
- public ResponseItem<Activity> getActivity(String userId,
- DataServiceServlet.GroupId groupId, String activityId,
+ public ResponseItem<Activity> getActivity(UserId userId,
+ GroupId groupId, String activityId,
SecurityToken token);
/**
@@ -57,7 +57,7 @@
* @param token A valid SecurityToken
* @return a response item containing any errors
*/
- public ResponseItem createActivity(String personId, Activity activity,
+ public ResponseItem createActivity(UserId personId, Activity activity,
SecurityToken token);
}
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=667308&r1=667307&r2=667308&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 Thu Jun 12 18:02:31 2008
@@ -54,10 +54,9 @@
SecurityToken token) {
String[] segments = getParamsFromRequest(servletRequest);
- String userId = segments[0];
- DataServiceServlet.GroupId groupId
- = DataServiceServlet.GroupId.fromJson(segments[1]);
- String appId = segments[2];
+ UserId userId = UserId.fromJson(segments[0]);
+ GroupId groupId = GroupId.fromJson(segments[1]);
+ String appId = getAppId(segments[2], token);
List<String> fields = getListParam(servletRequest, "fields",
Lists.<String>newArrayList());
@@ -99,10 +98,9 @@
SecurityToken token) {
String[] segments = getParamsFromRequest(servletRequest);
- String userId = segments[0];
- DataServiceServlet.GroupId groupId
- = DataServiceServlet.GroupId.fromJson(segments[1]);
- String appId = segments[2];
+ UserId userId = UserId.fromJson(segments[0]);
+ GroupId groupId = GroupId.fromJson(segments[1]);
+ String appId = getAppId(segments[2], token);
List<String> fields = getListParam(servletRequest, "fields",
Lists.<String>newArrayList());
@@ -128,10 +126,9 @@
SecurityToken token) {
String[] segments = getParamsFromRequest(servletRequest);
- String userId = segments[0];
- DataServiceServlet.GroupId groupId
- = DataServiceServlet.GroupId.fromJson(segments[1]);
- String appId = segments[2];
+ UserId userId = UserId.fromJson(segments[0]);
+ GroupId groupId = GroupId.fromJson(segments[1]);
+ String appId = getAppId(segments[2], token);
List<String> fields = getListParam(servletRequest, "fields",
Lists.<String>newArrayList());
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataService.java?rev=667308&r1=667307&r2=667308&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataService.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/AppDataService.java Thu Jun 12 18:02:31 2008
@@ -35,11 +35,11 @@
* @return The data fetched
*/
public ResponseItem<DataCollection> getPersonData(
- String userId, DataServiceServlet.GroupId groupId,
+ UserId userId, GroupId groupId,
List<String> fields, String appId, SecurityToken token);
/**
- * Updates app data for the specified user and group with the new values.
+ * Updates app data for the specified user and group with the new values.
*
* @param userId The user
* @param groupId The group
@@ -49,8 +49,8 @@
* @param token The security token
* @return an error if one occurs
*/
- public ResponseItem updatePersonData(String userId,
- DataServiceServlet.GroupId groupId, List<String> fields,
+ public ResponseItem updatePersonData(UserId userId,
+ GroupId groupId, List<String> fields,
Map<String, String> values, String appId, SecurityToken token);
/**
@@ -63,8 +63,8 @@
* @param token The security token
* @return an error if one occurs
*/
- public ResponseItem deletePersonData(String userId,
- DataServiceServlet.GroupId groupId, List<String> fields, String appId,
+ public ResponseItem deletePersonData(UserId userId,
+ GroupId groupId, List<String> fields, String appId,
SecurityToken token);
}
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=667308&r1=667307&r2=667308&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 Thu Jun 12 18:02:31 2008
@@ -34,6 +34,7 @@
public abstract class DataRequestHandler {
protected BeanJsonConverter converter;
+ protected static final String APP_SUBSTITUTION_TOKEN = "@app";
@Inject
DataRequestHandler(BeanJsonConverter converter) {
@@ -78,17 +79,17 @@
abstract ResponseItem handleGet(HttpServletRequest servletRequest,
SecurityToken token);
- protected String[] getParamsFromRequest(HttpServletRequest servletRequest) {
+ protected static String[] getParamsFromRequest(HttpServletRequest servletRequest) {
return getQueryPath(servletRequest).split("/");
}
- /*package-protected*/ String getQueryPath(HttpServletRequest servletRequest) {
+ /*package-protected*/ static String getQueryPath(HttpServletRequest servletRequest) {
String pathInfo = servletRequest.getPathInfo();
int index = pathInfo.indexOf('/', 1);
return pathInfo.substring(index + 1);
}
- protected <T extends Enum<T>> T getEnumParam(
+ protected static <T extends Enum<T>> T getEnumParam(
HttpServletRequest servletRequest, String paramName, T defaultValue,
Class<T> enumClass) {
String paramValue = servletRequest.getParameter(paramName);
@@ -98,7 +99,7 @@
return defaultValue;
}
- protected int getIntegerParam(HttpServletRequest servletRequest,
+ protected static int getIntegerParam(HttpServletRequest servletRequest,
String paramName, int defaultValue) {
String paramValue = servletRequest.getParameter(paramName);
if (paramValue != null) {
@@ -107,7 +108,7 @@
return defaultValue;
}
- protected List<String> getListParam(HttpServletRequest servletRequest,
+ protected static List<String> getListParam(HttpServletRequest servletRequest,
String paramName, List<String> defaultValue) {
String paramValue = servletRequest.getParameter(paramName);
if (paramValue != null) {
@@ -115,4 +116,12 @@
}
return defaultValue;
}
+
+ protected static String getAppId(String appId, SecurityToken token) {
+ if (appId.equals(APP_SUBSTITUTION_TOKEN)) {
+ return token.getAppId();
+ } else {
+ return appId;
+ }
+ }
}
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=667308&r1=667307&r2=667308&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 Thu Jun 12 18:02:31 2008
@@ -18,6 +18,7 @@
package org.apache.shindig.social.dataservice;
import com.google.inject.Inject;
+
import org.apache.shindig.common.SecurityTokenDecoder;
import org.apache.shindig.common.SecurityToken;
import org.apache.shindig.common.SecurityTokenException;
@@ -34,27 +35,6 @@
public class DataServiceServlet extends InjectedServlet {
- public static enum GroupId {
- ALL("@all"),
- FRIENDS("@friends"),
- SELF("@self"),
- GROUP("not supported yet");
-
- private final String jsonString;
-
- GroupId(String jsonString) {
- this.jsonString = jsonString;
- }
-
- public String getJsonString() {
- return jsonString;
- }
-
- public static GroupId fromJson(String s) {
- return valueOf(s.substring(1).toUpperCase());
- }
- }
-
protected static final String X_HTTP_METHOD_OVERRIDE
= "X-HTTP-Method-Override";
protected static final String SECURITY_TOKEN_PARAM = "st";
Added: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/GroupId.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/GroupId.java?rev=667308&view=auto
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/GroupId.java (added)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/GroupId.java Thu Jun 12 18:02:31 2008
@@ -0,0 +1,69 @@
+/*
+ * 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 org.apache.commons.lang.StringUtils;
+
+public class GroupId {
+ public enum Type {
+ all, friends, self, groupId
+ }
+
+ Type type;
+ String groupId;
+
+ public GroupId(Type type, String groupId) {
+ this.groupId = groupId;
+ this.type = type;
+ }
+
+ public Type getType() {
+ return type;
+ }
+
+ public String getGroupId() {
+ // Only valid for objects with type=groupId
+ return groupId;
+ }
+
+ public static GroupId fromJson(String jsonId) {
+ try {
+ Type idSpecEnum = Type.valueOf(jsonId.substring(1));
+ return new GroupId(idSpecEnum, null);
+ } catch (IllegalArgumentException e) {
+ return new GroupId(Type.groupId, jsonId);
+ }
+ }
+
+ // These are overriden so that EasyMock doesn't throw a fit
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof GroupId)) {
+ return false;
+ }
+
+ GroupId actual = (GroupId) o;
+ return this.type == actual.type
+ && StringUtils.equals(this.groupId, actual.groupId);
+ }
+
+ @Override
+ public int hashCode() {
+ return this.type.hashCode() + this.groupId.hashCode();
+ }
+}
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=667308&r1=667307&r2=667308&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 Thu Jun 12 18:02:31 2008
@@ -70,9 +70,8 @@
SecurityToken token) {
String[] segments = getParamsFromRequest(servletRequest);
- String userId = segments[0];
- DataServiceServlet.GroupId groupId
- = DataServiceServlet.GroupId.fromJson(segments[1]);
+ UserId userId = UserId.fromJson(segments[0]);
+ GroupId groupId = GroupId.fromJson(segments[1]);
String optionalPersonId = null;
if (segments.length > 2) {
@@ -80,7 +79,7 @@
}
if (optionalPersonId != null
- || groupId == DataServiceServlet.GroupId.SELF) {
+ || groupId.getType() == GroupId.Type.self) {
return personService.getPerson(userId, token);
}
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/PersonService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/PersonService.java?rev=667308&r1=667307&r2=667308&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/PersonService.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/PersonService.java Thu Jun 12 18:02:31 2008
@@ -46,8 +46,7 @@
* @param token The gadget token
* @return a list of people.
*/
- public ResponseItem<RestfulCollection<Person>> getPeople(String userId,
- DataServiceServlet.GroupId groupId,
+ public ResponseItem<RestfulCollection<Person>> getPeople(UserId userId, GroupId groupId,
SortOrder sortOrder, FilterType filter, int first, int max,
Set<String> profileDetails, SecurityToken token);
@@ -58,5 +57,5 @@
* @param token The gadget token
* @return a list of people.
*/
- public ResponseItem<Person> getPerson(String id, SecurityToken token);
+ public ResponseItem<Person> getPerson(UserId id, SecurityToken token);
}
Added: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/UserId.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/UserId.java?rev=667308&view=auto
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/UserId.java (added)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/dataservice/UserId.java Thu Jun 12 18:02:31 2008
@@ -0,0 +1,75 @@
+/*
+ * 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 org.apache.shindig.common.SecurityToken;
+
+import org.apache.commons.lang.StringUtils;
+
+public class UserId {
+ public enum Type {
+ viewer, owner, userId
+ }
+
+ Type type;
+ String userId;
+
+ public UserId(Type type, String userId) {
+ this.type = type;
+ this.userId = userId;
+ }
+
+ public String getUserId(SecurityToken token) {
+ switch(type) {
+ case owner:
+ return token.getOwnerId();
+ case viewer:
+ return token.getViewerId();
+ case userId:
+ return userId;
+ default:
+ throw new IllegalStateException("The type field is not a valid enum: " + type);
+ }
+ }
+
+ public static UserId fromJson(String jsonId) {
+ try {
+ Type idSpecEnum = Type.valueOf(jsonId.substring(1));
+ return new UserId(idSpecEnum, null);
+ } catch (IllegalArgumentException e) {
+ return new UserId(Type.userId, jsonId);
+ }
+ }
+
+ // These are overriden so that EasyMock doesn't throw a fit
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof UserId)) {
+ return false;
+ }
+
+ UserId actual = (UserId) o;
+ return this.type == actual.type
+ && StringUtils.equals(this.userId, actual.userId);
+ }
+
+ @Override
+ public int hashCode() {
+ return this.type.hashCode() + this.userId.hashCode();
+ }
+}
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicActivitiesService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicActivitiesService.java?rev=667308&r1=667307&r2=667308&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicActivitiesService.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicActivitiesService.java Thu Jun 12 18:02:31 2008
@@ -21,11 +21,11 @@
import org.apache.shindig.social.ResponseError;
import org.apache.shindig.social.ResponseItem;
import org.apache.shindig.social.dataservice.ActivityService;
-import org.apache.shindig.social.dataservice.DataServiceServlet;
import org.apache.shindig.social.dataservice.RestfulCollection;
+import org.apache.shindig.social.dataservice.GroupId;
+import org.apache.shindig.social.dataservice.UserId;
import org.apache.shindig.social.opensocial.ActivitiesService;
import org.apache.shindig.social.opensocial.model.Activity;
-import org.apache.shindig.social.opensocial.model.ApiCollection;
import com.google.common.collect.Lists;
import com.google.inject.Inject;
@@ -76,21 +76,31 @@
"Activity not found", null);
}
+ public ResponseItem createActivity(String personId, Activity activity,
+ SecurityToken token) {
+ // TODO: Validate the activity and do any template expanding
+ activity.setUserId(personId);
+ activity.setPostedTime(new Date().getTime());
+
+ fetcher.createActivity(personId, activity);
+ return new ResponseItem<JSONObject>(new JSONObject());
+ }
+
// New interface methods
- public ResponseItem<RestfulCollection<Activity>> getActivities(String userId,
- DataServiceServlet.GroupId groupId, SecurityToken token) {
+ public ResponseItem<RestfulCollection<Activity>> getActivities(UserId userId,
+ GroupId groupId, SecurityToken token) {
List<String> ids = Lists.newArrayList();
- switch (groupId) {
- case ALL:
- case FRIENDS:
- List<String> friendIds = fetcher.getFriendIds().get(userId);
+ switch (groupId.getType()) {
+ case all:
+ case friends:
+ List<String> friendIds = fetcher.getFriendIds().get(userId.getUserId(token));
if (friendIds != null) {
ids.addAll(friendIds);
}
break;
- case SELF:
- ids.add(userId);
+ case self:
+ ids.add(userId.getUserId(token));
}
Map<String, List<Activity>> allActivities = fetcher.getActivities();
@@ -108,8 +118,8 @@
new RestfulCollection<Activity>(activities));
}
- public ResponseItem<Activity> getActivity(String userId,
- DataServiceServlet.GroupId groupId, String activityId,
+ public ResponseItem<Activity> getActivity(UserId userId,
+ GroupId groupId, String activityId,
SecurityToken token) {
RestfulCollection<Activity> allActivities = getActivities(userId, groupId,
token).getResponse();
@@ -122,13 +132,13 @@
"Activity not found", null);
}
- public ResponseItem createActivity(String personId, Activity activity,
+ public ResponseItem createActivity(UserId personId, Activity activity,
SecurityToken token) {
// TODO: Validate the activity and do any template expanding
- activity.setUserId(personId);
+ activity.setUserId(personId.getUserId(token));
activity.setPostedTime(new Date().getTime());
- fetcher.createActivity(personId, activity);
+ fetcher.createActivity(personId.getUserId(token), activity);
return new ResponseItem<JSONObject>(new JSONObject());
}
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicDataService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicDataService.java?rev=667308&r1=667307&r2=667308&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicDataService.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicDataService.java Thu Jun 12 18:02:31 2008
@@ -21,8 +21,9 @@
import org.apache.shindig.social.ResponseError;
import org.apache.shindig.social.ResponseItem;
import org.apache.shindig.social.dataservice.AppDataService;
-import org.apache.shindig.social.dataservice.DataServiceServlet;
import org.apache.shindig.social.dataservice.DataCollection;
+import org.apache.shindig.social.dataservice.GroupId;
+import org.apache.shindig.social.dataservice.UserId;
import org.apache.shindig.social.opensocial.DataService;
import com.google.common.collect.Maps;
@@ -116,19 +117,19 @@
// New interface methods
public ResponseItem<DataCollection> getPersonData(
- String userId, DataServiceServlet.GroupId groupId, List<String> fields,
+ UserId userId, GroupId groupId, List<String> fields,
String appId, SecurityToken token) {
List<String> ids = Lists.newArrayList();
- switch (groupId) {
- case ALL:
- case FRIENDS:
- List<String> friendIds = fetcher.getFriendIds().get(userId);
+ switch (groupId.getType()) {
+ case all:
+ case friends:
+ List<String> friendIds = fetcher.getFriendIds().get(userId.getUserId(token));
if (friendIds != null) {
ids.addAll(friendIds);
}
break;
- case SELF:
- ids.add(userId);
+ case self:
+ ids.add(userId.getUserId(token));
}
// TODO: Respect appId
@@ -137,8 +138,8 @@
return new ResponseItem<DataCollection>(new DataCollection(data));
}
- public ResponseItem updatePersonData(String userId,
- DataServiceServlet.GroupId groupId, List<String> fields,
+ public ResponseItem updatePersonData(UserId userId,
+ GroupId groupId, List<String> fields,
Map<String, String> values, String appId, SecurityToken token) {
for (String field : fields) {
if (!isValidKey(field)) {
@@ -148,12 +149,12 @@
}
}
- switch(groupId) {
- case SELF:
+ switch(groupId.getType()) {
+ case self:
for (String field : fields) {
String value = values.get(field);
// TODO: Respect appId
- fetcher.setAppData(userId, field, value);
+ fetcher.setAppData(userId.getUserId(token), field, value);
}
break;
default:
@@ -164,14 +165,14 @@
return new ResponseItem<JSONObject>(new JSONObject());
}
- public ResponseItem deletePersonData(String userId,
- DataServiceServlet.GroupId groupId, List<String> fields, String appId,
+ public ResponseItem deletePersonData(UserId userId,
+ GroupId groupId, List<String> fields, String appId,
SecurityToken token) {
- switch(groupId) {
- case SELF:
+ switch(groupId.getType()) {
+ case self:
for (String field : fields) {
// TODO: Respect appId
- fetcher.setAppData(userId, field, null);
+ fetcher.setAppData(userId.getUserId(token), field, null);
}
break;
default:
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.java?rev=667308&r1=667307&r2=667308&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.java Thu Jun 12 18:02:31 2008
@@ -21,8 +21,9 @@
import org.apache.shindig.social.ResponseItem;
import org.apache.shindig.social.ResponseError;
import org.apache.shindig.social.dataservice.PersonService;
-import org.apache.shindig.social.dataservice.DataServiceServlet;
import org.apache.shindig.social.dataservice.RestfulCollection;
+import org.apache.shindig.social.dataservice.GroupId;
+import org.apache.shindig.social.dataservice.UserId;
import org.apache.shindig.social.opensocial.PeopleService;
import org.apache.shindig.social.opensocial.model.ApiCollection;
import org.apache.shindig.social.opensocial.model.IdSpec;
@@ -142,21 +143,21 @@
// New interface methods
- public ResponseItem<RestfulCollection<Person>> getPeople(String userId,
- DataServiceServlet.GroupId groupId, PersonService.SortOrder sortOrder,
+ public ResponseItem<RestfulCollection<Person>> getPeople(UserId userId,
+ GroupId groupId, PersonService.SortOrder sortOrder,
PersonService.FilterType filter, int first, int max,
Set<String> profileDetails, SecurityToken token) {
List<String> ids = Lists.newArrayList();
- switch (groupId) {
- case ALL:
- case FRIENDS:
- List<String> friendIds = fetcher.getFriendIds().get(userId);
+ switch (groupId.getType()) {
+ case all:
+ case friends:
+ List<String> friendIds = fetcher.getFriendIds().get(userId.getUserId(token));
if (friendIds != null) {
ids.addAll(friendIds);
}
break;
- case SELF:
- ids.add(userId);
+ case self:
+ ids.add(userId.getUserId(token));
}
List<Person> people = getPeople(ids, token);
@@ -178,4 +179,14 @@
return new ResponseItem<RestfulCollection<Person>>(collection);
}
+ public ResponseItem<Person> getPerson(UserId id, SecurityToken token) {
+ List<Person> people = getPeople(Lists.newArrayList(id.getUserId(token)), token);
+ if (people.size() == 1) {
+ return new ResponseItem<Person>(people.get(0));
+ } else {
+ return new ResponseItem<Person>(ResponseError.BAD_REQUEST,
+ "Person " + id.getUserId(token) + " not found", null);
+ }
+ }
+
}
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=667308&r1=667307&r2=667308&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 12 18:02:31 2008
@@ -19,7 +19,6 @@
import org.apache.shindig.social.ResponseItem;
import org.apache.shindig.social.ResponseError;
-import org.apache.shindig.social.opensocial.model.Person;
import org.apache.shindig.social.opensocial.model.Activity;
import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
import org.apache.shindig.common.testing.FakeGadgetToken;
@@ -63,13 +62,13 @@
EasyMock.expect(servletRequest.getPathInfo()).andReturn(path);
}
- private void assertHandleGetForGroup(DataServiceServlet.GroupId group) {
- setPath("/activities/john.doe/" + group.getJsonString());
+ private void assertHandleGetForGroup(GroupId.Type group) {
+ setPath("/activities/john.doe/@" + group.toString());
ResponseItem<RestfulCollection<Activity>> data
= new ResponseItem<RestfulCollection<Activity>>(null);
- EasyMock.expect(activityService.getActivities("john.doe",
- group, token)).andReturn(data);
+ EasyMock.expect(activityService.getActivities(new UserId(UserId.Type.userId, "john.doe"),
+ new GroupId(group, null), token)).andReturn(data);
replay();
assertEquals(data, handler.handleGet(servletRequest, token));
@@ -77,22 +76,23 @@
}
public void testHandleGetAll() throws Exception {
- assertHandleGetForGroup(DataServiceServlet.GroupId.ALL);
+ assertHandleGetForGroup(GroupId.Type.all);
}
public void testHandleGetFriends() throws Exception {
- assertHandleGetForGroup(DataServiceServlet.GroupId.FRIENDS);
+ assertHandleGetForGroup(GroupId.Type.friends);
}
public void testHandleGetSelf() throws Exception {
- assertHandleGetForGroup(DataServiceServlet.GroupId.SELF);
+ assertHandleGetForGroup(GroupId.Type.self);
}
public void testHandleGetActivityById() throws Exception {
setPath("/people/john.doe/@friends/jane.doe");
ResponseItem<Activity> data = new ResponseItem<Activity>(null);
- EasyMock.expect(activityService.getActivity("john.doe", DataServiceServlet.GroupId.FRIENDS,
+ EasyMock.expect(activityService.getActivity(new UserId(UserId.Type.userId, "john.doe"),
+ new GroupId(GroupId.Type.friends, null),
"jane.doe", token)).andReturn(data);
replay();
@@ -109,7 +109,8 @@
EasyMock.expect(converter.convertToObject(jsonActivity, Activity.class)).andReturn(activity);
ResponseItem data = new ResponseItem<Object>(null);
- EasyMock.expect(activityService.createActivity("john.doe", activity, token)).andReturn(data);
+ EasyMock.expect(activityService.createActivity(new UserId(UserId.Type.userId, "john.doe"),
+ activity, token)).andReturn(data);
replay();
return data;
}
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=667308&r1=667307&r2=667308&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 Thu Jun 12 18:02:31 2008
@@ -28,7 +28,6 @@
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
-import java.util.Map;
public class AppDataHandlerTest extends TestCase {
private BeanJsonConverter converter;
@@ -64,12 +63,13 @@
EasyMock.expect(servletRequest.getPathInfo()).andReturn(path);
}
- private void assertHandleGetForGroup(DataServiceServlet.GroupId group) {
- setPath("/activities/john.doe/" + group.getJsonString() + "/appId");
+ private void assertHandleGetForGroup(GroupId.Type group) {
+ setPath("/activities/john.doe/@" + group.toString() + "/appId");
EasyMock.expect(servletRequest.getParameter("fields")).andReturn(null);
ResponseItem<DataCollection> data = new ResponseItem<DataCollection>(null);
- EasyMock.expect(appDataService.getPersonData("john.doe", group,
+ EasyMock.expect(appDataService.getPersonData(new UserId(UserId.Type.userId, "john.doe"),
+ new GroupId(group, null),
Lists.<String>newArrayList(), "appId", token)).andReturn(data);
replay();
@@ -78,15 +78,15 @@
}
public void testHandleGetAll() throws Exception {
- assertHandleGetForGroup(DataServiceServlet.GroupId.ALL);
+ assertHandleGetForGroup(GroupId.Type.all);
}
public void testHandleGetFriends() throws Exception {
- assertHandleGetForGroup(DataServiceServlet.GroupId.FRIENDS);
+ assertHandleGetForGroup(GroupId.Type.friends);
}
public void testHandleGetSelf() throws Exception {
- assertHandleGetForGroup(DataServiceServlet.GroupId.SELF);
+ assertHandleGetForGroup(GroupId.Type.self);
}
public void testHandleGetWithoutFields() throws Exception {
@@ -94,7 +94,8 @@
EasyMock.expect(servletRequest.getParameter("fields")).andReturn("pandas");
ResponseItem<DataCollection> data = new ResponseItem<DataCollection>(null);
- EasyMock.expect(appDataService.getPersonData("john.doe", DataServiceServlet.GroupId.FRIENDS,
+ EasyMock.expect(appDataService.getPersonData(new UserId(UserId.Type.userId, "john.doe"),
+ new GroupId(GroupId.Type.friends, null),
Lists.newArrayList("pandas"), "appId", token)).andReturn(data);
replay();
@@ -112,7 +113,8 @@
EasyMock.expect(converter.convertToObject(jsonAppData, HashMap.class)).andReturn(values);
ResponseItem data = new ResponseItem<Object>(null);
- EasyMock.expect(appDataService.updatePersonData("john.doe", DataServiceServlet.GroupId.SELF,
+ EasyMock.expect(appDataService.updatePersonData(new UserId(UserId.Type.userId, "john.doe"),
+ new GroupId(GroupId.Type.self, null),
Lists.newArrayList("pandas"), values, "appId", token)).andReturn(data);
replay();
return data;
@@ -135,7 +137,8 @@
EasyMock.expect(servletRequest.getParameter("fields")).andReturn("pandas");
ResponseItem data = new ResponseItem<Object>(null);
- EasyMock.expect(appDataService.deletePersonData("john.doe", DataServiceServlet.GroupId.SELF,
+ EasyMock.expect(appDataService.deletePersonData(new UserId(UserId.Type.userId, "john.doe"),
+ new GroupId(GroupId.Type.self, null),
Lists.newArrayList("pandas"), "appId", token)).andReturn(data);
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=667308&r1=667307&r2=667308&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 Thu Jun 12 18:02:31 2008
@@ -23,6 +23,7 @@
import org.apache.shindig.social.ResponseError;
import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
import org.apache.shindig.common.SecurityToken;
+import org.apache.shindig.common.testing.FakeGadgetToken;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -36,36 +37,14 @@
private DataRequestHandler drh;
private HttpServletRequest req;
private HttpServletResponse resp;
+ private BeanJsonConverter converter;
@Override
protected void setUp() throws Exception {
req = EasyMock.createMock(HttpServletRequest.class);
resp = EasyMock.createMock(HttpServletResponse.class);
- drh = new DataRequestHandler(null) {
- ResponseItem handleDelete(HttpServletRequest servletRequest,
- SecurityToken token) {
- return null;
- }
-
- ResponseItem handlePut(HttpServletRequest servletRequest,
- SecurityToken token) {
- return null;
- }
-
- ResponseItem handlePost(HttpServletRequest servletRequest,
- SecurityToken token) {
- return null;
- }
-
- ResponseItem handleGet(HttpServletRequest servletRequest,
- SecurityToken token) {
- return null;
- }
- };
- }
+ converter = EasyMock.createMock(BeanJsonConverter.class);
- public void testHandleMethodSuccess() throws Exception {
- BeanJsonConverter converter = EasyMock.createMock(BeanJsonConverter.class);
drh = new DataRequestHandler(converter) {
ResponseItem handleDelete(HttpServletRequest servletRequest,
SecurityToken token) {
@@ -87,7 +66,9 @@
return new ResponseItem<String>("GET");
}
};
+ }
+ public void testHandleMethodSuccess() throws Exception {
verifyDispatchMethodCalled("DELETE", converter);
verifyDispatchMethodCalled("PUT", converter);
verifyDispatchMethodCalled("POST", converter);
@@ -115,6 +96,16 @@
verifyExceptionThrown("HEAD");
}
+ private void verifyExceptionThrown(String methodName) throws IOException {
+ try {
+ drh.handleMethod(methodName, req, resp, null);
+ fail("The invalid method " + methodName + " should throw an exception.");
+ } catch (IllegalArgumentException e) {
+ // Yea! We like exeptions
+ assertEquals("Unserviced Http method type", e.getMessage());
+ }
+ }
+
public void testHandleMethodFailure() throws Exception {
drh = new DataRequestHandler(null) {
ResponseItem handleDelete(HttpServletRequest servletRequest,
@@ -144,21 +135,11 @@
EasyMock.verify(req, resp);
}
- private void verifyExceptionThrown(String methodName) throws IOException {
- try {
- drh.handleMethod(methodName, req, resp, null);
- fail("The invalid method " + methodName + " should throw an exception.");
- } catch (IllegalArgumentException e) {
- // Yea! We like exeptions
- assertEquals("Unserviced Http method type", e.getMessage());
- }
- }
-
public void testGetParamsFromRequest() throws Exception {
EasyMock.expect(req.getPathInfo()).andReturn("/people/5/@self");
EasyMock.replay(req);
- String[] params = drh.getParamsFromRequest(req);
+ String[] params = DataRequestHandler.getParamsFromRequest(req);
assertEquals("5", params[0]);
assertEquals("@self", params[1]);
EasyMock.verify(req);
@@ -168,7 +149,7 @@
EasyMock.expect(req.getPathInfo()).andReturn("/people/5/@self");
EasyMock.replay(req);
- assertEquals("5/@self", drh.getQueryPath(req));
+ assertEquals("5/@self", DataRequestHandler.getQueryPath(req));
EasyMock.verify(req);
}
@@ -176,7 +157,7 @@
EasyMock.expect(req.getParameter("field")).andReturn("name");
EasyMock.replay(req);
- assertEquals(PersonService.SortOrder.name, drh.getEnumParam(req, "field",
+ assertEquals(PersonService.SortOrder.name, DataRequestHandler.getEnumParam(req, "field",
PersonService.SortOrder.topFriends, PersonService.SortOrder.class));
EasyMock.verify(req);
@@ -186,7 +167,7 @@
EasyMock.expect(req.getParameter("field")).andReturn(null);
EasyMock.replay(req);
- assertEquals(PersonService.SortOrder.topFriends, drh.getEnumParam(req, "field",
+ assertEquals(PersonService.SortOrder.topFriends, DataRequestHandler.getEnumParam(req, "field",
PersonService.SortOrder.topFriends, PersonService.SortOrder.class));
EasyMock.verify(req);
}
@@ -195,7 +176,7 @@
EasyMock.expect(req.getParameter("field")).andReturn("5");
EasyMock.replay(req);
- assertEquals(5, drh.getIntegerParam(req, "field", 100));
+ assertEquals(5, DataRequestHandler.getIntegerParam(req, "field", 100));
EasyMock.verify(req);
EasyMock.reset(req);
@@ -204,7 +185,7 @@
EasyMock.expect(req.getParameter("field")).andReturn(null);
EasyMock.replay(req);
- assertEquals(100, drh.getIntegerParam(req, "field", 100));
+ assertEquals(100, DataRequestHandler.getIntegerParam(req, "field", 100));
EasyMock.verify(req);
}
@@ -213,7 +194,7 @@
EasyMock.replay(req);
assertEquals(Lists.newArrayList("happy", "sad", "grumpy"),
- drh.getListParam(req, "field", Lists.newArrayList("alpha")));
+ DataRequestHandler.getListParam(req, "field", Lists.newArrayList("alpha")));
EasyMock.verify(req);
EasyMock.reset(req);
@@ -223,7 +204,15 @@
EasyMock.replay(req);
assertEquals(Lists.newArrayList("alpha"),
- drh.getListParam(req, "field", Lists.newArrayList("alpha")));
+ DataRequestHandler.getListParam(req, "field", Lists.newArrayList("alpha")));
EasyMock.verify(req);
}
+
+ public void testGetAppId() throws Exception {
+ FakeGadgetToken token = new FakeGadgetToken();
+ assertEquals(token.getAppId(), DataRequestHandler.getAppId(
+ DataRequestHandler.APP_SUBSTITUTION_TOKEN, token));
+
+ assertEquals("676", DataRequestHandler.getAppId("676", token));
+ }
}
\ No newline at end of file
Added: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/GroupIdTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/GroupIdTest.java?rev=667308&view=auto
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/GroupIdTest.java (added)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/GroupIdTest.java Thu Jun 12 18:02:31 2008
@@ -0,0 +1,39 @@
+/*
+ * 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 junit.framework.TestCase;
+
+public class GroupIdTest extends TestCase {
+
+ public void testFromJson() throws Exception {
+ GroupId all = GroupId.fromJson("@all");
+ assertEquals(GroupId.Type.all, all.getType());
+
+ GroupId friends = GroupId.fromJson("@friends");
+ assertEquals(GroupId.Type.friends, friends.getType());
+
+ GroupId self = GroupId.fromJson("@self");
+ assertEquals(GroupId.Type.self, self.getType());
+
+ GroupId group = GroupId.fromJson("superbia");
+ assertEquals(GroupId.Type.groupId, group.getType());
+ assertEquals("superbia", group.getGroupId());
+ }
+
+}
\ No newline at end of file
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=667308&r1=667307&r2=667308&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 Thu Jun 12 18:02:31 2008
@@ -74,8 +74,10 @@
ResponseItem<RestfulCollection<Person>> data
= new ResponseItem<RestfulCollection<Person>>(null);
- EasyMock.expect(personService.getPeople("john.doe",
- DataServiceServlet.GroupId.ALL, PersonService.SortOrder.topFriends,
+ EasyMock.expect(personService.getPeople(
+ new UserId(UserId.Type.userId, "john.doe"),
+ new GroupId(GroupId.Type.all, null),
+ PersonService.SortOrder.topFriends,
PersonService.FilterType.all, 0, 20,
Sets.newHashSet(Person.Field.ID.toString(),
Person.Field.NAME.toString(),
@@ -98,8 +100,10 @@
ResponseItem<RestfulCollection<Person>> data
= new ResponseItem<RestfulCollection<Person>>(null);
- EasyMock.expect(personService.getPeople("john.doe",
- DataServiceServlet.GroupId.FRIENDS, PersonService.SortOrder.topFriends,
+ EasyMock.expect(personService.getPeople(
+ new UserId(UserId.Type.userId, "john.doe"),
+ new GroupId(GroupId.Type.friends, null),
+ PersonService.SortOrder.topFriends,
PersonService.FilterType.all, 0, 20,
Sets.newHashSet(Person.Field.ID.toString(),
Person.Field.NAME.toString(),
@@ -125,7 +129,9 @@
ResponseItem<RestfulCollection<Person>> data
= new ResponseItem<RestfulCollection<Person>>(null);
- EasyMock.expect(personService.getPeople("john.doe", DataServiceServlet.GroupId.FRIENDS, order,
+ EasyMock.expect(personService.getPeople(
+ new UserId(UserId.Type.userId, "john.doe"),
+ new GroupId(GroupId.Type.friends, null), order,
filter, 5, 10, Sets.newHashSet("money", "fame", "fortune"), token)).andReturn(data);
replay();
@@ -140,7 +146,9 @@
// TODO: This isn't right! We should be passing both john.doe and jane.doe to the service
// We probably need to either change the getPerson parameters or add a new method to
// the interface
- EasyMock.expect(personService.getPerson("john.doe", token)).andReturn(data);
+ EasyMock.expect(personService.getPerson(
+ new UserId(UserId.Type.userId, "john.doe"),
+ token)).andReturn(data);
replay();
assertEquals(data, handler.handleGet(servletRequest, token));
@@ -151,7 +159,9 @@
setPath("/people/john.doe/@self");
ResponseItem<Person> data = new ResponseItem<Person>(null);
- EasyMock.expect(personService.getPerson("john.doe", token)).andReturn(data);
+ EasyMock.expect(personService.getPerson(
+ new UserId(UserId.Type.userId, "john.doe"),
+ token)).andReturn(data);
replay();
assertEquals(data, handler.handleGet(servletRequest, token));
Added: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/UserIdTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/UserIdTest.java?rev=667308&view=auto
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/UserIdTest.java (added)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/UserIdTest.java Thu Jun 12 18:02:31 2008
@@ -0,0 +1,49 @@
+/*
+ * 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 org.apache.shindig.common.testing.FakeGadgetToken;
+
+import junit.framework.TestCase;
+
+public class UserIdTest extends TestCase {
+
+ public void testGetUserId() throws Exception {
+ UserId owner = new UserId(UserId.Type.owner, "hello");
+ assertEquals("owner", owner.getUserId(new FakeGadgetToken()));
+
+ UserId viewer = new UserId(UserId.Type.viewer, "hello");
+ assertEquals("viewer", viewer.getUserId(new FakeGadgetToken()));
+
+ UserId user = new UserId(UserId.Type.userId, "hello");
+ assertEquals("hello", user.getUserId(new FakeGadgetToken()));
+ }
+
+ public void testFromJson() throws Exception {
+ UserId owner = UserId.fromJson("@owner");
+ assertEquals(UserId.Type.owner, owner.type);
+
+ UserId viewer = UserId.fromJson("@viewer");
+ assertEquals(UserId.Type.viewer, viewer.type);
+
+ UserId user = UserId.fromJson("john.doe");
+ assertEquals(UserId.Type.userId, user.type);
+ assertEquals("john.doe", user.userId);
+ }
+
+}
\ No newline at end of file