-
Notifications
You must be signed in to change notification settings - Fork 182
/
MailFolder.java
103 lines (74 loc) · 2.87 KB
/
MailFolder.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
* Copyright (c) 2014 Wael Chatila / Icegreen Technologies. All Rights Reserved.
* This software is released under the Apache license 2.0
* This file has been modified by the copyright holder.
* Original file can be found at http://james.apache.org
*/
package com.icegreen.greenmail.store;
import com.icegreen.greenmail.foedus.util.MsgRangeFilter;
import com.icegreen.greenmail.imap.commands.IdRange;
import com.icegreen.greenmail.mail.MovingMessage;
import jakarta.mail.Flags;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.search.SearchTerm;
import java.util.Date;
import java.util.List;
/**
* Represents a mailbox within an {@link com.icegreen.greenmail.store.Store}.
* May provide storage for MovingMessage objects, or be a non-selectable placeholder in the
* Mailbox hierarchy.
* TODO this is a "grown" interface, which needs some more design and thought re:
* how it will fit in with the other mail storage in James.
*
* @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a>
* @version $Revision: 109034 $
*/
public interface MailFolder {
String getName();
String getFullName();
Flags getPermanentFlags();
int getMessageCount();
int getRecentCount(boolean reset);
long getUidValidity();
int getFirstUnseen();
int getUnseenCount();
boolean isSelectable();
/**
* {@inheritDoc}
*/
long getUIDNext();
/**
* Appends a message.
*
* @param message the message.
* @param flags the flags.
* @param internalDate the received date
* @return the uid.
*/
long appendMessage(MimeMessage message, Flags flags, Date internalDate);
void deleteAllMessages();
void expunge() throws FolderException;
/**
* Expunges flagged for deletion messages in given range.
*
* @see com.icegreen.greenmail.imap.commands.ExpungeCommand
* @param idRanges the ranges. Can be null.
*/
void expunge(IdRange[] idRanges);
void addListener(FolderListener listener);
void removeListener(FolderListener listener);
void store(MovingMessage mail) throws Exception;
void store(MimeMessage mail) throws Exception;
StoredMessage getMessage(long uid);
long[] getMessageUids();
long[] search(SearchTerm searchTerm);
long copyMessage(long uid, MailFolder toFolder) throws FolderException;
long moveMessage(long uid, MailFolder toFolder) throws FolderException;
void setFlags(Flags flags, boolean value, long uid, FolderListener silentListener, boolean addUid) throws FolderException;
void replaceFlags(Flags flags, long uid, FolderListener silentListener, boolean addUid) throws FolderException;
int getMsn(long uid) throws FolderException;
void signalDeletion();
List<StoredMessage> getMessages(MsgRangeFilter msgRangeFilter);
List<StoredMessage> getMessages();
List<StoredMessage> getNonDeletedMessages();
}