/** {@inheritDoc} */ public Future<Void> updatePersonData(UserId userId, GroupId groupId, String appId, Set<String> fields, Map<String, Object> values, SecurityToken token) throws ProtocolException { // TODO: this seems redundant. No need to pass both fields and a map of // field->value // TODO: According to rest, yes there is. If a field is in the param list // but not in the map // that means it is a delete try { JSONObject personData = db.getJSONObject(DATA_TABLE).getJSONObject(userId.getUserId(token)); if (personData == null) { personData = new JSONObject(); db.getJSONObject(DATA_TABLE).put(userId.getUserId(token), personData); } for (Map.Entry<String, Object> entry : values.entrySet()) { personData.put(entry.getKey(), entry.getValue()); } return Futures.immediateFuture(null); } catch (JSONException je) { throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je); } }
@Test public void testFromJson() throws Exception { UserId owner = UserId.fromJson("@owner"); assertEquals(UserId.Type.owner, owner.getType()); UserId viewer = UserId.fromJson("@viewer"); assertEquals(UserId.Type.viewer, viewer.getType()); UserId me = UserId.fromJson("@me"); assertEquals(UserId.Type.me, me.getType()); UserId user = UserId.fromJson("john.doe"); assertEquals(UserId.Type.userId, user.getType()); assertEquals("john.doe", user.getUserId()); } }
@Test public void testGetUserId() throws Exception { UserId owner = new UserId(UserId.Type.owner, "hello"); assertEquals("owner", owner.getUserId(new FakeGadgetToken().setOwnerId("owner"))); UserId viewer = new UserId(UserId.Type.viewer, "hello"); assertEquals("viewer", viewer.getUserId(new FakeGadgetToken().setViewerId("viewer"))); UserId me = new UserId(UserId.Type.me, "hello"); assertEquals("viewer", me.getUserId(new FakeGadgetToken().setViewerId("viewer"))); UserId user = new UserId(UserId.Type.userId, "hello"); assertEquals("hello", user.getUserId(new FakeGadgetToken())); }
public Set<UserId> getUsers() { List<String> ids = getListParameter(USER_ID); if (ids.isEmpty()) { Preconditions.checkArgument(token.getViewerId() != null, "No userId provided and viewer not available"); // Assume @me return ImmutableSet.of(UserId.fromJson("@me")); } ImmutableSet.Builder<UserId> userIds = ImmutableSet.builder(); for (String id : ids) { userIds.add(UserId.fromJson(id)); } return userIds.build(); }
@Test public void testGetUser() throws Exception { request.setParameter("userId", "@owner"); assertEquals(UserId.Type.owner, request.getUsers().iterator().next().getType()); }
@Test public void testGetUserId() throws Exception { UserId owner = new UserId(UserId.Type.owner, "hello"); assertEquals("owner", owner.getUserId(new FakeGadgetToken().setOwnerId("owner"))); UserId viewer = new UserId(UserId.Type.viewer, "hello"); assertEquals("viewer", viewer.getUserId(new FakeGadgetToken().setViewerId("viewer"))); UserId me = new UserId(UserId.Type.me, "hello"); assertEquals("viewer", me.getUserId(new FakeGadgetToken().setViewerId("viewer"))); UserId user = new UserId(UserId.Type.userId, "hello"); assertEquals("hello", user.getUserId(new FakeGadgetToken())); }
public Set<UserId> getUsers() { List<String> ids = getListParameter(USER_ID); if (ids.isEmpty()) { Preconditions.checkArgument(token.getViewerId() != null, "No userId provided and viewer not available"); // Assume @me return ImmutableSet.of(UserId.fromJson("@me")); } ImmutableSet.Builder<UserId> userIds = ImmutableSet.builder(); for (String id : ids) { userIds.add(UserId.fromJson(id)); } return userIds.build(); }
@Test public void testGetUser() throws Exception { request.setParameter("userId", "@owner"); assertEquals(UserId.Type.owner, request.getUsers().iterator().next().getType()); }
/** {@inheritDoc} */ public Future<Void> updatePersonData(UserId userId, GroupId groupId, String appId, Set<String> fields, Map<String, Object> values, SecurityToken token) throws ProtocolException { // TODO: this seems redundant. No need to pass both fields and a map of // field->value // TODO: According to rest, yes there is. If a field is in the param list // but not in the map // that means it is a delete try { JSONObject personData = db.getJSONObject(DATA_TABLE).getJSONObject(userId.getUserId(token)); if (personData == null) { personData = new JSONObject(); db.getJSONObject(DATA_TABLE).put(userId.getUserId(token), personData); } for (Map.Entry<String, Object> entry : values.entrySet()) { personData.put(entry.getKey(), entry.getValue()); } return Futures.immediateFuture(null); } catch (JSONException je) { throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je); } }
@Test public void testFromJson() throws Exception { UserId owner = UserId.fromJson("@owner"); assertEquals(UserId.Type.owner, owner.getType()); UserId viewer = UserId.fromJson("@viewer"); assertEquals(UserId.Type.viewer, viewer.getType()); UserId me = UserId.fromJson("@me"); assertEquals(UserId.Type.me, me.getType()); UserId user = UserId.fromJson("john.doe"); assertEquals(UserId.Type.userId, user.getType()); assertEquals("john.doe", user.getUserId()); } }
@Test public void testGetUserId() throws Exception { UserId owner = new UserId(UserId.Type.owner, "hello"); assertEquals("owner", owner.getUserId(new FakeGadgetToken().setOwnerId("owner"))); UserId viewer = new UserId(UserId.Type.viewer, "hello"); assertEquals("viewer", viewer.getUserId(new FakeGadgetToken().setViewerId("viewer"))); UserId me = new UserId(UserId.Type.me, "hello"); assertEquals("viewer", me.getUserId(new FakeGadgetToken().setViewerId("viewer"))); UserId user = new UserId(UserId.Type.userId, "hello"); assertEquals("hello", user.getUserId(new FakeGadgetToken())); }
public Set<UserId> getUsers() { List<String> ids = getListParameter(USER_ID); if (ids.isEmpty()) { Preconditions.checkArgument(token.getViewerId() != null, "No userId provided and viewer not available"); // Assume @me return ImmutableSet.of(UserId.fromJson("@me")); } ImmutableSet.Builder<UserId> userIds = ImmutableSet.builder(); for (String id : ids) { userIds.add(UserId.fromJson(id)); } return userIds.build(); }
@Test public void testGetUser() throws Exception { request.setParameter("userId", "@owner"); assertEquals(UserId.Type.owner, request.getUsers().iterator().next().getType()); }
/** {@inheritDoc} */ public Future<Void> updatePersonData(UserId userId, GroupId groupId, String appId, Set<String> fields, Map<String, String> values, SecurityToken token) throws ProtocolException { // TODO: this seems redundant. No need to pass both fields and a map of // field->value // TODO: According to rest, yes there is. If a field is in the param list // but not in the map // that means it is a delete try { JSONObject personData = db.getJSONObject(DATA_TABLE).getJSONObject(userId.getUserId(token)); if (personData == null) { personData = new JSONObject(); db.getJSONObject(DATA_TABLE).put(userId.getUserId(token), personData); } for (Map.Entry<String, String> entry : values.entrySet()) { personData.put(entry.getKey(), entry.getValue()); } return ImmediateFuture.newInstance(null); } catch (JSONException je) { throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je); } }
@Test public void testFromJson() throws Exception { UserId owner = UserId.fromJson("@owner"); assertEquals(UserId.Type.owner, owner.getType()); UserId viewer = UserId.fromJson("@viewer"); assertEquals(UserId.Type.viewer, viewer.getType()); UserId me = UserId.fromJson("@me"); assertEquals(UserId.Type.me, me.getType()); UserId user = UserId.fromJson("john.doe"); assertEquals(UserId.Type.userId, user.getType()); assertEquals("john.doe", user.getUserId()); } }
/** {@inheritDoc} */ public Future<Void> deletePersonData(UserId userId, GroupId groupId, String appId, Set<String> fields, SecurityToken token) throws ProtocolException { try { String user = userId.getUserId(token); if (!db.getJSONObject(DATA_TABLE).has(user)) { return null; } JSONObject newPersonData = new JSONObject(); JSONObject oldPersonData = db.getJSONObject(DATA_TABLE).getJSONObject(user); // JSONObject keys are always strings @SuppressWarnings("unchecked") Iterator<String> keys = oldPersonData.keys(); while (keys.hasNext()) { String key = keys.next(); if (!fields.contains(key)) { newPersonData.put(key, oldPersonData.getString(key)); } } db.getJSONObject(DATA_TABLE).put(user, newPersonData); return Futures.immediateFuture(null); } catch (JSONException je) { throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je); } }
public static Set<UserId> buildUserIds(String... userIds) { // Set user id list Set<UserId> userIdSet = Sets.newHashSet(); for (String userId: userIds) { userIdSet.add(new UserId(Type.userId, userId)); } return userIdSet; }