Package com.elasticinbox.core.model

Examples of com.elasticinbox.core.model.Message


  @Override
  public Map<MailAddress, DeliveryReturnCode> deliver(MailEnvelope env, final String deliveryId)
      throws IOException
  {
    StopWatch stopWatch = Activator.getDefault().getStopWatch();
    Message message;

    try {
      MimeParser parser = new MimeParser();
      parser.parse(env.getMessageInputStream());
      message = parser.getMessage();
    } catch (MimeParserException mpe) {
      logger.error("DID" + deliveryId + ": unable to parse message: ", mpe);
      throw new DeliveryException("Unable to parse message: " + mpe.getMessage());
    } catch (IOException ioe) {
      logger.error("DID" + deliveryId + ": unable to read message stream: ", ioe);
      throw new DeliveryException("Unable to read message stream: " + ioe.getMessage());
    }

    message.setSize((long) env.getSize()); // update message size

    FilterProcessor<Message> processor = new FilterProcessor<Message>();
    //processor.add(new NotificationMailFilter());
    processor.add(new SpamMailFilter());
    processor.add(new DefaultMailFilter());
View Full Code Here


  {
    File file = new File(TEST_INLINE_ATTACH_FILE);
    InputStream in = new FileInputStream(file);

    MimeParser mp = new MimeParser(in);
    Message message = mp.getMessage();
   
    Map<String, MimePart> parts = message.getParts();
   
    for (String partId : parts.keySet())
    {
      MimePart part = parts.get(partId);
      InputStream attachmentContentByPartId = mp.getInputStreamByPartId(partId);
View Full Code Here

  @Test
  public void testStaleMessageIdRemoval() throws IOException, OverQuotaException
  {
    Mailbox mailbox = new Mailbox(MAILBOX);

    Message message = getDummyMessage();
    message.addLabel(ReservedLabels.NOTIFICATIONS.getId());

    MessageDAO messageDAO = dao.getMessageDAO();
    List<UUID> validMessageIds = new ArrayList<UUID>();
    List<UUID> invalidMessageIds = new ArrayList<UUID>();

    // save message under different message ids, and store message ids
    for (int i=0; i<5; i++) {
      UUID messageId = new MessageIdBuilder().build();
      validMessageIds.add(messageId);
      messageDAO.put(mailbox, messageId, message, null);
    }
   
    // generate stale message ids
    for (int i=0; i<5; i++) {
      UUID messageId = new MessageIdBuilder().build();
      invalidMessageIds.add(messageId);
    }

    // add stale message ids to indexes only (without message metadata)
    Mutator<String> m = createMutator(keyspace, strSe);
    LabelIndexPersistence.add(m, mailbox.getId(), invalidMessageIds, message.getLabels());
    m.execute();

    // get all messages from NOTIFICATION label
    List<UUID> allMessageIds = messageDAO.getMessageIds(mailbox,
        ReservedLabels.NOTIFICATIONS.getId(), new MessageIdBuilder().build(), 100, true);
View Full Code Here

  private static Message getDummyMessage()
  {
    Address address = new Address("Test", "test@elasticinbox.com");
    AddressList al = new AddressList(address);
   
    Message message = new Message();
    message.setFrom(al);
    message.setTo(al);
    message.setSize(1024L);
    message.setSubject("Test");
    message.setPlainBody("Test");
    message.addLabel(ReservedLabels.ALL_MAILS.getId());
   
    return message;
  }
View Full Code Here

   * @throws IOException
   * @throws MimeParserException
   */
  public void parse(InputStream in) throws IOException, MimeParserException
  {
    this.message = new Message();
    Session session = Session.getDefaultInstance(props);

    try {
      this.mimeMessage = new MimeMessage(session, in);
      this.message.setFrom(getAddressList(mimeMessage.getFrom()));
View Full Code Here

  @Override
  public BlobDataSource getRaw(final Mailbox mailbox, final UUID messageId)
      throws IOException
  {
    Message metadata = MessagePersistence.fetch(mailbox.getId(), messageId, false);
    return blobStorage.read(metadata.getLocation());
  }
View Full Code Here

    // get message stats for counters
    MessageAggregator ma = new MessageAggregator(mailbox, messageIds);

    for (UUID messageId : ma.getValidMessageIds())
    {
      Message message = ma.getMessage(messageId);

      // add labels
      if (!mod.getLabelsToAdd().isEmpty())
      {
        // add labels to messages
        MessagePersistence.persistAttributes(mutator, mailbox.getId(), messageId, labelsToAddAsAttributes);

        // add messages to label index
        LabelIndexPersistence.add(mutator, mailbox.getId(), messageId, mod.getLabelsToAdd());

        // increment label counters
        for (int labelId : mod.getLabelsToAdd())
        {
          // count only if message does not have label
          if (!message.getLabels().contains(labelId)) {
            LabelCounterPersistence.add(mutator, mailbox.getId(), labelId, message.getLabelCounters());
          }
        }
      }

      // remove labels
      if (!mod.getLabelsToRemove().isEmpty())
      {
        // remove labels from messages
        MessagePersistence.deleteAttributes(mutator, mailbox.getId(), messageId, labelsToRemoveAsAttributes);

        // remove messages from label index
        LabelIndexPersistence.remove(mutator, mailbox.getId(), messageId, mod.getLabelsToRemove());

        // decrement label counters
        for (int labelId : mod.getLabelsToRemove())
        {
          // count only if message had label
          if (message.getLabels().contains(labelId)) {
            LabelCounterPersistence.subtract(mutator, mailbox.getId(), labelId, message.getLabelCounters());
          }
        }
      }

      // add markers
      if (!mod.getMarkersToAdd().isEmpty())
      {
        // add markers to messages
        MessagePersistence.persistAttributes(mutator, mailbox.getId(), messageIds, markersToAddAsAttributes);

        // decrement unread message counter only if message does not have SEEN marker
        if (mod.getMarkersToAdd().contains(Marker.SEEN) && !message.getMarkers().contains(Marker.SEEN))
        {
          LabelCounters labelCounters = new LabelCounters();
          labelCounters.setUnreadMessages(1L);
          LabelCounterPersistence.subtract(mutator, mailbox.getId(), message.getLabels(), labelCounters);
        }
      }
     
      // remove markers
      if (!mod.getMarkersToRemove().isEmpty())
      {
        // remove markers from messages
        MessagePersistence.deleteAttributes(mutator, mailbox.getId(), messageIds, markersToRemoveAsAttributes);

        // increment unread message counter only if message has SEEN marker
        if (mod.getMarkersToRemove().contains(Marker.SEEN) && message.getMarkers().contains(Marker.SEEN))
        {
          LabelCounters labelCounters = new LabelCounters();
          labelCounters.setUnreadMessages(1L);
          LabelCounterPersistence.add(mutator, mailbox.getId(), message.getLabels(), labelCounters);
        }
      }

      mutator.executeIfFull();
    }
View Full Code Here

        start = messageId; // shift next query start

        // skip messages from purge queue
        if (purgePendingMessages.contains(messageId)) continue;

        Message message = messages.get(messageId);

        // add counters for each of the labels
        for (int labelId : message.getLabels())
        {
          if (!labels.containsId(labelId)) {
            Label label = new Label(labelId).setCounters(message.getLabelCounters());
            labels.put(label);
          } else {
            labels.get(labelId).incrementCounters(message.getLabelCounters());
          }

          if (rebuildIndex)
          {
            // add message ID to the label index
View Full Code Here

   */
  protected static Message unmarshall(
      final List<HColumn<String, byte[]>> columns,
      final boolean includeBody)
  {
    Message message = new Message();

    for (HColumn<String, byte[]> c : columns)
    {
      if (c != null && c.getValue() != null)
      {
        // map columns to Message object
        if (c.getName().equals(CN_DATE)) {
          message.setDate(dateSe.fromBytes(c.getValue()));
        } else if (c.getName().equals(CN_SIZE)) {
          message.setSize(longSe.fromBytes(c.getValue()));
        } else if (c.getName().equals(CN_SUBJECT)) {
          message.setSubject(strSe.fromBytes(c.getValue()));
        } else if (c.getName().equals(CN_MESSAGE_ID)) {
          message.setMessageId(strSe.fromBytes(c.getValue()));
        } else if (c.getName().equals(CN_FROM)) {
          message.setFrom(unserializeAddress(c.getValue()));
        } else if (c.getName().equals(CN_TO)) {
          message.setTo(unserializeAddress(c.getValue()));
        } else if (c.getName().equals(CN_CC)) {
          message.setCc(unserializeAddress(c.getValue()));
        } else if (c.getName().equals(CN_BCC)) {
          message.setBcc(unserializeAddress(c.getValue()));
        } else if (c.getName().equals(CN_REPLY_TO)) {
          message.setReplyTo(unserializeAddress(c.getValue()));
        } else if (c.getName().equals(CN_BRI)) {
          message.setLocation(URI.create(
              strSe.fromBytes(c.getValue())));
        } else if (c.getName().startsWith(CN_LABEL_PREFIX)) {
          Integer labelId = Integer
              .parseInt(c.getName().split("\\:")[1]);
          message.addLabel(labelId);
        } else if (c.getName().startsWith(CN_MARKER_PREFIX)) {
          Integer markerId = Integer
              .parseInt(c.getName().split("\\:")[1]);
          message.addMarker(Marker.fromInt(markerId));
        } else if (includeBody && c.getName().equals(CN_HTML_BODY)) {
          try {
            message.setHtmlBody(strSe.fromBytes(
                IOUtils.decompress(c.getValue())));
          } catch (Exception e) {
            //TODO: logger.error("Decompression of message body failed: ", e);
          }
        } else if (includeBody && c.getName().equals(CN_PLAIN_BODY)) {
          try {
            message.setPlainBody(strSe.fromBytes(
                IOUtils.decompress(c.getValue())));
          } catch (Exception e) {
            //TODO: logger.error("Decompression of message body failed: ", e);
          }
        } else if (c.getName().equals(CN_PARTS)) {
          Map<String, MimePart> parts = null;
          parts = JSONUtils.toObject(c.getValue(), parts);
          message.setParts(parts);
            }
      }
    }

    return message;
View Full Code Here

      FileInputStream in = new FileInputStream(file);
      MimeParser parser = new MimeParser();

      // parse message
      parser.parse(in);
      Message message = parser.getMessage();
      message.setSize(file.length()); // update message size
      in.close();

      // add labels to message
      for(Integer label : labels) {
        message.addLabel(label);
      }
     
      // add markers to message
      for(Marker marker : markers) {
        message.addMarker(marker);
      }

      // store message
      in = new FileInputStream(file);
      messageDAO.put(mailbox, messageId, message, in);
View Full Code Here

TOP

Related Classes of com.elasticinbox.core.model.Message

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.