Exemplo n.º 1
0
 /**
  * Package private constructor.
  *
  * <p>Note that nested messages have no containing folder, nor a message number.
  */
 IMAPNestedMessage(IMAPMessage m, BODYSTRUCTURE b, ENVELOPE e, String sid) {
   super(m._getSession());
   msg = m;
   bs = b;
   envelope = e;
   sectionId = sid;
   setPeek(m.getPeek());
 }
Exemplo n.º 2
0
  /**
   * Run thru the given array of messages, apply the given Condition on each message and generate
   * sets of contiguous sequence-numbers for the successful messages. If a message in the given
   * array is found to be expunged, it is ignored.
   *
   * <p>ASSERT: Since this method uses and returns message sequence numbers, you should use this
   * method only when holding the messageCacheLock.
   */
  public static MessageSet[] toMessageSet(Message[] msgs, Condition cond) {
    Vector v = new Vector(1);
    int current, next;

    IMAPMessage msg;
    for (int i = 0; i < msgs.length; i++) {
      msg = (IMAPMessage) msgs[i];
      if (msg.isExpunged()) // expunged message, skip it
      continue;

      current = msg.getSequenceNumber();
      // Apply the condition. If it fails, skip it.
      if ((cond != null) && !cond.test(msg)) continue;

      MessageSet set = new MessageSet();
      set.start = current;

      // Look for contiguous sequence numbers
      for (++i; i < msgs.length; i++) {
        // get next message
        msg = (IMAPMessage) msgs[i];

        if (msg.isExpunged()) // expunged message, skip it
        continue;
        next = msg.getSequenceNumber();

        // Does this message match our condition ?
        if ((cond != null) && !cond.test(msg)) continue;

        if (next == current + 1) current = next;
        else { // break in sequence
          // We need to reexamine this message at the top of
          // the outer loop, so decrement 'i' to cancel the
          // outer loop's autoincrement
          i--;
          break;
        }
      }
      set.end = current;
      v.addElement(set);
    }

    if (v.isEmpty()) // No valid messages
    return null;
    else {
      MessageSet[] sets = new MessageSet[v.size()];
      v.copyInto(sets);
      return sets;
    }
  }
Exemplo n.º 3
0
  /**
   * Return UIDSets for the messages. Note that the UIDs must have already been fetched for the
   * messages.
   */
  public static UIDSet[] toUIDSet(Message[] msgs) {
    Vector v = new Vector(1);
    long current, next;

    IMAPMessage msg;
    for (int i = 0; i < msgs.length; i++) {
      msg = (IMAPMessage) msgs[i];
      if (msg.isExpunged()) // expunged message, skip it
      continue;

      current = msg.getUID();

      UIDSet set = new UIDSet();
      set.start = current;

      // Look for contiguous UIDs
      for (++i; i < msgs.length; i++) {
        // get next message
        msg = (IMAPMessage) msgs[i];

        if (msg.isExpunged()) // expunged message, skip it
        continue;
        next = msg.getUID();

        if (next == current + 1) current = next;
        else { // break in sequence
          // We need to reexamine this message at the top of
          // the outer loop, so decrement 'i' to cancel the
          // outer loop's autoincrement
          i--;
          break;
        }
      }
      set.end = current;
      v.addElement(set);
    }

    if (v.isEmpty()) // No valid messages
    return null;
    else {
      UIDSet[] sets = new UIDSet[v.size()];
      v.copyInto(sets);
      return sets;
    }
  }
Exemplo n.º 4
0
 /*
  * Get the enclosing message's sequence number. Overrides
  * IMAPMessage.getSequenceNumber().
  */
 protected int getSequenceNumber() {
   return msg.getSequenceNumber();
 }
Exemplo n.º 5
0
 /*
  * Get the enclosing message's messageCacheLock. Overrides
  * IMAPMessage.getMessageCacheLock().
  */
 protected Object getMessageCacheLock() {
   return msg.getMessageCacheLock();
 }
Exemplo n.º 6
0
 /*
  * Is this an IMAP4 REV1 server?
  */
 protected boolean isREV1() throws FolderClosedException {
   return msg.isREV1();
 }
Exemplo n.º 7
0
 /*
  * Get the enclosing message's Protocol object. Overrides
  * IMAPMessage.getProtocol().
  */
 protected IMAPProtocol getProtocol() throws ProtocolException, FolderClosedException {
   return msg.getProtocol();
 }
Exemplo n.º 8
0
 /*
  * Get the enclosing message's fetchBlockSize.
  */
 protected int getFetchBlockSize() {
   return msg.getFetchBlockSize();
 }
Exemplo n.º 9
0
 /*
  * Check whether the enclosing message is expunged. Overrides
  * Message.isExpunged().
  */
 public boolean isExpunged() {
   return msg.isExpunged();
 }
Exemplo n.º 10
0
 /*
  * Check whether the enclosing message is expunged. Overrides
  * IMAPMessage.checkExpunged().
  */
 protected void checkExpunged() throws MessageRemovedException {
   msg.checkExpunged();
 }