first commit
This commit is contained in:
commit
4d332ef662
27586 changed files with 3281783 additions and 0 deletions
362
rus/WEB-INF/lib/javax.mail_src/javax/mail/Folder.java
Normal file
362
rus/WEB-INF/lib/javax.mail_src/javax/mail/Folder.java
Normal file
|
|
@ -0,0 +1,362 @@
|
|||
package javax.mail;
|
||||
|
||||
import java.util.Vector;
|
||||
import java.util.concurrent.Executor;
|
||||
import javax.mail.event.ConnectionEvent;
|
||||
import javax.mail.event.ConnectionListener;
|
||||
import javax.mail.event.FolderEvent;
|
||||
import javax.mail.event.FolderListener;
|
||||
import javax.mail.event.MailEvent;
|
||||
import javax.mail.event.MessageChangedEvent;
|
||||
import javax.mail.event.MessageChangedListener;
|
||||
import javax.mail.event.MessageCountEvent;
|
||||
import javax.mail.event.MessageCountListener;
|
||||
import javax.mail.search.SearchTerm;
|
||||
|
||||
public abstract class Folder {
|
||||
protected Store store;
|
||||
|
||||
protected int mode = -1;
|
||||
|
||||
private final EventQueue q;
|
||||
|
||||
public static final int HOLDS_MESSAGES = 1;
|
||||
|
||||
public static final int HOLDS_FOLDERS = 2;
|
||||
|
||||
public static final int READ_ONLY = 1;
|
||||
|
||||
public static final int READ_WRITE = 2;
|
||||
|
||||
protected Folder(Store store) {
|
||||
this.store = store;
|
||||
Session session = store.getSession();
|
||||
String scope = session.getProperties().getProperty("mail.event.scope", "folder");
|
||||
Executor executor = (Executor)
|
||||
session.getProperties().get("mail.event.executor");
|
||||
if (scope.equalsIgnoreCase("application")) {
|
||||
this.q = EventQueue.getApplicationEventQueue(executor);
|
||||
} else if (scope.equalsIgnoreCase("session")) {
|
||||
this.q = session.getEventQueue();
|
||||
} else if (scope.equalsIgnoreCase("store")) {
|
||||
this.q = store.getEventQueue();
|
||||
} else {
|
||||
this.q = new EventQueue(executor);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract String getName();
|
||||
|
||||
public abstract String getFullName();
|
||||
|
||||
public URLName getURLName() throws MessagingException {
|
||||
URLName storeURL = getStore().getURLName();
|
||||
String fullname = getFullName();
|
||||
StringBuffer encodedName = new StringBuffer();
|
||||
if (fullname != null)
|
||||
encodedName.append(fullname);
|
||||
return new URLName(storeURL.getProtocol(), storeURL.getHost(),
|
||||
storeURL.getPort(), encodedName.toString(),
|
||||
storeURL.getUsername(), null);
|
||||
}
|
||||
|
||||
public Store getStore() {
|
||||
return this.store;
|
||||
}
|
||||
|
||||
public abstract Folder getParent() throws MessagingException;
|
||||
|
||||
public abstract boolean exists() throws MessagingException;
|
||||
|
||||
public abstract Folder[] list(String paramString) throws MessagingException;
|
||||
|
||||
public Folder[] listSubscribed(String pattern) throws MessagingException {
|
||||
return list(pattern);
|
||||
}
|
||||
|
||||
public Folder[] list() throws MessagingException {
|
||||
return list("%");
|
||||
}
|
||||
|
||||
public Folder[] listSubscribed() throws MessagingException {
|
||||
return listSubscribed("%");
|
||||
}
|
||||
|
||||
public abstract char getSeparator() throws MessagingException;
|
||||
|
||||
public abstract int getType() throws MessagingException;
|
||||
|
||||
public abstract boolean create(int paramInt) throws MessagingException;
|
||||
|
||||
public boolean isSubscribed() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setSubscribed(boolean subscribe) throws MessagingException {
|
||||
throw new MethodNotSupportedException();
|
||||
}
|
||||
|
||||
public abstract boolean hasNewMessages() throws MessagingException;
|
||||
|
||||
public abstract Folder getFolder(String paramString) throws MessagingException;
|
||||
|
||||
public abstract boolean delete(boolean paramBoolean) throws MessagingException;
|
||||
|
||||
public abstract boolean renameTo(Folder paramFolder) throws MessagingException;
|
||||
|
||||
public abstract void open(int paramInt) throws MessagingException;
|
||||
|
||||
public abstract void close(boolean paramBoolean) throws MessagingException;
|
||||
|
||||
public abstract boolean isOpen();
|
||||
|
||||
public synchronized int getMode() {
|
||||
if (!isOpen())
|
||||
throw new IllegalStateException("Folder not open");
|
||||
return this.mode;
|
||||
}
|
||||
|
||||
public abstract Flags getPermanentFlags();
|
||||
|
||||
public abstract int getMessageCount() throws MessagingException;
|
||||
|
||||
public synchronized int getNewMessageCount() throws MessagingException {
|
||||
if (!isOpen())
|
||||
return -1;
|
||||
int newmsgs = 0;
|
||||
int total = getMessageCount();
|
||||
for (int i = 1; i <= total; i++) {
|
||||
try {
|
||||
if (getMessage(i).isSet(Flags.Flag.RECENT))
|
||||
newmsgs++;
|
||||
} catch (MessageRemovedException me) {}
|
||||
}
|
||||
return newmsgs;
|
||||
}
|
||||
|
||||
public synchronized int getUnreadMessageCount() throws MessagingException {
|
||||
if (!isOpen())
|
||||
return -1;
|
||||
int unread = 0;
|
||||
int total = getMessageCount();
|
||||
for (int i = 1; i <= total; i++) {
|
||||
try {
|
||||
if (!getMessage(i).isSet(Flags.Flag.SEEN))
|
||||
unread++;
|
||||
} catch (MessageRemovedException me) {}
|
||||
}
|
||||
return unread;
|
||||
}
|
||||
|
||||
public synchronized int getDeletedMessageCount() throws MessagingException {
|
||||
if (!isOpen())
|
||||
return -1;
|
||||
int deleted = 0;
|
||||
int total = getMessageCount();
|
||||
for (int i = 1; i <= total; i++) {
|
||||
try {
|
||||
if (getMessage(i).isSet(Flags.Flag.DELETED))
|
||||
deleted++;
|
||||
} catch (MessageRemovedException me) {}
|
||||
}
|
||||
return deleted;
|
||||
}
|
||||
|
||||
public abstract Message getMessage(int paramInt) throws MessagingException;
|
||||
|
||||
public synchronized Message[] getMessages(int start, int end) throws MessagingException {
|
||||
Message[] msgs = new Message[end - start + 1];
|
||||
for (int i = start; i <= end; i++)
|
||||
msgs[i - start] = getMessage(i);
|
||||
return msgs;
|
||||
}
|
||||
|
||||
public synchronized Message[] getMessages(int[] msgnums) throws MessagingException {
|
||||
int len = msgnums.length;
|
||||
Message[] msgs = new Message[len];
|
||||
for (int i = 0; i < len; i++)
|
||||
msgs[i] = getMessage(msgnums[i]);
|
||||
return msgs;
|
||||
}
|
||||
|
||||
public synchronized Message[] getMessages() throws MessagingException {
|
||||
if (!isOpen())
|
||||
throw new IllegalStateException("Folder not open");
|
||||
int total = getMessageCount();
|
||||
Message[] msgs = new Message[total];
|
||||
for (int i = 1; i <= total; i++)
|
||||
msgs[i - 1] = getMessage(i);
|
||||
return msgs;
|
||||
}
|
||||
|
||||
public abstract void appendMessages(Message[] paramArrayOfMessage) throws MessagingException;
|
||||
|
||||
public void fetch(Message[] msgs, FetchProfile fp) throws MessagingException {}
|
||||
|
||||
public synchronized void setFlags(Message[] msgs, Flags flag, boolean value) throws MessagingException {
|
||||
for (int i = 0; i < msgs.length; i++) {
|
||||
try {
|
||||
msgs[i].setFlags(flag, value);
|
||||
} catch (MessageRemovedException e) {}
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void setFlags(int start, int end, Flags flag, boolean value) throws MessagingException {
|
||||
for (int i = start; i <= end; i++) {
|
||||
try {
|
||||
Message msg = getMessage(i);
|
||||
msg.setFlags(flag, value);
|
||||
} catch (MessageRemovedException e) {}
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void setFlags(int[] msgnums, Flags flag, boolean value) throws MessagingException {
|
||||
for (int i = 0; i < msgnums.length; i++) {
|
||||
try {
|
||||
Message msg = getMessage(msgnums[i]);
|
||||
msg.setFlags(flag, value);
|
||||
} catch (MessageRemovedException e) {}
|
||||
}
|
||||
}
|
||||
|
||||
public void copyMessages(Message[] msgs, Folder folder) throws MessagingException {
|
||||
if (!folder.exists())
|
||||
throw new FolderNotFoundException(
|
||||
folder.getFullName() + " does not exist", folder);
|
||||
folder.appendMessages(msgs);
|
||||
}
|
||||
|
||||
public abstract Message[] expunge() throws MessagingException;
|
||||
|
||||
public Message[] search(SearchTerm term) throws MessagingException {
|
||||
return search(term, getMessages());
|
||||
}
|
||||
|
||||
public Message[] search(SearchTerm term, Message[] msgs) throws MessagingException {
|
||||
Vector<Message> matchedMsgs = new Vector();
|
||||
for (int i = 0; i < msgs.length; i++) {
|
||||
try {
|
||||
if (msgs[i].match(term))
|
||||
matchedMsgs.addElement(msgs[i]);
|
||||
} catch (MessageRemovedException e) {}
|
||||
}
|
||||
Message[] m = new Message[matchedMsgs.size()];
|
||||
matchedMsgs.copyInto(m);
|
||||
return m;
|
||||
}
|
||||
|
||||
private volatile Vector connectionListeners = null;
|
||||
|
||||
public synchronized void addConnectionListener(ConnectionListener l) {
|
||||
if (this.connectionListeners == null)
|
||||
this.connectionListeners = new Vector();
|
||||
this.connectionListeners.addElement(l);
|
||||
}
|
||||
|
||||
public synchronized void removeConnectionListener(ConnectionListener l) {
|
||||
if (this.connectionListeners != null)
|
||||
this.connectionListeners.removeElement(l);
|
||||
}
|
||||
|
||||
protected void notifyConnectionListeners(int type) {
|
||||
if (this.connectionListeners != null) {
|
||||
ConnectionEvent e = new ConnectionEvent(this, type);
|
||||
queueEvent(e, this.connectionListeners);
|
||||
}
|
||||
if (type == 3)
|
||||
this.q.terminateQueue();
|
||||
}
|
||||
|
||||
private volatile Vector folderListeners = null;
|
||||
|
||||
public synchronized void addFolderListener(FolderListener l) {
|
||||
if (this.folderListeners == null)
|
||||
this.folderListeners = new Vector();
|
||||
this.folderListeners.addElement(l);
|
||||
}
|
||||
|
||||
public synchronized void removeFolderListener(FolderListener l) {
|
||||
if (this.folderListeners != null)
|
||||
this.folderListeners.removeElement(l);
|
||||
}
|
||||
|
||||
protected void notifyFolderListeners(int type) {
|
||||
if (this.folderListeners != null) {
|
||||
FolderEvent e = new FolderEvent(this, this, type);
|
||||
queueEvent(e, this.folderListeners);
|
||||
}
|
||||
this.store.notifyFolderListeners(type, this);
|
||||
}
|
||||
|
||||
protected void notifyFolderRenamedListeners(Folder folder) {
|
||||
if (this.folderListeners != null) {
|
||||
FolderEvent e = new FolderEvent(this, this, folder, 3);
|
||||
queueEvent(e, this.folderListeners);
|
||||
}
|
||||
this.store.notifyFolderRenamedListeners(this, folder);
|
||||
}
|
||||
|
||||
private volatile Vector messageCountListeners = null;
|
||||
|
||||
public synchronized void addMessageCountListener(MessageCountListener l) {
|
||||
if (this.messageCountListeners == null)
|
||||
this.messageCountListeners = new Vector();
|
||||
this.messageCountListeners.addElement(l);
|
||||
}
|
||||
|
||||
public synchronized void removeMessageCountListener(MessageCountListener l) {
|
||||
if (this.messageCountListeners != null)
|
||||
this.messageCountListeners.removeElement(l);
|
||||
}
|
||||
|
||||
protected void notifyMessageAddedListeners(Message[] msgs) {
|
||||
if (this.messageCountListeners == null)
|
||||
return;
|
||||
MessageCountEvent e = new MessageCountEvent(this, 1, false, msgs);
|
||||
queueEvent(e, this.messageCountListeners);
|
||||
}
|
||||
|
||||
protected void notifyMessageRemovedListeners(boolean removed, Message[] msgs) {
|
||||
if (this.messageCountListeners == null)
|
||||
return;
|
||||
MessageCountEvent e = new MessageCountEvent(this, 2, removed, msgs);
|
||||
queueEvent(e, this.messageCountListeners);
|
||||
}
|
||||
|
||||
private volatile Vector messageChangedListeners = null;
|
||||
|
||||
public synchronized void addMessageChangedListener(MessageChangedListener l) {
|
||||
if (this.messageChangedListeners == null)
|
||||
this.messageChangedListeners = new Vector();
|
||||
this.messageChangedListeners.addElement(l);
|
||||
}
|
||||
|
||||
public synchronized void removeMessageChangedListener(MessageChangedListener l) {
|
||||
if (this.messageChangedListeners != null)
|
||||
this.messageChangedListeners.removeElement(l);
|
||||
}
|
||||
|
||||
protected void notifyMessageChangedListeners(int type, Message msg) {
|
||||
if (this.messageChangedListeners == null)
|
||||
return;
|
||||
MessageChangedEvent e = new MessageChangedEvent(this, type, msg);
|
||||
queueEvent(e, this.messageChangedListeners);
|
||||
}
|
||||
|
||||
private void queueEvent(MailEvent event, Vector vector) {
|
||||
Vector v = (Vector)vector.clone();
|
||||
this.q.enqueue(event, v);
|
||||
}
|
||||
|
||||
protected void finalize() throws Throwable {
|
||||
super.finalize();
|
||||
this.q.terminateQueue();
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
String s = getFullName();
|
||||
if (s != null)
|
||||
return s;
|
||||
return super.toString();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue