Ejemplo n.º 1
0
  /**
   * Delete multiple messages
   *
   * @param account
   * @param requestJSONContent JSON array of message UUIDs e.g. [uuid1, uuid2, ...]
   * @return
   */
  @DELETE
  @Produces(MediaType.APPLICATION_JSON)
  @Consumes(MediaType.APPLICATION_JSON)
  public Response deleteMessages(
      @PathParam("user") final String user,
      @PathParam("domain") final String domain,
      final String requestJSONContent) {
    Mailbox mailbox = new Mailbox(user, domain);
    List<UUID> messageIds = null;

    try {
      messageIds = JSONUtils.toUUIDList(requestJSONContent);
    } catch (IllegalStateException jpe) {
      logger.info("Malformed JSON request: {}", jpe.getMessage());
      throw new BadRequestException("Malformed JSON request");
    }

    if (messageIds == null || messageIds.isEmpty())
      throw new BadRequestException("Malformed JSON request");

    try {
      // delete message and ignore other parameters
      messageDAO.delete(mailbox, messageIds);
    } catch (Exception e) {
      logger.error("Message deletion failed: ", e);
      throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
    }

    return Response.noContent().build();
  }