/** * Creates a new message collection or message */ @Operation(httpMethods = "POST", bodyParam = "entity") public Future<?> create(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); UserId user = request.getUsers().iterator().next(); if (msgCollId == null) { // Request to create a new message collection MessageCollection msgCollection = request.getTypedParameter("entity", MessageCollection.class); return service.createMessageCollection(user, msgCollection, request.getToken()); } // A message collection has been specified, allow for posting HandlerPreconditions.requireEmpty(messageIds,"Message IDs not allowed here, use PUT instead"); Message message = request.getTypedParameter("entity", Message.class); HandlerPreconditions.requireNotEmpty(message.getRecipients(), "No recipients specified"); return service.createMessage(userIds.iterator().next(), request.getAppId(), msgCollId, message, request.getToken()); }
@Operation(httpMethods = "DELETE") public Future<?> delete(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); if (msgCollId == null) { throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "A message collection is required"); } UserId user = request.getUsers().iterator().next(); if (messageIds == null || messageIds.isEmpty()) { // MessageIds may be null if the complete collection should be deleted return service.deleteMessageCollection(user, msgCollId, request.getToken()); } // Delete specific messages return service.deleteMessages(user, msgCollId, messageIds, request.getToken()); }
@Operation(httpMethods = "GET") public Future<?> get(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); CollectionOptions options = collectionOptionsFactory.create(request); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); UserId user = request.getUsers().iterator().next(); if (msgCollId == null) { // No message collection specified, return list of message collections Set<String> fields = request.getFields(MessageCollection.Field.ALL_FIELDS); return service.getMessageCollections(user, fields, options, request.getToken()); } // If messageIds are specified return them, otherwise return entries in the given collection. Set<String> fields = request.getFields(Message.Field.ALL_FIELDS); return service.getMessages(user, msgCollId, fields, messageIds, options, request.getToken()); }
@Test @Ignore public void testPostMessage() throws Exception { MessageImpl message = new MessageImpl("A message body", "A title", Message.Type.PRIVATE_MESSAGE); message.setRecipients(recipients); EasyMock.expect(converter.convertToObject(null, Message.class)).andReturn(message); EasyMock.expect(messageService.createMessage(sender, "messageHandlerTest", "@outbox", message, token)).andReturn(Futures.immediateFuture((Void) null)); EasyMock.replay(messageService, converter); RestHandler operation = registry.getRestHandler("/messages/" + sender.getUserId() + "/@outbox", "POST"); Map<String,String[]> params = ImmutableMap.of(RequestItem.APP_ID, new String[]{"messageHandlerTest"}); operation.execute(params,null, token, converter).get(); EasyMock.verify(converter, messageService); } }
return service.modifyMessageCollection(user, msgCollection, request.getToken()); return service.modifyMessage(user, msgCollId, messageIds.get(0), message, request.getToken());
@Operation(httpMethods = "DELETE") public Future<?> delete(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); if (msgCollId == null) { throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "A message collection is required"); } HandlerPreconditions.requireNotEmpty(messageIds, "No message IDs specified"); UserId user = request.getUsers().iterator().next(); return service.deleteMessages(user, msgCollId, messageIds, request.getToken()); }
@Test @Ignore public void testPostMessage() throws Exception { MessageImpl message = new MessageImpl("A message body", "A title", Message.Type.PRIVATE_MESSAGE); message.setRecipients(recipients); EasyMock.expect(converter.convertToObject(null, Message.class)).andReturn(message); EasyMock.expect(messageService.createMessage(sender, "messageHandlerTest", "@outbox", message, token)).andReturn(Futures.immediateFuture((Void) null)); EasyMock.replay(messageService, converter); RestHandler operation = registry.getRestHandler("/messages/" + sender.getUserId() + "/@outbox", "POST"); Map<String,String[]> params = ImmutableMap.of(RequestItem.APP_ID, new String[]{"messageHandlerTest"}); operation.execute(params,null, token, converter).get(); EasyMock.verify(converter, messageService); } }
return service.modifyMessageCollection(user, msgCollection, request.getToken()); return service.modifyMessage(user, msgCollId, messageIds.get(0), message, request.getToken());
/** * Creates a new message collection or message */ @Operation(httpMethods = "POST", bodyParam = "entity") public Future<?> create(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); UserId user = request.getUsers().iterator().next(); if (msgCollId == null) { // Request to create a new message collection MessageCollection msgCollection = request.getTypedParameter("entity", MessageCollection.class); return service.createMessageCollection(user, msgCollection, request.getToken()); } // A message collection has been specified, allow for posting HandlerPreconditions.requireEmpty(messageIds,"Message IDs not allowed here, use PUT instead"); Message message = request.getTypedParameter("entity", Message.class); HandlerPreconditions.requireNotEmpty(message.getRecipients(), "No recipients specified"); return service.createMessage(userIds.iterator().next(), request.getAppId(), msgCollId, message, request.getToken()); }
@Test public void testPostMessage() throws Exception { MessageImpl message = new MessageImpl("A message body", "A title", Message.Type.PRIVATE_MESSAGE); message.setRecipients(recipients); EasyMock.expect(converter.convertToObject(null, Message.class)).andReturn(message); EasyMock.expect(messageService.createMessage(sender, "messageHandlerTest", "@outbox", message, token)).andReturn(ImmediateFuture.newInstance((Void) null)); EasyMock.replay(messageService, converter); RestHandler operation = registry.getRestHandler("/messages/" + sender.getUserId() + "/@outbox", "POST"); Map<String,String[]> params = ImmutableMap.of(RequestItem.APP_ID, new String[]{"messageHandlerTest"}); operation.execute(params,null, token, converter).get(); EasyMock.verify(converter, messageService); } }
@Operation(httpMethods = "GET") public Future<?> get(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); CollectionOptions options = collectionOptionsFactory.create(request); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); UserId user = request.getUsers().iterator().next(); if (msgCollId == null) { // No message collection specified, return list of message collections Set<String> fields = request.getFields(MessageCollection.Field.ALL_FIELDS); return service.getMessageCollections(user, fields, options, request.getToken()); } // If messageIds are specified return them, otherwise return entries in the given collection. Set<String> fields = request.getFields(Message.Field.ALL_FIELDS); return service.getMessages(user, msgCollId, fields, messageIds, options, request.getToken()); }
return service.modifyMessageCollection(user, msgCollection, request.getToken()); return service.modifyMessage(user, msgCollId, messageIds.get(0), message, request.getToken());
@Operation(httpMethods = "DELETE") public Future<?> delete(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); if (msgCollId == null) { throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "A message collection is required"); } UserId user = request.getUsers().iterator().next(); if (messageIds == null || messageIds.isEmpty()) { // MessageIds may be null if the complete collection should be deleted return service.deleteMessageCollection(user, msgCollId, request.getToken()); } // Delete specific messages return service.deleteMessages(user, msgCollId, messageIds, request.getToken()); }
/** * Creates a new message collection or message */ @Operation(httpMethods = "POST", bodyParam = "entity") public Future<?> modify(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); UserId user = request.getUsers().iterator().next(); if (msgCollId == null) { // Request to create a new message collection MessageCollection msgCollection = request.getTypedParameter("entity", MessageCollection.class); return service.createMessageCollection(user, msgCollection, request.getToken()); } // A message collection has been specified, allow for posting HandlerPreconditions.requireEmpty(messageIds,"Message IDs not allowed here, use PUT instead"); Message message = request.getTypedParameter("entity", Message.class); HandlerPreconditions.requireNotEmpty(message.getRecipients(), "No recipients specified"); return service.createMessage(userIds.iterator().next(), request.getAppId(), msgCollId, message, request.getToken()); }
@Operation(httpMethods = "GET") public Future<?> get(SocialRequestItem request) throws ProtocolException { Set<UserId> userIds = request.getUsers(); String msgCollId = request.getParameter("msgCollId"); List<String> messageIds = request.getListParameter("messageIds"); CollectionOptions options = new CollectionOptions(request); HandlerPreconditions.requireNotEmpty(userIds, "No userId specified"); HandlerPreconditions.requireSingular(userIds, "Multiple userIds not supported"); UserId user = request.getUsers().iterator().next(); if (msgCollId == null) { // No message collection specified, return list of message collections Set<String> fields = request.getFields(MessageCollection.Field.ALL_FIELDS); return service.getMessageCollections(user, fields, options, request.getToken()); } // If messageIds are specified return them, otherwise return entries in the given collection. Set<String> fields = request.getFields(Message.Field.ALL_FIELDS); return service.getMessages(user, msgCollId, fields, messageIds, options, request.getToken()); }