Exception Fact Sheet for "Columba"

The goal of an Exception Fact Sheet is to reveal the design of exception handling in an application.

--Maxence, Martin

For feedback, please contact Martin

Table of contents

Basic Statistics

Number of Classes 684
Number of Domain Exception Types (Thrown or Caught) 6
Number of Domain Checked Exception Types 3
Number of Domain Runtime Exception Types 0
Number of Domain Unknown Exception Types 3
nTh = Number of Throw 102
nTh = Number of Throw in Catch 52
Number of Catch-Rethrow (may not be correct) 16
nC = Number of Catch 355
nCTh = Number of Catch with Throw 46
Number of Empty Catch (really Empty) 40
Number of Empty Catch (with comments) 15
Number of Empty Catch 55
nM = Number of Methods 3443
nbFunctionWithCatch = Number of Methods with Catch 272 / 3443
nbFunctionWithThrow = Number of Methods with Throw 72 / 3443
nbFunctionWithThrowS = Number of Methods with ThrowS 513 / 3443
nbFunctionTransmitting = Number of Methods with "Throws" but NO catch, NO throw (only transmitting) 406 / 3443
P1 = nCTh / nC 13% (0.13)
P2 = nMC / nM 7.9% (0.079)
P3 = nbFunctionWithThrow / nbFunction 2.1% (0.021)
P4 = nbFunctionTransmitting / nbFunction 11.8% (0.118)
P5 = nbThrowInCatch / nbThrow 51% (0.51)
R2 = nCatch / nThrow 3.48
A1 = Number of Caught Exception Types From External Libraries 40
A2 = Number of Reused Exception Types From External Libraries (thrown from application code) 8

W1 is a rough estimation of the richness of the exception model. It does not take into account the inheritance relationships between domain exceptions.

Proportion P1 measures the overall exception flow. According to our experience, it varies from 5% to 70%. Early-catch design generally yields a low P1, libraries that must warn clients about errors (e.g. databases) generally have a high P1.

Proportion P2 measures the dispersion of catch blocks in the application. According to our experience, it varies from 2% to 15%. A small P2 indicates a rather centralized management of errors.

R1 shows how many exceptions types from libraries (incl. JDK) are thrown from application code. For instance, IllegalArgumentException comes from the JDK but is used in many applications.

A1 measures the awareness of the application to library exceptions. A high value of A1 means either that the application is polluted with checked exceptions or that it is able to apply specific recovery depending on the library exception.

Exception Hierachy

Exception Map

Each exception that is used at least once in the project is a dot. A orange dot represents a domain exception that is defined in the application. A blue dot exception is defined in the JDK or in a library. The x-axis represents the number of times an exception is caught, the y-axis the number of times an exception is thrown.

Exceptions With State

State means fields. Number of exceptions with state: 1
SpellException
              package org.columba.mail.spellcheck.cswilly;public class SpellException extends Exception {
    /** A wrapped <code>Throwable</code> */
    protected Throwable rootCause;

    /**
 * <p>
 * This will create an <code>Exception</code>.
 * </p>
 */
    public SpellException() {
        super("Error occurred in spell application.");
    }

    /**
 * <p>
 * This will create an <code>Exception</code> with the given message.
 * </p>
 *
 * @param message <code>String</code> message indicating
 *                the problem that occurred.
 */
    public SpellException(String message) {
        super(message);
    }

    /**
 * <p>
 * This will create an <code>Exception</code> with the given message
 *   and wrap another <code>Exception</code>.  This is useful when
 *   the originating <code>Exception</code> should be held on to.
 * </p>
 *
 * @param message <code>String</code> message indicating
 *                the problem that occurred.
 * @param exception <code>Exception</code> that caused this
 *                  to be thrown.
 */
    public SpellException(String message, Throwable rootCause) {
        super(message);
        this.rootCause = rootCause;
    }

    /**
 * <p>
 * This returns the message for the <code>Exception</code>. If
 *   there is a root cause, the message associated with the root
 *   <code>Exception</code> is appended.
 * </p>
 *
 * @return <code>String</code> - message for <code>Exception</code>.
 */
    public String getMessage() {
        if (rootCause != null) {
            return super.getMessage() + ": " + rootCause.getMessage();
        } else {
            return super.getMessage();
        }
    }

    /**
 * <p>
 * This prints the stack trace of the <code>Exception</code>. If
 *   there is a root cause, the stack trace of the root
 *   <code>Exception</code> is printed right after.
 * </p>
 */
    public void printStackTrace() {
        super.printStackTrace();

        if (rootCause != null) {
            System.err.print("Root cause: ");
            rootCause.printStackTrace();
        }
    }

    /**
 * <p>
 * This prints the stack trace of the <code>Exception</code> to the given
 *   PrintStream. If there is a root cause, the stack trace of the root
 *   <code>Exception</code> is printed right after.
 * </p>
 */
    public void printStackTrace(PrintStream s) {
        super.printStackTrace(s);

        if (rootCause != null) {
            s.print("Root cause: ");
            rootCause.printStackTrace(s);
        }
    }

    /**
 * <p>
 * This prints the stack trace of the <code>Exception</code> to the given
 *   PrintWriter. If there is a root cause, the stack trace of the root
 *   <code>Exception</code> is printed right after.
 * </p>
 */
    public void printStackTrace(PrintWriter w) {
        super.printStackTrace(w);

        if (rootCause != null) {
            w.print("Root cause: ");
            rootCause.printStackTrace(w);
        }
    }

    /**
 * <p>
 * This will return the root cause <code>Throwable</code>, or null
 *   if one does not exist.
 * </p>
 *
 * @return <code>Throwable</code> - the wrapped <code>Throwable</code>.
 */
    public Throwable getRootCause() {
        return rootCause;
    }
}
            

Thrown Exceptions Summary

A (Domain) exception is defined in the application. A (Lib) exception is defined in the JDK or in a library. An exception can be thrown, thrown from within a catch, or declared in the signature of a method (usually for checked exceptions). Hovering over a number triggers showing code snippets from the application code.

Type Exception Thrown Thrown
from Catch
Declared
- Unknown 19
              
//in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
throw ex;

              
//in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
throw e;

              
//in java/org/columba/mail/pop3/POP3Server.java
throw e;

              
//in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
throw e;

              
//in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
throw e;

              
//in java/org/columba/mail/pop3/POP3Store.java
throw (POP3Exception) e.getCause();

              
//in java/org/columba/mail/imap/IMAPServer.java
throw (IMAPException) e.getCause();

              
//in java/org/columba/mail/imap/IMAPServer.java
throw ex;

              
//in java/org/columba/mail/imap/IMAPServer.java
throw e;

              
//in java/org/columba/mail/imap/IMAPServer.java
throw e;

              
//in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
throw (SpellException) e;

              
//in java/org/columba/mail/folder/imap/IMAPFolder.java
throw e;

              
//in java/org/columba/mail/folder/imap/IMAPFolder.java
throw e;

              
//in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
throw e;

              
//in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
throw e;

              
//in java/org/columba/mail/folder/AbstractLocalFolder.java
throw e1;

              
//in java/org/columba/mail/folder/AbstractLocalFolder.java
throw e;

              
//in java/org/columba/mail/smtp/command/SendMessageCommand.java
throw e;

              
//in java/org/columba/mail/smtp/SMTPServer.java
throw (SMTPException) e.getCause();

            
- -
- Builder 3
              
// in java/org/columba/mail/pop3/POP3Store.java
throw (POP3Exception) e.getCause();

              
// in java/org/columba/mail/imap/IMAPServer.java
throw (IMAPException) e.getCause();

              
// in java/org/columba/mail/smtp/SMTPServer.java
throw (SMTPException) e.getCause();

            
- -
- Variable 19
              
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
throw ex;

              
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
throw e;

              
// in java/org/columba/mail/pop3/POP3Server.java
throw e;

              
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
throw e;

              
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
throw e;

              
// in java/org/columba/mail/pop3/POP3Store.java
throw (POP3Exception) e.getCause();

              
// in java/org/columba/mail/imap/IMAPServer.java
throw (IMAPException) e.getCause();

              
// in java/org/columba/mail/imap/IMAPServer.java
throw ex;

              
// in java/org/columba/mail/imap/IMAPServer.java
throw e;

              
// in java/org/columba/mail/imap/IMAPServer.java
throw e;

              
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
throw (SpellException) e;

              
// in java/org/columba/mail/folder/imap/IMAPFolder.java
throw e;

              
// in java/org/columba/mail/folder/imap/IMAPFolder.java
throw e;

              
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
throw e;

              
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
throw e;

              
// in java/org/columba/mail/folder/AbstractLocalFolder.java
throw e1;

              
// in java/org/columba/mail/folder/AbstractLocalFolder.java
throw e;

              
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
throw e;

              
// in java/org/columba/mail/smtp/SMTPServer.java
throw (SMTPException) e.getCause();

            
- -
(Lib) CommandCancelledException 26
              
// in java/org/columba/mail/gui/message/MessageController.java
public void showMessage(IMailbox folder, Object uid) throws Exception { this.folder = folder; this.uid = uid; // if necessary decrypt/verify message IMailFolderCommandReference newRefs = filterMessage(folder, uid); // map to new reference if (newRefs != null) { folder = (IMailbox) newRefs.getSourceFolder(); uid = newRefs.getUids()[0]; } MimeTree mimePartTree = folder.getMimePartTree(uid); if (mimePartTree == null) throw new CommandCancelledException( "Message does not exist anymore."); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be shown? (html/plain) String preferedSubtype; if ((Boolean.valueOf(html.getAttribute("prefer")).booleanValue())) { preferedSubtype = "html"; } else { preferedSubtype = "plain"; } List parts = mimePartTree.getInlineParts(mimePartTree.getRootMimeNode(), "text", preferedSubtype); bodytextViewer.view(folder, uid, parts, this .getFrameController()); spamStatusViewer.view(folder, uid, this.getFrameController()); securityStatusViewer.view(folder, uid, this.getFrameController()); headerController.view(folder, uid, this.getFrameController()); // notify all interested listeners fireMessageSelectionChangedEvent(folder, uid.toString()); }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
public void execute(IWorkerStatusController wsc) throws Exception { if (!updateGui) return; // get command reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get selected folder srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(wsc); // get selected message UID uid = r.getUids()[0]; if (!srcFolder.exists(uid)) { return; } try { // get flags flags = srcFolder.getFlags(uid); // get messagecontroller of frame IMessageController messageController = ((MessageViewOwner) mediator) .getMessageController(); messageController.showMessage(srcFolder, uid); restartMarkAsReadTimer(flags, messageController, r); // fill semantic context prepareContextData(); } catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); } }
// in java/org/columba/mail/gui/composer/command/ReplyWithTemplateCommand.java
private String getTemplateBody() throws Exception, CommandCancelledException, IOException { // template folder has uid=107 IMailbox templateFolder = (IMailbox) FolderTreeModel .getInstance().getFolder("107"); // retrieve headerlist of tempate folder IHeaderList list = templateFolder.getHeaderList(); // choose template ChooseTemplateDialog d = new ChooseTemplateDialog(mediator.getView() .getFrame(), list); Object uid = null; if (d.isResult()) { // user pressed OK uid = d.getUid(); } else { throw new CommandCancelledException(); } // get bodytext of template message MimeTree tree = templateFolder.getMimePartTree(uid); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = tree.getFirstTextPart("html"); } else { bodyPart = tree.getFirstTextPart("plain"); } InputStream bodyStream = templateFolder.getMimePartBodyStream(uid, bodyPart .getAddress()); boolean wasHtml; if (bodyPart.getHeader().getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String body; if (model.isHtml()) { if (wasHtml) { body = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream(bodyStream) .toString())); } else { body = HtmlParser.substituteSpecialCharacters( StreamUtils.readCharacterStream(bodyStream).toString()); } } else { if (wasHtml) { body = HtmlParser.htmlToText(StreamUtils.readCharacterStream(bodyStream). toString()); } else { body = StreamUtils.readCharacterStream(bodyStream).toString(); } } bodyStream.close(); return body; }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { POP3CommandReference r = (POP3CommandReference) getReference(); server = r.getServer(); // register interest on status bar information ((StatusObservableImpl) server.getObservable()).setWorker(worker); log(MailResourceLoader.getString("statusbar", "message", "authenticating")); try { // login and get # of messages on server totalMessageCount = server.getMessageCount(); if (worker.cancelled()) throw new CommandCancelledException(); // synchronize local UID list with server UID list List newMessagesUidList = synchronize(); if (worker.cancelled()) throw new CommandCancelledException(); if (Logging.DEBUG) { LOG.fine(newMessagesUidList.toString()); } if (worker.cancelled()) throw new CommandCancelledException(); // only download new messages downloadNewMessages(newMessagesUidList, worker); // Delete old message from server if the feature is enabled server.cleanUpServer(); // logout cleanly logout(); // display downloaded message count in statusbar if (newMessageCount == 0) { log(MailResourceLoader.getString("statusbar", "message", "no_new_messages")); } else { log(MessageFormat.format(MailResourceLoader.getString( "statusbar", "message", "fetched_count"), new Object[] { new Integer(newMessageCount) })); // get inbox-folder from pop3-server preferences IMailbox inboxFolder = server.getFolder(); // notify listeners IMailFolderCommandReference ref = new MailFolderCommandReference(inboxFolder, newMessagesUidList.toArray()); MailCheckingManager.getInstance().fireNewMessageArrived(ref); } } catch (CommandCancelledException e) { server.logout(); // clear statusbar message server.getObservable().clearMessage(); } catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; } /* * catch (IOException e) { String name = e.getClass().getName(); * JOptionPane.showMessageDialog(null, e.getLocalizedMessage(), * name.substring(name.lastIndexOf(".")), JOptionPane.ERROR_MESSAGE); // * clear statusbar message server.getObservable().clearMessage(); } */ finally { /* * // always enable the menuitem again * r[0].getPOP3ServerController().enableActions(true); */ } }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void downloadMessage(Object serverUID, IWorkerStatusController worker) throws Exception { // server message numbers start with 1 // whereas List numbers start with 0 // -> always increase fetch number IWorkerStatusChangeListener listener = new IWorkerStatusChangeListener() { public void workerStatusChanged(WorkerStatusChangedEvent e) { if (e.getSource().cancelled()) { try { server.dropConnection(); } catch (IOException e1) { } } } }; // important for cancel worker.addWorkerStatusChangeListener(listener); // download message ColumbaMessage message; try { message = server.getMessage(serverUID, worker); } catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); } // not needed anymore worker.removeWorkerStatusChangeListener(listener); if (message == null) { LOG.severe("Message with UID=" + serverUID + " isn't on the server."); return; } message.getHeader().getFlags().setSeen(false); // get inbox-folder from pop3-server preferences IMailbox inboxFolder = server.getFolder(); // start command which adds message to folder // and calls apply-filter on this specific message IMailFolderCommandReference r = new MailFolderCommandReference( inboxFolder, message); CommandProcessor.getInstance().addOp(new AddPOP3MessageCommand(r)); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void downloadNewMessages(List newMessagesUIDList, IWorkerStatusController worker) throws Exception { LOG.fine("need to fetch " + newMessagesUIDList.size() + " messages."); int totalSize = calculateTotalSize(newMessagesUIDList); worker.setProgressBarMaximum(totalSize); worker.setProgressBarValue(0); newMessageCount = newMessagesUIDList.size(); for (int i = 0; i < newMessageCount; i++) { if (worker.cancelled()) throw new CommandCancelledException(); // which UID should be downloaded next Object serverUID = newMessagesUIDList.get(i); LOG.fine("fetch message with UID=" + serverUID); log(MessageFormat.format(MailResourceLoader.getString("statusbar", "message", "fetch_messages"), new Object[] { new Integer(i + 1), new Integer(newMessageCount) })); int size = server.getMessageSize(serverUID); if (server.getAccountItem().getPopItem().getBoolean("enable_limit")) { // check if message isn't too big to download int maxSize = server.getAccountItem().getPopItem().getInteger( "limit"); // if message-size is bigger skip download of this message if (size > maxSize) { LOG.fine("skipping download of message, too big"); continue; } } // now download the message downloadMessage(serverUID, worker); if (!server.getAccountItem().getPopItem().getBoolean( "leave_messages_on_server")) { // delete message from server server.deleteMessage(serverUID); LOG.fine("deleted message with uid=" + serverUID); } } }
// in java/org/columba/mail/pop3/POP3Store.java
protected void login() throws IOException, POP3Exception, CommandCancelledException { PasswordDialog dialog; boolean login = false; char[] password = new char[0]; boolean save = false; int loginMethod = getLoginMethod(); while (!login) { if ((password = Blowfish.decrypt(popItem.getRoot().getAttribute( "password", ""))).length == 0) { dialog = new PasswordDialog(); dialog.showDialog(MessageFormat .format(MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { popItem.get("user"), popItem.get("host") }), popItem.get("password"), popItem .getBoolean("save_password")); if (dialog.success()) { // ok pressed password = dialog.getPassword(); save = dialog.getSave(); } else { throw new CommandCancelledException(); } } else { save = popItem.getBoolean("save_password"); } try { if (loginMethod == AuthenticationManager.USER) { protocol.userPass(popItem.get("user"), password); login = true; } else if (loginMethod == AuthenticationManager.APOP) { try { protocol.apop(popItem.get("user"), password); } catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. } login = true; } else { try { // AUTH protocol.auth(AuthenticationManager .getSaslName(loginMethod), popItem.get("user"), password); login = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); } LOG.info("login=" + login); } popItem.setBoolean("save_password", save); if (save) { popItem.setString("password", Blowfish.encrypt(password)); } }
// in java/org/columba/mail/pop3/POP3Store.java
private void openConnection() throws IOException, POP3Exception, CommandCancelledException { int sslType = popItem.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = popItem.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || capas.length == 0) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/imap/IMAPServer.java
private void openConnection() throws IOException, IMAPException, CommandCancelledException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "connecting")); int sslType = item.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = item.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || isSupported("STARTTLS") || (capabilities.length == 0)) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/imap/IMAPServer.java
private void login() throws IOException, IMAPException, CommandCancelledException { PasswordDialog dialog = new PasswordDialog(); ensureConnectedState(); boolean authenticated = false; boolean first = true; char[] password = new char[0]; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "authenticating")); int loginMethod = getLoginMethod(); // Try to get Password from Configuration if (item.get("password").length() != 0) { password = Blowfish.decrypt(item.get("password")); } // Login loop until authenticated while (!authenticated) { // On the first try check if we need to show the password dialog // -> not necessary when password was stored if (!first || password.length == 0) { // Show the password dialog dialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { item.get("user"), item.get("host") }), new String(password), item.getBoolean("save_password")); if (dialog.success()) { // User pressed OK password = dialog.getPassword(); // Save or Clear the password in the configuration item.setBoolean("save_password", dialog.getSave()); if (dialog.getSave()) { item.setString("password", Blowfish.encrypt(password)); } else { item.setString("password", ""); } } else { // User cancelled authentication throw new CommandCancelledException(); } } // From this point we have a username and password // from configuration of from the dialog try { if (loginMethod == AuthenticationManager.LOGIN) { protocol.login(item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } else { try { // AUTH protocol.authenticate(AuthenticationManager .getSaslName(loginMethod), item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } } first = false; } // Sync subscribed folders if this is the first login // in this session if (firstLogin) { if( firstLoginAction != null) { firstLoginAction.actionPerformed(); } } firstLogin = false; }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // register for status events ((StatusObservableImpl) imapFolder.getObservable()).setWorker(worker); // Find old numbers int total = imapFolder.getMessageFolderInfo().getExists(); // check for new headers Object[] uids = new Object[0]; try { uids = imapFolder.synchronizeHeaderlist(); } catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); } // Get the new numbers int newTotal = imapFolder.getMessageFolderInfo().getExists(); // fire new message event to interested listeners if (triggerNotification && (newTotal != total) ) { if( ((IMAPRootFolder)imapFolder.getRootFolder()).getAccountItem().getImapItem().getBoolean("enable_sound")) { // create reference of newly arrived messages IMailFolderCommandReference ref = new MailFolderCommandReference(imapFolder, uids); // fire event MailCheckingManager.getInstance().fireNewMessageArrived(ref); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureAuthenticated() throws IOException, SMTPException, CommandCancelledException { String username; char[] password = new char[0]; boolean savePassword; // Init Values // user's email address fromAddress = identity.getAddress().getMailAddress(); usingSSL = smtpItem.getBoolean("enable_ssl"); int authMethod = getLoginMethod(); boolean authenticated = (authMethod == AuthenticationManager.NONE); if (authMethod == AuthenticationManager.POP_BEFORE_SMTP) { // no esmtp - use POP3-before-SMTP instead try { pop3Authentification(); } catch (POP3Exception e) { throw new SMTPException(e); } authenticated = true; } ensureConnected(); if (!authenticated) { username = smtpItem.get("user"); password = Blowfish.decrypt(smtpItem.getRoot().getAttribute("password", "")); savePassword = smtpItem.getBoolean("save_password"); if (username.length() == 0) { // there seems to be no username set in the smtp-options // -> use username from pop3 or imap options if (accountItem.isPopAccount()) { PopItem pop3Item = accountItem.getPopItem(); username = pop3Item.get("user"); } else { ImapItem imapItem = accountItem.getImapItem(); username = imapItem.get("user"); } } PasswordDialog passDialog = new PasswordDialog(); // ask password from user if (password.length == 0) { passDialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String(password), savePassword); if (passDialog.success()) { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } else { throw new CommandCancelledException(); } } // try to authenticate while (!authenticated) { try { try { protocol.auth(AuthenticationManager .getSaslName(authMethod), username, password); authenticated = true; } catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } } } catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } } } // authentication was successful // -> save name/password smtpItem.setString("user", username); smtpItem.setBoolean("save_password", savePassword); if (savePassword) { smtpItem.setString("password", Blowfish.encrypt(password)); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void doSSL() throws CommandCancelledException, IOException, SMTPException { if (smtpItem.getBoolean("enable_ssl")) { if (isSupported("STARTTLS")) { try { protocol.startTLS(); usingSSL = true; } catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); } } else { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader.getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(null, MailResourceLoader.getString("dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); } } }
14
              
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
70
              
// in java/org/columba/mail/gui/composer/command/ReplyWithTemplateCommand.java
private String getTemplateBody() throws Exception, CommandCancelledException, IOException { // template folder has uid=107 IMailbox templateFolder = (IMailbox) FolderTreeModel .getInstance().getFolder("107"); // retrieve headerlist of tempate folder IHeaderList list = templateFolder.getHeaderList(); // choose template ChooseTemplateDialog d = new ChooseTemplateDialog(mediator.getView() .getFrame(), list); Object uid = null; if (d.isResult()) { // user pressed OK uid = d.getUid(); } else { throw new CommandCancelledException(); } // get bodytext of template message MimeTree tree = templateFolder.getMimePartTree(uid); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = tree.getFirstTextPart("html"); } else { bodyPart = tree.getFirstTextPart("plain"); } InputStream bodyStream = templateFolder.getMimePartBodyStream(uid, bodyPart .getAddress()); boolean wasHtml; if (bodyPart.getHeader().getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String body; if (model.isHtml()) { if (wasHtml) { body = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream(bodyStream) .toString())); } else { body = HtmlParser.substituteSpecialCharacters( StreamUtils.readCharacterStream(bodyStream).toString()); } } else { if (wasHtml) { body = HtmlParser.htmlToText(StreamUtils.readCharacterStream(bodyStream). toString()); } else { body = StreamUtils.readCharacterStream(bodyStream).toString(); } } bodyStream.close(); return body; }
// in java/org/columba/mail/pop3/POP3Server.java
public void deleteMessage(Object uid) throws IOException, POP3Exception, CommandCancelledException { try { store.deleteMessage(uid); getHeaderList().remove(uid); // set dirty flag setCacheChanged(true); } catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; } }
// in java/org/columba/mail/pop3/POP3Server.java
public void deleteMessagesOlderThan(Date date) throws IOException, POP3Exception, CommandCancelledException { LOG.info("Removing message older than " + date); IHeaderList headerList = getHeaderList(); ICloseableIterator it = headerList.headerIterator(); while (it.hasNext()) { IColumbaHeader header = (IColumbaHeader) it.next(); if (((Date) header.get("columba.date")).before(date)) { deleteMessage(header.get("columba.uid")); } } it.close(); }
// in java/org/columba/mail/pop3/POP3Server.java
public void cleanUpServer() throws IOException, POP3Exception, CommandCancelledException { PopItem item = getAccountItem().getPopItem(); if (item.getBooleanWithDefault("leave_messages_on_server", false) && item.getBooleanWithDefault("remove_old_from_server", false)) { int days = item.getInteger("older_than"); long date = new Date().getTime(); date -= days * DAY_IN_MS; deleteMessagesOlderThan(new Date(date)); } else if (!item.getBooleanWithDefault("leave_messages_on_server", false)) { removeAllDownloadedMessages(); } }
// in java/org/columba/mail/pop3/POP3Server.java
private void removeAllDownloadedMessages() throws IOException, CommandCancelledException, POP3Exception { IHeaderList headerList = getHeaderList(); ICloseableIterator it = headerList.keyIterator(); while (it.hasNext()) { deleteMessage(it.next()); } it.close(); }
// in java/org/columba/mail/pop3/POP3Server.java
public ColumbaMessage getMessage(Object uid, IWorkerStatusController worker) throws IOException, POP3Exception, CommandCancelledException, ParserException { InputStream messageStream = new ProgressObservedInputStream(getStore() .fetchMessage(store.getIndex(uid)), worker, true); // Store the complete stream in a source so that we can parse it Source source = TempSourceFactory.createTempSource(messageStream, -1); // pipe through preprocessing filter // if (popItem.getBoolean("enable_pop3preprocessingfilter", false)) // rawString = modifyMessage(rawString); // UPDATE! @author fdietz // was: // Activate PreProcessor again with Source instead of String // new goal: // completely remove preprocessor -> we never change the message source! ColumbaMessage m; try { Header header = HeaderParser.parse(source); m = new ColumbaMessage(header); ColumbaHeader h = (ColumbaHeader) m.getHeader(); m.setSource(source); h.getAttributes().put("columba.pop3uid", uid); // message size should be at least 1 KB int size = Math.max(source.length() / 1024, 1); h.getAttributes().put("columba.size", new Integer(size)); // set the attachment flag h.getAttributes().put("columba.attachment", h.hasAttachments()); h.getAttributes().put("columba.fetchstate", Boolean.TRUE); h.getAttributes().put("columba.accountuid", new Integer(accountItem.getInteger("uid"))); getHeaderList().add(h, uid); } catch (ParserException e) { LOG .severe("Skipped message: Error parsing message. Message source:\n " + source); return null; } // set headercache dirty flag setCacheChanged(true); return m; }
// in java/org/columba/mail/pop3/POP3Store.java
public int getSize(int index) throws IOException, POP3Exception, CommandCancelledException { try { return ((Integer) getSizeList().get(index)).intValue(); } catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); } catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); } }
// in java/org/columba/mail/pop3/POP3Store.java
private List getSizeList() throws IOException, POP3Exception, CommandCancelledException { if (sizeList == null) { ensureTransaction(); ScanListEntry[] sizes = protocol.list(); sizeList = new ArrayList(sizes.length + 1); // since the indices on the pop server start with 1 we add // a dummy null for the 0 element in the list sizeList.add(null); for (int i = 0; i < sizes.length; i++) { if (sizes[i].getIndex() > sizeList.size() - 1) { // fill with nulls for (int nextIndex = sizeList.size() - 1; nextIndex < sizes[i] .getIndex(); nextIndex++) { sizeList.add(null); } } // put size at the specified place sizeList.set(sizes[i].getIndex(), new Integer(sizes[i] .getSize())); } } return sizeList; }
// in java/org/columba/mail/pop3/POP3Store.java
public int getMessageCount() throws IOException, POP3Exception, CommandCancelledException { if (messageCount == -1) { ensureTransaction(); int[] stat = protocol.stat(); messageCount = stat[0]; } return messageCount; }
// in java/org/columba/mail/pop3/POP3Store.java
public boolean deleteMessage(Object uid) throws CommandCancelledException, IOException, POP3Exception { ensureTransaction(); return protocol.dele(getIndex(uid)); }
// in java/org/columba/mail/pop3/POP3Store.java
protected int getIndex(Object uid) throws IOException, POP3Exception, CommandCancelledException { if (getUidMap().containsKey(uid)) { return ((Integer) getUidMap().get(uid)).intValue(); } else { throw new MessageNotOnServerException(uid); } }
// in java/org/columba/mail/pop3/POP3Store.java
public InputStream fetchMessage(int index) throws IOException, POP3Exception, CommandCancelledException { ensureTransaction(); return protocol.retr(index, getSize(index)); }
// in java/org/columba/mail/pop3/POP3Store.java
protected void login() throws IOException, POP3Exception, CommandCancelledException { PasswordDialog dialog; boolean login = false; char[] password = new char[0]; boolean save = false; int loginMethod = getLoginMethod(); while (!login) { if ((password = Blowfish.decrypt(popItem.getRoot().getAttribute( "password", ""))).length == 0) { dialog = new PasswordDialog(); dialog.showDialog(MessageFormat .format(MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { popItem.get("user"), popItem.get("host") }), popItem.get("password"), popItem .getBoolean("save_password")); if (dialog.success()) { // ok pressed password = dialog.getPassword(); save = dialog.getSave(); } else { throw new CommandCancelledException(); } } else { save = popItem.getBoolean("save_password"); } try { if (loginMethod == AuthenticationManager.USER) { protocol.userPass(popItem.get("user"), password); login = true; } else if (loginMethod == AuthenticationManager.APOP) { try { protocol.apop(popItem.get("user"), password); } catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. } login = true; } else { try { // AUTH protocol.auth(AuthenticationManager .getSaslName(loginMethod), popItem.get("user"), password); login = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); } LOG.info("login=" + login); } popItem.setBoolean("save_password", save); if (save) { popItem.setString("password", Blowfish.encrypt(password)); } }
// in java/org/columba/mail/pop3/POP3Store.java
public List checkSupportedAuthenticationMethods() throws CommandCancelledException, IOException { ArrayList supportedMechanisms = new ArrayList(); // USER/PASS is always supported supportedMechanisms.add(new Integer(AuthenticationManager.USER)); try { ensureAuthorization(); // APOP? if (protocol.isApopSupported()) { supportedMechanisms .add(new Integer(AuthenticationManager.APOP)); } } catch (POP3Exception e) { // APOP not supported } try { String serverSaslMechansims = getCapa("SASL"); // AUTH? if (serverSaslMechansims != null) { List authMechanisms = AuthenticationFactory.getInstance() .getSupportedMechanisms(serverSaslMechansims); Iterator it = authMechanisms.iterator(); while (it.hasNext()) { supportedMechanisms.add(new Integer(AuthenticationManager .getSaslCode((String) it.next()))); } } } catch (IOException e) { e.printStackTrace(); } return supportedMechanisms; }
// in java/org/columba/mail/pop3/POP3Store.java
private int getLoginMethod() throws CommandCancelledException, IOException { String loginMethod = popItem.get("login_method"); int result = 0; try { result = Integer.parseInt(loginMethod); } catch (NumberFormatException e) { // Just use the default as fallback } if (result == 0) { List supported = checkSupportedAuthenticationMethods(); if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. result = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); result = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return result; }
// in java/org/columba/mail/pop3/POP3Store.java
public static void doPOPbeforeSMTP(PopItem popItem) throws IOException, POP3Exception, CommandCancelledException { POP3Store store = new POP3Store(popItem); store.ensureTransaction(); store.logout(); }
// in java/org/columba/mail/pop3/POP3Store.java
protected void ensureTransaction() throws IOException, POP3Exception, CommandCancelledException { ensureAuthorization(); if (protocol.getState() < POP3Protocol.TRANSACTION) { login(); } }
// in java/org/columba/mail/pop3/POP3Store.java
protected void ensureAuthorization() throws IOException, POP3Exception, CommandCancelledException { if (protocol.getState() < POP3Protocol.AUTHORIZATION) { openConnection(); } }
// in java/org/columba/mail/pop3/POP3Store.java
private void openConnection() throws IOException, POP3Exception, CommandCancelledException { int sslType = popItem.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = popItem.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || capas.length == 0) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/pop3/POP3Store.java
private Map getUidMap() throws CommandCancelledException, IOException, POP3Exception { if (uidMap == null) { if (getMessageCount() != 0) { ensureTransaction(); UidListEntry[] uidList = protocol.uidl(); uidMap = new Hashtable(); for (int i = 0; i < uidList.length; i++) { uidMap.put(uidList[i].getUid(), new Integer(uidList[i] .getIndex())); } } else { uidMap = new Hashtable(0); } } return uidMap; }
// in java/org/columba/mail/imap/IMAPServer.java
public String getDelimiter() throws IOException, IMAPException, CommandCancelledException { if (delimiter == null) { // try to determine delimiter delimiter = fetchDelimiter(); } return delimiter; }
// in java/org/columba/mail/imap/IMAPServer.java
private void openConnection() throws IOException, IMAPException, CommandCancelledException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "connecting")); int sslType = item.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = item.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || isSupported("STARTTLS") || (capabilities.length == 0)) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/imap/IMAPServer.java
private int getLoginMethod() throws CommandCancelledException, IOException { String loginMethod = item.get("login_method"); int result = 0; try { result = Integer.parseInt(loginMethod); } catch (NumberFormatException e) { // Just use the default as fallback } if (result == 0) { List supported = checkSupportedAuthenticationMethods(); if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. result = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); result = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return result; }
// in java/org/columba/mail/imap/IMAPServer.java
private void login() throws IOException, IMAPException, CommandCancelledException { PasswordDialog dialog = new PasswordDialog(); ensureConnectedState(); boolean authenticated = false; boolean first = true; char[] password = new char[0]; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "authenticating")); int loginMethod = getLoginMethod(); // Try to get Password from Configuration if (item.get("password").length() != 0) { password = Blowfish.decrypt(item.get("password")); } // Login loop until authenticated while (!authenticated) { // On the first try check if we need to show the password dialog // -> not necessary when password was stored if (!first || password.length == 0) { // Show the password dialog dialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { item.get("user"), item.get("host") }), new String(password), item.getBoolean("save_password")); if (dialog.success()) { // User pressed OK password = dialog.getPassword(); // Save or Clear the password in the configuration item.setBoolean("save_password", dialog.getSave()); if (dialog.getSave()) { item.setString("password", Blowfish.encrypt(password)); } else { item.setString("password", ""); } } else { // User cancelled authentication throw new CommandCancelledException(); } } // From this point we have a username and password // from configuration of from the dialog try { if (loginMethod == AuthenticationManager.LOGIN) { protocol.login(item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } else { try { // AUTH protocol.authenticate(AuthenticationManager .getSaslName(loginMethod), item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } } first = false; } // Sync subscribed folders if this is the first login // in this session if (firstLogin) { if( firstLoginAction != null) { firstLoginAction.actionPerformed(); } } firstLogin = false; }
// in java/org/columba/mail/imap/IMAPServer.java
public void ensureSelectedState(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { // ensure that we are logged in already ensureLoginState(); String path = folder.getImapPath(); // if mailbox is not already selected select it if (protocol.getState() != IMAPProtocol.SELECTED || !protocol.getSelectedMailbox().equals(path)) { printStatusMessage(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", "select"), new Object[] { folder.getName() })); // Here we get the new mailboxinfo for the folder messageFolderInfo = protocol.select(path); // Set the readOnly flag folder.setReadOnly(!messageFolderInfo.isWriteAccess()); // Convert to a MailboxStatus selectedStatus = new MailboxStatus(messageFolderInfo); statusDirty = false; selectedFolder = folder; // delete any cached information aktMimeTree = null; aktMessageUid = null; } }
// in java/org/columba/mail/imap/IMAPServer.java
public int getLargestRemoteUid(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { MailboxStatus status = getStatus(folder); return getLargestRemoteUid(folder, status); }
// in java/org/columba/mail/imap/IMAPServer.java
public int getLargestRemoteUid(IMAPFolder folder, MailboxStatus status) throws IOException, IMAPException, CommandCancelledException { if(status.getUidNext() < 0 && status.getMessages() > 0 ) { return fetchUid(new SequenceSet(status.getMessages()), folder); } else { return (int)(status.getUidNext() -1); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MailboxStatus getStatus(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); if (selectedFolder != null && selectedFolder.equals(folder) && !statusDirty) { // We don't need to issue a additional NOOP // here since the ensureLogin() call above // ensures also the correct Status in a // MIN_IDLE interval timeframe. return selectedStatus; } if( selectedFolder == null || protocol.getState() < IMAPProtocol.SELECTED) { // if none selected select this folder instead of getting the status ensureSelectedState(folder); return selectedStatus; } printStatusMessage(MessageFormat.format(MailResourceLoader.getString( "statusbar", "message", "status"), new Object[] { folder .getName() })); MailboxStatus result = protocol.status(folder.getImapPath(), new String[] { "MESSAGES", "UIDNEXT", "RECENT", "UNSEEN", "UIDVALIDITY" }); // No response means zero! if( result.getUnseen() == -1) result.setUnseen(0); if( result.getRecent() == -1) result.setRecent(0); statusDirty = false; return result; }
// in java/org/columba/mail/imap/IMAPServer.java
protected String fetchDelimiter() throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); try { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); } catch (IMAPDisconnectedException e1) { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void createMailbox(String mailboxName, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { // make sure we are logged in ensureLoginState(); // concate the full name of the new mailbox String fullName; String path = (folder == null ? "" : folder.getImapPath()); if (path.length() > 0) fullName = path + getDelimiter() + mailboxName; else fullName = mailboxName; // check if the mailbox already exists -> subscribe only if (protocol.list("", fullName).length == 0) { // create the mailbox on the server protocol.create(fullName); } // subscribe to the new mailbox protocol.subscribe(fullName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void renameFolder(String oldMailboxName, String newMailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.rename(oldMailboxName, newMailboxName); protocol.unsubscribe(oldMailboxName); protocol.subscribe(newMailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void subscribeFolder(String mailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.subscribe(mailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void unsubscribeFolder(String mailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.unsubscribe(mailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void expunge(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); updatesEnabled = false; protocol.expunge(); updatesEnabled = true; statusDirty = true; }
// in java/org/columba/mail/imap/IMAPServer.java
public int fetchUid( SequenceSet set, IMAPFolder folder ) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); Integer[] result = protocol.fetchUid(set); if( result.length == 1) return result[0].intValue(); else return -1; }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] fetchUids(SequenceSet set, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { IStatusObservable observable = getObservable(); printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_uid_list")); ensureSelectedState(folder); if (messageFolderInfo.getExists() > 0) { SequenceSet[] packs = divide(set); Integer[] result = new Integer[set.getLength(messageFolderInfo .getExists())]; // update the progress if (observable != null) { observable.setCurrent(0); observable.setMax(result.length); } int pos = 0; for (int i = 0; i < packs.length; i++) { int packLength = packs[i].getLength(messageFolderInfo .getExists()); System.arraycopy(protocol.fetchUid(packs[i]), 0, result, pos, packLength); pos += packLength; // update the progress if (observable != null) { observable.setCurrent(pos); } } return result; } else { return new Integer[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public IMAPFlags[] fetchFlagsListStartFrom(int startIdx, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { IStatusObservable observable = getObservable(); ensureSelectedState(folder); if (selectedStatus.getMessages() - startIdx >= 0) { SequenceSet set = new SequenceSet(); set.addOpenRange(startIdx); SequenceSet[] packs = divide(set); // update the progress if (observable != null) { observable.setCurrent(0); observable.setMax(set.getLength(selectedStatus.getMessages())); } List allResults = new ArrayList(packs.length); int pos = 0; // store the intermediate results in a list for (int i = 0; i < packs.length; i++) { try { IMAPFlags[] r = protocol.fetchFlags(packs[i]); pos += r.length; allResults.add(r); } catch (IMAPException e) { // Entry does not exist on server // -> add nothing } // update the progress if (observable != null) { observable.setCurrent(pos); } } // Combine the results in one array IMAPFlags[] result = new IMAPFlags[pos]; Iterator it = allResults.iterator(); pos = 0; while (it.hasNext()) { IMAPFlags[] r = (IMAPFlags[]) it.next(); System.arraycopy(r, 0, result, pos, r.length); pos += r.length; } return result; } else { return new IMAPFlags[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public IMAPFlags[] fetchFlagsListStartFrom2(int startIdx, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); if (selectedStatus.getMessages() - startIdx >= 0) { SequenceSet set = new SequenceSet(); set.add(startIdx, Math.min(startIdx + 9, selectedStatus.getMessages())); IMAPFlags[] result = protocol.fetchFlags(set); return result; } else { return new IMAPFlags[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public NamespaceCollection fetchNamespaces() throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); return protocol.namespace(); }
// in java/org/columba/mail/imap/IMAPServer.java
protected synchronized void ensureConnectedState() throws CommandCancelledException, IOException, IMAPException { if (Math.abs(System.currentTimeMillis() - lastCommunication) > MIN_IDLE) { try { protocol.noop(); } catch (IOException e) { // Now the state of the procotol is more certain correct } catch (IMAPDisconnectedException e) { } } if (protocol.getState() < IMAPProtocol.NON_AUTHENTICATED) { printStatusMessage(MailResourceLoader .getString("statusbar", "message", "connecting")); openConnection(); } // update this point of time as last communication // since every functio calls this before communicating with // the server lastCommunication = System.currentTimeMillis(); }
// in java/org/columba/mail/imap/IMAPServer.java
protected void ensureLoginState() throws IOException, IMAPException, CommandCancelledException { ensureConnectedState(); if (protocol.getState() < IMAPProtocol.AUTHENTICATED) { printStatusMessage(MailResourceLoader .getString("statusbar", "message", "authenticating")); login(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MimeTree getMimeTree(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); // Use a caching mechanism for this if (aktMimeTree == null || !aktMessageUid.equals(uid)) { aktMimeTree = protocol.uidFetchBodystructure(((Integer) uid) .intValue()); aktMessageUid = uid; } return aktMimeTree; } catch (IMAPDisconnectedException e) { return getMimeTree(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidFetchBody(((Integer) uid).intValue(), address); } catch (IMAPDisconnectedException e) { return getMimePartBodyStream(uid, address, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Header getHeaders(Object uid, String[] keys, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); IMAPHeader[] headers = protocol.uidFetchHeaderFields( new SequenceSet(((Integer) uid).intValue()), keys); return headers[0].getHeader(); } catch (IMAPDisconnectedException e) { return getHeaders(uid, keys, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Header getAllHeaders(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); IMAPHeader[] headers = protocol.uidFetchHeader(new SequenceSet( ((Integer) uid).intValue())); return headers[0].getHeader(); } catch (IMAPDisconnectedException e) { return getAllHeaders(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); InputStream headerSource = protocol.uidFetchMimeHeaderSource( ((Integer) uid).intValue(), address); InputStream bodySource = protocol.uidFetchBody(((Integer) uid) .intValue(), address); return new SequenceInputStream(headerSource, bodySource); } catch (IMAPDisconnectedException e) { return getMimePartSourceStream(uid, address, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMessageSourceStream(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidFetchMessage(((Integer) uid).intValue()); } catch (IMAPDisconnectedException e) { return getMessageSourceStream(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void markMessage(Object[] uids, int variant, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { if (uids == null || uids.length == 0) return; try { ensureSelectedState(folder); SequenceSet uidSet = new SequenceSet(Arrays.asList(uids)); protocol.uidStore(uidSet, variant > 0, convertToFlags(variant)); statusDirty = true; } catch (IMAPDisconnectedException e) { markMessage(uids, variant, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void setFlags(Object[] uids, IMAPFlags flags, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SequenceSet uidSet = new SequenceSet(Arrays.asList(uids)); protocol.uidStore(uidSet, true, flags); } catch (IMAPDisconnectedException e) { setFlags(uids, flags, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public int getIndex(Integer uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SearchKey key = new SearchKey(SearchKey.UID, uid); Integer[] index = protocol.search(new SearchKey[] { key }); if (index.length > 0) { return index[0].intValue(); } else { return -1; } } catch (IMAPDisconnectedException e) { return getIndex(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] search(SearchKey key, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidSearch(new SearchKey[] { key }); } catch (IMAPDisconnectedException e) { return search(key, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public List search(IFilterRule filterRule, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SearchKey[] searchRequest; searchRequest = createSearchKey(filterRule); Integer[] result = null; Charset charset = UTF8; while (result == null) { try { result = protocol.uidSearch(charset, searchRequest); } catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; } } return Arrays.asList(result); } catch (IMAPDisconnectedException e) { return search(filterRule, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MailboxInfo getMessageFolderInfo(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); return messageFolderInfo; }
// in java/org/columba/mail/imap/IMAPServer.java
public ListInfo[] fetchSubscribedFolders() throws IOException, IMAPException, CommandCancelledException { try { ensureLoginState(); ListInfo[] lsub = protocol.lsub("", "*"); // Also set the delimiter if (lsub.length > 0) { delimiter = lsub[0].getDelimiter(); } return lsub; } catch (IMAPDisconnectedException e) { return fetchSubscribedFolders(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public boolean isSelected(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); return (protocol.getState() == IMAPProtocol.SELECTED && protocol .getSelectedMailbox().equals(folder.getImapPath())); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
Object[] synchronizeHeaderlist() throws Exception, IOException, CommandCancelledException, IMAPException { Object[] result = new Object[0]; // do not sync folders which have a Noselect flag if (!getConfiguration().getBooleanWithDefault("selectable", true)) return result; // Check if the mailbox has changed MailboxStatus status = getServer().getStatus(this); if (status.getMessages() == 0) { purgeHeaderList(); syncMailboxInfo(status); return result; } if (!firstSync && status.getMessages() == this.getMessageFolderInfo() .getExists()) { return result; } List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); int largestLocalUid = localUids.size() > 0 ? ((Integer) localUids .get(localUids.size() - 1)).intValue() : -1; int largestRemoteUid = getServer().getLargestRemoteUid(this, status); if (localUids.size() == status.getMessages() && largestRemoteUid == largestLocalUid) { // Seems to be no change! if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } return result; } printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); largestRemoteUid = getServer().fetchUid( new SequenceSet(SequenceEntry.STAR), this); if (largestRemoteUid == -1) { largestRemoteUid = getServer().fetchUid( new SequenceSet(status.getMessages()), this); } int largestLocalUidIndex = findLargestLocalUidIndex(localUids); int newMessages = status.getMessages() - largestLocalUidIndex; /* * // Somehow there are new messages that // have a lower index -> out * of sync if (localUids.size() - status.getMessages() + newMessages < * 0) { * * LOG.severe("Folder " + getName() + " is out of sync -> recreating the * cache!"); purgeHeaderList(); // all messages are new newMessages = * status.getMessages(); // Set the index of the largest Uid to 0 // -> * ensure it works with the fetch of new // messages part below * largestLocalUidIndex = 0; largestLocalUid = -1; * * localUids.clear(); } */ LOG.fine("Found " + newMessages + " new Messages"); // If we have new messages add them to the headerlist if (newMessages > 0) { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_new_headers")); // Ensure sizes are correct getMessageFolderInfo().setExists(localUids.size()); getMessageFolderInfo().setUnseen( Math.min(getMessageFolderInfo().getUnseen(), localUids .size())); getMessageFolderInfo().setRecent(0); List newUids = fetchNewMessages(largestLocalUidIndex); localUids.addAll(newUids); if (newUids.size() < newMessages) { // There are still more messages to update // -> issue another fetch messages command CommandProcessor.getInstance().addOp( new FetchMessagesCommand( new MailFolderCommandReference(this), newMessages, largestLocalUidIndex, newUids .size())); } else { fetchDone(); } result = newUids.toArray(new Object[0]); } else { // Number of deleted messages is computed from exists on imap and // local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } } return result; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private int findLargestLocalUidIndex(List localUids) throws IOException, IMAPException, CommandCancelledException { int largestLocalUidIndex = -1; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); // Compute the number of new messages if (localUids.size() > 0) { // Find the index of the largest local Uid int position = localUids.size() - 1; while (largestLocalUidIndex == -1 && position >= localUids.size() - 10 && position >= 0) { largestLocalUidIndex = getServer().getIndex( (Integer) localUids.get(position--), this); } // Still not found -> do a binary search if (largestLocalUidIndex == -1) { int a, b, c; int index; a = 0; b = position; while (b > a && b - a > 1) { c = Math.round((b - a) * 0.5f) + a; index = getServer().getIndex((Integer) localUids.get(c), this); if (index == -1) { b = c; } else { a = c; largestLocalUidIndex = index; } } // removedLocalUids = localUids.size() - 1 - position; } else { // -2 because of the decrement in line 317 // removedLocalUids = localUids.size() - 2 - position; } // Check if all local uids have been deleted if (largestLocalUidIndex == -1) { // all messages are new largestLocalUidIndex = 0; } } else { // all messages are new largestLocalUidIndex = 0; } return largestLocalUidIndex; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void findRemovedMessages(MailboxStatus status, List localUids) throws Exception, IOException, IMAPException, CommandCancelledException { int largestRemoteUid = getServer().getLargestRemoteUid(this); int deletedMessages = localUids.size() - status.getMessages(); LOG.fine("Found " + deletedMessages + " deleted Messages"); // Find the messages that have been deleted if (deletedMessages > 0) { int found = 0; // First deleted all local uids that // are larger than the largest remote uid while (localUids.size() > 0 && found != deletedMessages && ((Integer) localUids.get(localUids.size() - 1)) .intValue() > largestRemoteUid) { Flags flags = getHeaderList().remove( localUids.get(localUids.size() - 1)).getFlags(); fireMessageRemoved(localUids.remove(localUids.size() - 1), flags); found++; } // Search in packs beginning from newest to oldest // -> in most cases this should save us a lot of uid fetchings to // find the deleted messages // Pack size is min 10, max 200 else mailboxsize / 10 int packSize = Math.min(Math.max(deletedMessages, status .getMessages() / 10), 200); int upper = status.getMessages(); int localPointer = localUids.size() - 1; // Fetch Pack outer loop while (upper >= 1 && found != deletedMessages) { SequenceSet set = new SequenceSet(); set.add(Math.max(upper - packSize + 1, 1), upper); // Fetch these uids and compare them to the // local list Integer[] actUids = getServer().fetchUids(set, this); // Compare inner loop for (int i = actUids.length - 1; i >= 0 && found != deletedMessages; i--) { // Find missing uids loop while (found != deletedMessages && localPointer >= 0 && !localUids.get(localPointer).equals(actUids[i])) { // We found the uid of a deleted message // -> remove it from the headerlist getHeaderList().remove(localUids.get(localPointer)); found++; localPointer--; } // next position in the local uid list localPointer--; } upper = upper - packSize; } // All the other local mails are deleted while (found < deletedMessages && localPointer >= 0) { getHeaderList().remove(localUids.get(localPointer--)); found++; } if (found != deletedMessages) { LOG.severe("Assertion failed : found only " + found + " of " + deletedMessages); } } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
List fetchNewMessages(int startIndex) throws IOException, IMAPException, CommandCancelledException, Exception { IMAPFlags[] newFlags = getServer().fetchFlagsListStartFrom2( startIndex + 1, this); List newUids = new ArrayList(newFlags.length); // Build a list of the new uids for (int i = 0; i < newFlags.length; i++) { // Update the list of new and local uids newUids.add(newFlags[i].getUid()); } // Fetch the headers of the new messages ... getServer().fetchHeaderList(getHeaderList(), newUids, this); // .. and set the flags setFlags(newFlags); // fire message added updates for (int i = 0; i < newFlags.length; i++) { fireMessageAdded(newFlags[i].getUid(), newFlags[i]); } return newUids; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void synchronizeFlags(MailboxStatus status) throws Exception, IOException, CommandCancelledException, IMAPException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_flags")); MailboxStatus flagStatus = new MailboxStatus(); flagStatus.setMessages(status.getMessages()); // Build the remote lists of messages that are UNSEEN, FLAGGED, DELETED, // JUNK SearchKey unseenKey = new SearchKey(SearchKey.UNSEEN); List remoteUnseenUids = Arrays.asList(getServer().search(unseenKey, this)); flagStatus.setUnseen(remoteUnseenUids.size()); SearchKey flaggedKey = new SearchKey(SearchKey.FLAGGED); List remoteFlaggedUids = Arrays.asList(getServer().search(flaggedKey, this)); SearchKey deletedKey = new SearchKey(SearchKey.DELETED); List remoteDeletedUids = Arrays.asList(getServer().search(deletedKey, this)); SearchKey recentKey = new SearchKey(SearchKey.RECENT); List remoteRecentUids = Arrays.asList(getServer().search(recentKey, this)); flagStatus.setRecent(remoteRecentUids.size()); SearchKey junkKey = new SearchKey(SearchKey.KEYWORD, "JUNK"); List remoteJunkUids = Arrays.asList(getServer().search(junkKey, this)); SearchKey answeredKey = new SearchKey(SearchKey.ANSWERED); List remoteAnsweredUids = Arrays.asList(getServer().search(answeredKey, this)); SearchKey draftKey = new SearchKey(SearchKey.DRAFT); List remoteDraftUids = Arrays.asList(getServer().search(draftKey, this)); // update the local flags and ensure that the MailboxInfo is correct ICloseableIterator headerIterator = getHeaderList().headerIterator(); int unseen = 0; int flagged = 0; int recent = 0; int deleted = 0; int junk = 0; int answered = 0; int draft = 0; while (headerIterator.hasNext()) { IColumbaHeader header = (IColumbaHeader) headerIterator.next(); Object uid = header.get("columba.uid"); Flags flag = header.getFlags(); Flags oldFlag = (Flags) flag.clone(); int index; index = Collections.binarySearch(remoteUnseenUids, uid); flag.setSeen(index < 0); if (!flag.getSeen()) { unseen++; } index = Collections.binarySearch(remoteDeletedUids, uid); flag.setDeleted(index >= 0); if (flag.getDeleted()) { deleted++; } index = Collections.binarySearch(remoteFlaggedUids, uid); flag.setFlagged(index >= 0); if (flag.getFlagged()) { flagged++; } index = Collections.binarySearch(remoteRecentUids, uid); flag.setRecent(index >= 0); if (flag.getRecent()) { recent++; } index = Collections.binarySearch(remoteJunkUids, uid); header.getAttributes().put("columba.spam", new Boolean(index >= 0)); if (index >= 0) { junk++; } index = Collections.binarySearch(remoteAnsweredUids, uid); flag.setAnswered(index >= 0); if (flag.getAnswered()) { answered++; } index = Collections.binarySearch(remoteDraftUids, uid); flag.setDraft(index >= 0); if (flag.getDraft()) { draft++; } if (!flag.equals(oldFlag)) { getHeaderList().update(uid, header); fireMessageFlagChanged(uid, oldFlag, 0); } } headerIterator.close(); if (remoteJunkUids.size() != junk || remoteRecentUids.size() != recent || remoteFlaggedUids.size() != flagged || remoteDeletedUids.size() != deleted || remoteUnseenUids.size() != unseen || remoteAnsweredUids.size() != answered || remoteDraftUids.size() != draft) { // Something is wrong // Sync again synchronizeHeaderlist(); return; } syncMailboxInfo(flagStatus); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public String getImapPath() throws IOException, IMAPException, CommandCancelledException { StringBuffer path = new StringBuffer(); path.append(getName()); IMailFolder child = this; while (true) { child = (IMailFolder) child.getParent(); if (child instanceof IMAPRootFolder) { break; } String n = ((IMAPFolder) child).getName(); path.insert(0, n + getServer().getDelimiter()); } return path.toString(); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void updateFlag(IMAPFlags flag) throws Exception, CommandCancelledException { if (getServer().isSelected(this)) { Integer uid = new Integer(getServer().fetchUid( new SequenceSet(flag.getIndex()), this)); flag.setUid(uid); setFlags(new Flags[] { flag }); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
void fetchDone() throws IOException, CommandCancelledException, IMAPException, Exception { MailboxStatus status = getServer().getStatus(this); List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); // Number of deleted messages is computed from exists on imap and local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } // Apply filter if enabled ImapItem item = getServer().getItem(); boolean applyFilter = item.getBooleanWithDefault( "automatically_apply_filter", false); // if "automatically apply filter" is selected & there // are // new // messages if (applyFilter) { CommandProcessor.getInstance() .addOp( new ApplyFilterCommand( new MailFolderCommandReference(this))); } // Reenable Updating the mailbox mailboxSyncEnabled = true; }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureConnected() throws IOException, SMTPException, CommandCancelledException { if (protocol.getState() == SMTPProtocol.NOT_CONNECTED) { // Start login procedure protocol.openPort(); initialize(); doSSL(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureAuthenticated() throws IOException, SMTPException, CommandCancelledException { String username; char[] password = new char[0]; boolean savePassword; // Init Values // user's email address fromAddress = identity.getAddress().getMailAddress(); usingSSL = smtpItem.getBoolean("enable_ssl"); int authMethod = getLoginMethod(); boolean authenticated = (authMethod == AuthenticationManager.NONE); if (authMethod == AuthenticationManager.POP_BEFORE_SMTP) { // no esmtp - use POP3-before-SMTP instead try { pop3Authentification(); } catch (POP3Exception e) { throw new SMTPException(e); } authenticated = true; } ensureConnected(); if (!authenticated) { username = smtpItem.get("user"); password = Blowfish.decrypt(smtpItem.getRoot().getAttribute("password", "")); savePassword = smtpItem.getBoolean("save_password"); if (username.length() == 0) { // there seems to be no username set in the smtp-options // -> use username from pop3 or imap options if (accountItem.isPopAccount()) { PopItem pop3Item = accountItem.getPopItem(); username = pop3Item.get("user"); } else { ImapItem imapItem = accountItem.getImapItem(); username = imapItem.get("user"); } } PasswordDialog passDialog = new PasswordDialog(); // ask password from user if (password.length == 0) { passDialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String(password), savePassword); if (passDialog.success()) { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } else { throw new CommandCancelledException(); } } // try to authenticate while (!authenticated) { try { try { protocol.auth(AuthenticationManager .getSaslName(authMethod), username, password); authenticated = true; } catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } } } catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } } } // authentication was successful // -> save name/password smtpItem.setString("user", username); smtpItem.setBoolean("save_password", savePassword); if (savePassword) { smtpItem.setString("password", Blowfish.encrypt(password)); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void doSSL() throws CommandCancelledException, IOException, SMTPException { if (smtpItem.getBoolean("enable_ssl")) { if (isSupported("STARTTLS")) { try { protocol.startTLS(); usingSSL = true; } catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); } } else { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader.getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(null, MailResourceLoader.getString("dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
public List checkSupportedAuthenticationMethods() throws IOException, SMTPException, CommandCancelledException { ensureConnected(); List supportedMechanisms = new ArrayList(); for (int i = 0; i < capas.length; i++) { if (capas[i].startsWith("AUTH")) { List authMechanisms = AuthenticationFactory.getInstance() .getSupportedMechanisms(capas[i]); Iterator it = authMechanisms.iterator(); while (it.hasNext()) { Integer saslCode = new Integer(AuthenticationManager .getSaslCode((String) it.next())); if (!saslCode.equals(-1)) supportedMechanisms.add(saslCode); } break; } } if( supportedMechanisms.size() == 0) { // Add a default PLAIN login as fallback supportedMechanisms.add(new Integer(AuthenticationManager.SASL_PLAIN)); } return supportedMechanisms; }
// in java/org/columba/mail/smtp/SMTPServer.java
private int getLoginMethod() throws IOException, SMTPException, CommandCancelledException { String authType = accountItem.getSmtpItem().get("login_method"); int method = 0; try { method = Integer.parseInt(authType); } catch (NumberFormatException e) { //Fallback to Securest Login method } if (method == 0) { List supported = checkSupportedAuthenticationMethods(); if (accountItem.isPopAccount()) { supported .add(new Integer(AuthenticationManager.POP_BEFORE_SMTP)); } if (supported.size() == 0) { // No Authentication available return AuthenticationManager.NONE; } if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. method = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); method = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return method; }
// in java/org/columba/mail/smtp/SMTPServer.java
protected void pop3Authentification() throws IOException, POP3Exception, CommandCancelledException { POP3Store.doPOPbeforeSMTP(accountItem.getPopItem()); }
// in java/org/columba/mail/smtp/SMTPServer.java
public void sendMessage(SendableMessage message, IWorkerStatusController workerStatusController) throws SMTPException, IOException, CommandCancelledException { ensureAuthenticated(); // send from address and recipient list to SMTP server // ->all addresses have to be normalized protocol.mail(identity.getAddress()); Iterator recipients = message.getRecipients().iterator(); while (recipients.hasNext()) { try { protocol.rcpt(Address.parse((String) recipients.next())); } catch (ParserException e1) { throw new SMTPException(e1); } } // now send message source protocol.data(new ProgressObservedInputStream( message.getSourceStream(), workerStatusController)); }
(Lib) IllegalArgumentException 24
              
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
protected JComponent[] transformHeaderField(Header header, String key) { if (header == null) throw new IllegalArgumentException("header == null"); if (key == null) throw new IllegalArgumentException("key == null"); BasicHeader bHeader = new BasicHeader(header); // message doesn't contain this headerfield if (header.get(key) == null) { return new JComponent[0]; } // headerfield is empty if (((String) header.get(key)).length() == 0) { return new JComponent[0]; } if (key.equals("Subject")) { String str = bHeader.getSubject(); // substitute special characters like: // <,>,&,\t,\n," str = HtmlParser.substituteSpecialCharactersInHeaderfields(str); return new JComponent[] { new JLabel(str) }; } else if (key.equals("To")) { return createRecipientComponentArray(bHeader.getTo()); } else if (key.equals("Reply-To")) { return createRecipientComponentArray(bHeader.getReplyTo()); } else if (key.equals("Cc")) { return createRecipientComponentArray(bHeader.getCc()); } else if (key.equals("Bcc")) { return createRecipientComponentArray(bHeader.getBcc()); } else if (key.equals("From")) { return createRecipientComponentArray(new Address[] { (Address) bHeader .getFrom() }); } else if (key.equals("Date")) { String str = DATE_FORMATTER.format(bHeader.getDate()); // substitute special characters like: // <,>,&,\t,\n," str = HtmlParser.substituteSpecialCharactersInHeaderfields(str); return new JComponent[] { new JLabel(str) }; } else { String str = (String) header.get(key); // substitute special characters like: // <,>,&,\t,\n," str = HtmlParser.substituteSpecialCharactersInHeaderfields(str); return new JComponent[] { new JLabel(str) }; } }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
public void setHeader(Map keys) { if (keys == null) throw new IllegalArgumentException("keys == null"); this.keys = keys; }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
public void selectionChanged(SelectionChangedEvent e) { if (e instanceof TreeSelectionChangedEvent) { // tree selection event TreeSelectionChangedEvent event = (TreeSelectionChangedEvent) e; IMailFolder[] selectedFolders = event.getSelected(); if (isTreePopupEvent == false) { // view headerlist in message list viewer new ViewHeaderListAction(this).actionPerformed(null); // Unregister/register as Folder listener if (currentFolder != null) { currentFolder.removeFolderListener(this); currentFolder = null; } if (selectedFolders.length == 1 && selectedFolders[0] != null) { selectedFolders[0].addFolderListener(this); currentFolder = selectedFolders[0]; } // update frame title updateTreeDockableTitle(); } isTreePopupEvent = false; } else if (e instanceof TableSelectionChangedEvent) { if (isTablePopupEvent == false) // show message content new ViewMessageAction(this).actionPerformed(null); isTablePopupEvent = false; } else throw new IllegalArgumentException( "unknown selection changed event"); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
private AbstractColumbaAction getAction(String id, IFrameMediator controller) { if (id == null) throw new IllegalArgumentException("id == null"); if (controller == null) throw new IllegalArgumentException("controller == null"); IExtension extension = handler.getExtension(id); AbstractColumbaAction a = null; try { if (extension != null) a = (AbstractColumbaAction) extension .instanciateExtension(new Object[] { controller }); } catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); } return a; }
// in java/org/columba/mail/gui/composer/util/AddressCollector.java
public void addAllContacts(List<IHeaderItem> list, boolean includeGroup) { if ( list == null ) throw new IllegalArgumentException("list == null"); Iterator<IHeaderItem> it = list.iterator(); while (it.hasNext()) { IHeaderItem headerItem = it.next(); if (headerItem.isContact()) { // contacts item IContactItem item = (IContactItem) headerItem; addAddress(item.getName(), item); addAddress(item.getFirstName(), item); addAddress(item.getLastName(), item); addAddress(item.getEmailAddress(), item); } else { if (includeGroup) { // group item IGroupItem item = (IGroupItem) headerItem; addAddress(item.getName(), item); } } } }
// in java/org/columba/mail/gui/util/WelcomeMessage.java
public static void addWelcomeMessage(IMailFolder folder, String to, String accountUid) throws Exception { if ( folder == null) throw new IllegalArgumentException("folder == null"); if ( to == null || to.length() == 0) throw new IllegalArgumentException("to == nllu"); if ( accountUid == null ) throw new IllegalArgumentException("account uid == null"); // create message String message = createMessage(to, accountUid); // convert to inputstream InputStream is = new ByteArrayInputStream(message.getBytes("UTF-8")); // add to folder CommandProcessor.getInstance().addOp( new AddMessageCommand(new MailFolderCommandReference( folder), is)); }
// in java/org/columba/mail/main/MessageOptionParser.java
public static CharSequence[] tokenizeList(CharSequence input) { if (input == null) throw new IllegalArgumentException("input == null"); List<CharSequence> result = new ArrayList<CharSequence>(); boolean quoted = false; String current = ""; int start = 0; int i; char quotechar = '\0'; boolean escaped = false; for (i = 0; i < input.length(); i++) { char c = input.charAt(i); switch (c) { case '\"': case '\'': { if (!escaped && (!quoted || c == quotechar)) { current += input.subSequence(start, i); start = i + 1; quoted ^= true; quotechar = c; } break; } case '\\': if (!quoted) { escaped = true; current += input.subSequence(start, i); start = i + 1; break; } case ',': { if (!escaped && !quoted) { result.add(current + input.subSequence(start, i)); current = ""; start = i + 1; } break; } } if (c != '\\') escaped = false; } if (start < i) { current += input.subSequence(start, i); } if (!current.equals("")) { result.add(current); } return (CharSequence[]) result.toArray(new CharSequence[0]); }
// in java/org/columba/mail/main/MessageOptionParser.java
public static Map<String,Object> parse(String in) { if (in == null) throw new IllegalArgumentException("in == null"); Hashtable<String, Object> map = new Hashtable<String, Object>(); CharSequence[] sequence = tokenizeList(in); for (int i = 0; i < sequence.length; i++) { String s = (String) sequence[i]; // remove whitespaces s = s.trim(); // split key/value pairs int index = s.indexOf('='); if (index != -1) { String key = s.substring(0, index); String value = s.substring(index + 1, s.length()); // split values CharSequence[] sequencevalues = tokenizeList(value); if (sequencevalues.length == 1) map.put(key, value); else { String []values = new String[sequencevalues.length]; for (int j = 0; j < values.length; j++) values[j] = (String)sequencevalues[j]; map.put(key, values); } } } return map; }
// in java/org/columba/mail/parser/NormalizeRecipientListParser.java
public List<String> normalizeRCPTVector(List<String> list) { if (list == null) throw new IllegalArgumentException("list == null"); String mailaddress = ""; String new_address = ""; List<String> out = new Vector<String>(); for (Iterator it = list.iterator(); it.hasNext();) { mailaddress = (String) it.next(); // skip if ((mailaddress == null) || (mailaddress.length() == 0)) { continue; } StringTokenizer strToken = new StringTokenizer(mailaddress, "<"); if (strToken.countTokens() == 2) { // the first token is irrelevant strToken.nextToken(); // the next token is an token with the whole Mailaddress new_address = "<" + strToken.nextToken(); } else { // just look if the first character alrady an < // so can use this mailaddress as the correct address if (mailaddress.charAt(0) == '<') { new_address = mailaddress; } else { new_address = "<" + mailaddress + ">"; } } out.add(new_address); new_address = ""; } return out; }
// in java/org/columba/mail/parser/ListBuilder.java
public static List<String> createFlatList(List<String> list) { if (list == null) throw new IllegalArgumentException("list == null"); List<String> result = new Vector<String>(); Iterator<String> it = list.iterator(); while (it.hasNext()) { String str = it.next(); // remove leading or trailing whitespaces str = str.trim(); IContactItem contactItem = retrieveContactItem(str); if (contactItem != null) { // found contact item in contact component String address = contactItem.getEmailAddress(); if ((address == null) || address.equals("")) continue; result.add(address); } else { // check if its a group item IGroupItem groupItem = retrieveGroupItem(str); if (groupItem != null) { List<IContactItem> contactItemList = groupItem .getContacts(); Iterator<IContactItem> it2 = contactItemList.iterator(); while (it2.hasNext()) { IContactItem i = it2.next(); String address = i.getEmailAddress(); if ((address == null) || address.equals("")) { continue; } result.add(address); } } else { result.add(str); } } } return result; }
// in java/org/columba/mail/parser/ListParser.java
public static List<String> createListFromString(String str) { if (str == null) throw new IllegalArgumentException("str == null"); List<String> result = new Vector<String>(); if (str.length() == 0) return result; int pos = 0; boolean bracket = false; // Remove the ending separator and whitespace, if any exist str = str.trim(); if (str.endsWith(SEPARATOR_STRING)) str = str.substring(0, str.length()-1); StringBuffer buf = new StringBuffer(); while (pos < str.length()) { char ch = str.charAt(pos); if ((ch == SEPARATOR_CHAR) && (bracket == false)) { // found new message String address = buf.toString().trim(); result.add(address); buf = new StringBuffer(); } else if (ch == '"') { // Remove the double-quote characters from around the addresses in the string bracket = !bracket; } else { buf.append(ch); } pos++; } String address = buf.toString().trim(); // remove whitespaces address = address.trim(); result.add(address); return result; }
// in java/org/columba/mail/parser/ListParser.java
public static String createStringFromList(List<String> list, String separator, boolean trailingSeperator) { if (list == null) throw new IllegalArgumentException("list == null"); if (separator == null) throw new IllegalArgumentException("separator == null"); StringBuffer output = new StringBuffer(); String seperatorstring = ""; for (Iterator it = list.iterator(); it.hasNext();) { String address = (String) it.next(); if (address == null || address.equals("")) { continue; } // Remote double-quotes StringBuffer addrSB = new StringBuffer(address); while (true) { int doubleQuote = addrSB.indexOf("\""); if (doubleQuote >= 0) addrSB.deleteCharAt(doubleQuote); else break; } // If address contains a comma, enclose the display name portion in double-quotes int comma = addrSB.indexOf(","); int endDoubleQuote = addrSB.length(); if (comma >= 0) { int addrStart = addrSB.indexOf(" <"); if (addrStart >= 0) endDoubleQuote = addrStart; addrSB.insert(endDoubleQuote, '"'); addrSB.insert(0, '"'); } address = addrSB.toString(); output.append(seperatorstring); output.append(address); seperatorstring = separator + " "; } if (trailingSeperator) output.append(seperatorstring); return output.toString(); }
// in java/org/columba/mail/search/MailSearchProvider.java
public ICriteriaRenderer getCriteriaRenderer( String searchCriteriaTechnicalName) { if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_BODY_CONTAINS)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_BODY_CONTAINS, ""), this); else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SUBJECT_CONTAINS)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_SUBJECT_CONTAINS, ""), this); else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_FROM_CONTAINS)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_FROM_CONTAINS, ""), this); else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SIZE_GREATER_THAN)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_SIZE_GREATER_THAN, ""), this); else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SIZE_SMALLER_THAN)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_SIZE_SMALLER_THAN, ""), this); else throw new IllegalArgumentException("no renderer available for <" + searchCriteriaTechnicalName + ">"); }
// in java/org/columba/mail/search/MailSearchProvider.java
private FilterCriteria createFilterCriteria(String searchTerm, String searchCriteriaTechnicalName) { FilterCriteria criteria = null; if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_BODY_CONTAINS)) { criteria = MailFilterFactory.createBodyContains(searchTerm); } else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SUBJECT_CONTAINS)) { criteria = MailFilterFactory.createSubjectContains(searchTerm); } else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_FROM_CONTAINS)) { criteria = MailFilterFactory.createFromContains(searchTerm); } else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SIZE_GREATER_THAN)) { criteria = MailFilterFactory.createSizeIsBigger(Integer .parseInt(searchTerm)); } else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SIZE_SMALLER_THAN)) { criteria = MailFilterFactory.createSizeIsSmaller(Integer .parseInt(searchTerm)); } else throw new IllegalArgumentException("no criteria <" + searchCriteriaTechnicalName + "> found"); return criteria; }
// in java/org/columba/mail/search/MailSearchProvider.java
public void showAllResults(IFrameMediator mediator, String searchTerm, String searchCriteriaTechnicalName) { VirtualFolder vFolder = lastSearchFolder; // if complex use the last search folder if (searchCriteriaTechnicalName == null) { vFolder = searchFolders.values().iterator().next(); } else vFolder = searchFolders.get(searchCriteriaTechnicalName); if (vFolder == null) throw new IllegalArgumentException("vFolder for search critera <" + searchCriteriaTechnicalName + "> not found"); // ensure that we are currently in the mail component IFrameMediator newMediator = null; try { newMediator = FrameManager.getInstance().switchView( mediator.getContainer(), "ThreePaneMail"); } catch (PluginLoadingFailedException e) { e.printStackTrace(); } // select invisible virtual folder ((TreeViewOwner) newMediator).getTreeController().setSelected(vFolder); // update message list CommandProcessor.getInstance().addOp( new ViewHeaderListCommand(newMediator, new MailFolderCommandReference(vFolder))); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public boolean tryToGetLock(Object locker) { // IMAP Folders have no own lock ,but share the lock from the Root // to ensure that only one operation can be processed simultanous IMailFolder root = getRootFolder(); if (root == null) throw new IllegalArgumentException("IMAPRoot is null"); return root.tryToGetLock(locker); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void releaseLock(Object locker) { IMailFolder root = getRootFolder(); if (root == null) throw new IllegalArgumentException("IMAPRoot is null"); root.releaseLock(locker); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
public Set keySet() { try { openDatabase(); } catch (DatabaseException e) { LOG.severe(e.getMessage()); return new HashSet(); } if( keyType == Integer.class ) { return new StoredKeySet(db, integerBinding, false); } else if( keyType == String.class) { return new StoredKeySet(db, stringBinding, false); } throw new IllegalArgumentException("keyType not implemented!"); }
// in java/org/columba/mail/folder/command/CreateFilterOnMessageCommand.java
public Filter createFilter(String filterDescr, String headerField, String pattern) { Filter filter = FilterFactory.createEmptyFilter(); filter.setName(filterDescr); if (headerField.equals(FILTER_ON_SUBJECT)) { filter.getFilterRule().add( MailFilterFactory.createSubjectContains(pattern)); } else if (headerField.equals(FILTER_ON_FROM)) { filter.getFilterRule().add( MailFilterFactory.createFromContains(pattern)); } else if (headerField.equals(FILTER_ON_TO)) { filter.getFilterRule().add( MailFilterFactory.createToContains(pattern)); } else throw new IllegalArgumentException("unsupported operation"); filter.getFilterActionList().addEmptyAction(); return filter; }
0 0
(Lib) RuntimeException 11
              
// in java/org/columba/mail/gui/config/mailboximport/ImportWizardLauncher.java
public void launchWizard() { final IExtensionHandler pluginHandler; try { pluginHandler = PluginManager.getInstance().getExtensionHandler( "org.columba.mail.import"); } catch (PluginHandlerNotFoundException ex) { throw new RuntimeException(ex); } DataModel data = new DataModel(); data.registerDataLookup("Plugin.handler", new DataLookup() { public Object lookupData() { return pluginHandler; } }); WizardModel model = new DefaultWizardModel(new Step[] { new PluginStep(data), new LocationStep(mediator, data) }); model.addWizardModelListener(new MailboxImporter(data)); Wizard wizard = new Wizard(model, MailResourceLoader.getString("dialog", "mailboximport", "title"), ImageLoader.getIcon(IconKeys.PREFERENCES)); wizard.setStepListRenderer(null); CSH.setHelpIDString(wizard, "organising_and_managing_your_email_1"); JavaHelpSupport.enableHelp(wizard, HelpManager.getInstance().getHelpBroker()); wizard.pack(); wizard.setLocationRelativeTo(null); wizard.setVisible(true); }
// in java/org/columba/mail/gui/config/accountwizard/AccountCreator.java
public void wizardFinished(WizardModelEvent e) { String type = (String) data.getData("IncomingServer.type"); AccountItem account = MailConfig.getInstance().getAccountList() .addEmptyAccount(type.toLowerCase()); if (account == null) { // this should not happen, the templates seem to be missing throw new RuntimeException("Account templates missing!"); } account.setName((String) data.getData("Identity.accountName")); account.getIdentity().setAddress( (Address) data.getData("Identity.address")); IMailFolder folder = null; if (type.equals("POP3")) { PopItem pop = account.getPopItem(); pop.setString("host", (String) data.getData("IncomingServer.host")); pop .setString("user", (String) data .getData("IncomingServer.login")); POP3ServerCollection.getInstance().add(account); folder = FolderTreeModel.getInstance().getFolder("101"); } else { ImapItem imap = account.getImapItem(); imap .setString("host", (String) data .getData("IncomingServer.host")); imap.setString("user", (String) data .getData("IncomingServer.login")); // TODO (@author fdietz): All this code for creating a new // IMAPRootFolder should // be moved to a FolderFactory // -> this way "path" would be handled in the factory, too // parent directory for mail folders // for example: ".columba/mail/" // String path = // MailConfig.getInstance().getConfigDirectory().getPath(); try { // IMAPRootFolder parentFolder = FolderFactory.getInstance() // .createIMAPRootFolder(account); // IMailFolder inbox = FolderFactory.getInstance() // .createIMAPFolder(parentFolder, "INBOX"); IMailFolder inbox = FolderFactory.getInstance().createIMAPRootFolder(account); folder = inbox; } catch (FolderCreationException e1) { e1.printStackTrace(); } // try { // IMAPRootFolder parentFolder = new IMAPRootFolder(account, path); // ((IMailFolder) // FolderTreeModel.getInstance().getRoot()).add(parentFolder); // ((IMailFolder) FolderTreeModel.getInstance().getRoot()) // .getConfiguration().getRoot().addElement( // parentFolder.getConfiguration().getRoot()); // // IMailFolder inbox = new IMAPFolder("INBOX", "IMAPFolder", // path); // parentFolder.add(inbox); // parentFolder.getConfiguration().getRoot().addElement( // inbox.getConfiguration().getRoot()); // folder = inbox; // } catch (Exception e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } } // add welcome message to new account inbox try { Address adr = (Address) data.getData("Identity.address"); WelcomeMessage.addWelcomeMessage(folder, adr.toString(), new Integer(account.getUid()).toString()); } catch (Exception e1) { e1.printStackTrace(); } // add account to mail-checking manager MailCheckingManager.getInstance().add(account); // notify all observers MailCheckingManager.getInstance().update(); account.getSmtpItem().setString("host", (String) data.getData("OutgoingServer.host")); // generally we can just use the same login for both servers account.getSmtpItem().setString("user", (String) data.getData("IncomingServer.login")); }
// in java/org/columba/mail/search/MailSearchProvider.java
public List<ISearchResult> query(String searchTerm, String searchCriteriaTechnicalName, boolean searchInside, int startIndex, int resultCount) { LOG.info("searchTerm=" + searchTerm); LOG.info("criteriaName=" + searchCriteriaTechnicalName); LOG.info("searchInside=" + searchInside); List<ISearchResult> result = new Vector<ISearchResult>(); indizes = new Vector<SearchIndex>(); // create search criteria FilterCriteria criteria = createFilterCriteria(searchTerm, searchCriteriaTechnicalName); // remember request id for "search in results" String searchRequestId = searchCriteriaTechnicalName; // remove memorized search folders if (!searchInside) { lastSearchFolder = null; //searchFolders.remove(searchRequestId); } // return empty result, in case the criteria doesn't match the search // term if (criteria == null) return result; try { // Iterator<String> it3 = searchFolders.keySet().iterator(); // while (it3.hasNext()) { // String key = it3.next(); // VirtualFolder f = searchFolders.get(key); // LOG.info("current cache id=" + key + ":" + f.getId()); // } VirtualFolder folder = null; // create virtual folder for criteria if (searchInside) { if (lastSearchFolder != null) { LOG.info("reuse existing virtual folder"); // get first one VirtualFolder vFolder = lastSearchFolder; // create new search folder, but re-use old search folder folder = SearchFolderFactory.prepareSearchFolder(criteria, vFolder); } else { totalResultCount = 0; return result; } } else { LOG.info("create new virtual folder"); IMailFolder rootFolder = (IMailFolder) FolderTreeModel .getInstance().getRoot(); folder = SearchFolderFactory.createSearchFolder(criteria, rootFolder); } // do the search IHeaderList headerList = folder.getHeaderList(); Object[] uids = headerList.getUids(); LOG.info("result count=" + uids.length); for (int i = 0; i < uids.length; i++) { SearchIndex idx = new SearchIndex(folder, uids[i]); // System.out.println("--> idx.folder="+idx.folder.getId()); // System.out.println("--> idx.message="+idx.messageId); indizes.add(idx); } // retrieve the actual search result data List<ISearchResult> l = retrieveResultData(indizes, startIndex, resultCount); result.addAll(l); // sort all the results Collections.sort(result, new MyComparator()); // remember search folder for "show total results" action searchFolders.put(searchRequestId, folder); lastSearchFolder = folder; LOG.info("cache search folder=" + searchRequestId); } catch (Exception e) { throw new RuntimeException(e); } // memorize total result count totalResultCount = indizes.size(); singleCriteriaSearch = true; return result; }
// in java/org/columba/mail/search/MailSearchProvider.java
public List<ISearchResult> query(List<ISearchRequest> list, boolean matchAll, boolean searchInside, int startIndex, int resultCount) { List<ISearchResult> result = new Vector<ISearchResult>(); indizes = new Vector<SearchIndex>(); // remove all memorized search folders if (!searchInside) { lastSearchFolder = null; } // create search criteria FilterRule rule = new FilterRule(); if (matchAll) rule.setCondition(FilterRule.MATCH_ALL); else rule.setCondition(FilterRule.MATCH_ANY); Iterator<ISearchRequest> it = list.iterator(); StringBuffer buf = new StringBuffer(); while (it.hasNext()) { ISearchRequest r = it.next(); String searchCriteriaTechnicalName = r.getCriteria(); buf.append(searchCriteriaTechnicalName); String searchTerm = r.getSearchTerm(); FilterCriteria criteria = createFilterCriteria(searchTerm, searchCriteriaTechnicalName); rule.add(criteria); } // remember request id for "search in results" String searchRequestId = buf.toString(); try { VirtualFolder folder = null; // create virtual folder for each criteria IMailFolder rootFolder = (IMailFolder) FolderTreeModel .getInstance().getRoot(); if (searchInside && (lastSearchFolder != null) ) { folder = lastSearchFolder; SearchFolderFactory.prepareSearchFolder(rule, folder); } else { folder = SearchFolderFactory.createSearchFolder(rule, rootFolder); } // do the search IHeaderList headerList = folder.getHeaderList(); Object[] uids = headerList.getUids(); for (int i = 0; i < uids.length; i++) { SearchIndex idx = new SearchIndex(folder, uids[i]); // System.out.println("--> idx.folder="+idx.folder.getId()); // System.out.println("--> idx.message="+idx.messageId); indizes.add(idx); } // retrieve the actual search result data List<ISearchResult> l = retrieveResultData(indizes, startIndex, resultCount); result.addAll(l); // sort all the results Collections.sort(result, new MyComparator()); // remember search folder for "show total results" action searchFolders.put(searchRequestId, folder); lastSearchFolder = folder; } catch (Exception e) { throw new RuntimeException(e); } // memorize total result count totalResultCount = indizes.size(); singleCriteriaSearch = false; return result; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
public ICloseableIterator headerIterator() { try { openDatabase(); } catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); } return new BerkeleyDBIterator( (StoredIterator)new StoredValueSet(db,headerBinding, false).iterator()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
public ICloseableIterator keyIterator() { try { openDatabase(); } catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); } return new BerkeleyDBIterator( (StoredIterator)new StoredKeySet(db, integerBinding, false).iterator()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
public void update(Object uid, IColumbaHeader header) { try { openDatabase(); } catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); } DatabaseEntry key = getDatabaseEntry(uid); try { db.delete(null, key); db.put(null, key, getDatabaseEntry(header)); } catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); } }
// in java/org/columba/mail/folder/FolderFactory.java
public static FolderFactory getInstance() { if (instance == null) { try { instance = new FolderFactory(); } catch (PluginHandlerNotFoundException phnfe) { throw new RuntimeException(phnfe); } } return instance; }
// in java/org/columba/mail/facade/DialogFacade.java
public void openMessage(URI location) { // example: "columba://org.columba.mail/<folder-id>/<message-id>" String s = location.toString(); // TODO: @author fdietz replace with regular expression int index = s.lastIndexOf('/'); String messageId = s.substring(index + 1, s.length()); String folderId = s.substring(s.lastIndexOf('/', index - 1) + 1, index); IContainer[] container = FrameManager.getInstance().getOpenFrames(); if (container == null || container.length == 0) throw new RuntimeException("No frames available"); IFrameMediator mailFrameMediator = null; for (int i = 0; i < container.length; i++) { IFrameMediator mediator = container[i].getFrameMediator(); if (mediator.getId().equals("ThreePaneMail")) { // found mail component frame mailFrameMediator = mediator; } } if (mailFrameMediator == null) throw new RuntimeException("No mail frame mediator found"); // type-cast here is safe MessageFrameController c = new MessageFrameController( (ThreePaneMailFrameController) mailFrameMediator); new DefaultContainer(c); IMailbox folder = (IMailbox) FolderTreeModel.getInstance().getFolder( folderId); IMailFolderCommandReference r = new MailFolderCommandReference(folder, new Object[] { Integer.parseInt(messageId) }); c.setTreeSelection(r); c.setTableSelection(r); CommandProcessor.getInstance().addOp(new ViewMessageCommand(c, r)); }
8
              
// in java/org/columba/mail/gui/config/mailboximport/ImportWizardLauncher.java
catch (PluginHandlerNotFoundException ex) { throw new RuntimeException(ex); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); throw new RuntimeException("Mailbox is corrupted!"); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (PluginHandlerNotFoundException phnfe) { throw new RuntimeException(phnfe); }
0
(Lib) UnsupportedFlavorException 4
              
// in java/org/columba/mail/gui/tree/util/CTransferableTreePath.java
public synchronized Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (flavor.isMimeTypeEqual(TREEPATH_FLAVOR.getMimeType())) { // DataFlavor.javaJVMLocalObjectMimeType)) return _path; } else { throw new UnsupportedFlavorException(flavor); } }
// in java/org/columba/mail/gui/tree/FolderTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/config/filter/ObjectArrayTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/table/MessageReferencesTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
0 4
              
// in java/org/columba/mail/gui/tree/util/CTransferableTreePath.java
public synchronized Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (flavor.isMimeTypeEqual(TREEPATH_FLAVOR.getMimeType())) { // DataFlavor.javaJVMLocalObjectMimeType)) return _path; } else { throw new UnsupportedFlavorException(flavor); } }
// in java/org/columba/mail/gui/tree/FolderTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/config/filter/ObjectArrayTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/table/MessageReferencesTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
(Domain) FolderCreationException 3
              
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createChild(IMailFolder parent, String name, String childType) throws FolderCreationException { IMailFolder child; try { IExtension extension = handler.getExtension(childType); child = (IMailFolder) extension.instanciateExtension(new Object[] { name, childType, path }); // Add child to parent parent.addSubfolder(child); } catch (Exception e) { throw new FolderCreationException(e); } return child; }
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createVirtualFolder(IMailFolder parent, String name) throws FolderCreationException { IMailFolder child; try { IExtension extension = handler.getExtension("VirtualFolder"); child = (IMailFolder) extension.instanciateExtension(new Object[] {name}); // Add child to parent parent.addSubfolder(child); } catch (Exception e) { throw new FolderCreationException(e); } return child; }
// in java/org/columba/mail/folder/FolderFactory.java
public IMAPFolder createIMAPRootFolder(AccountItem account) throws FolderCreationException { try { IExtension extension = handler.getExtension("IMAPRootFolder"); IMAPRootFolder child = (IMAPRootFolder) extension.instanciateExtension(new Object[] {account, path}); // get root folder IMailFolder parent = (IMailFolder) FolderTreeModel.getInstance().getRoot(); // Add child to parent parent.addSubfolder(child); // create mandatory IMAP Inbox folder IExtension extension2 = handler.getExtension("IMAPFolder"); IMAPFolder inbox = (IMAPFolder) extension2.instanciateExtension(new Object[] { "INBOX", "IMAPFolder", path }); // associate inbox with root folder child.setInbox(inbox); // notify folder tree model FolderTreeModel.getInstance().nodeStructureChanged(parent); return inbox; } catch (Exception e) { throw new FolderCreationException(e); } }
3
              
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
4
              
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createDefaultChild(IMailFolder parent, String name) throws FolderCreationException { List possibleChilds = getPossibleChilds(parent); if (possibleChilds.size() > 0) { String childType = (String) possibleChilds.get(0); return createChild(parent, name, childType); } else { return null; } }
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createChild(IMailFolder parent, String name, String childType) throws FolderCreationException { IMailFolder child; try { IExtension extension = handler.getExtension(childType); child = (IMailFolder) extension.instanciateExtension(new Object[] { name, childType, path }); // Add child to parent parent.addSubfolder(child); } catch (Exception e) { throw new FolderCreationException(e); } return child; }
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createVirtualFolder(IMailFolder parent, String name) throws FolderCreationException { IMailFolder child; try { IExtension extension = handler.getExtension("VirtualFolder"); child = (IMailFolder) extension.instanciateExtension(new Object[] {name}); // Add child to parent parent.addSubfolder(child); } catch (Exception e) { throw new FolderCreationException(e); } return child; }
// in java/org/columba/mail/folder/FolderFactory.java
public IMAPFolder createIMAPRootFolder(AccountItem account) throws FolderCreationException { try { IExtension extension = handler.getExtension("IMAPRootFolder"); IMAPRootFolder child = (IMAPRootFolder) extension.instanciateExtension(new Object[] {account, path}); // get root folder IMailFolder parent = (IMailFolder) FolderTreeModel.getInstance().getRoot(); // Add child to parent parent.addSubfolder(child); // create mandatory IMAP Inbox folder IExtension extension2 = handler.getExtension("IMAPFolder"); IMAPFolder inbox = (IMAPFolder) extension2.instanciateExtension(new Object[] { "INBOX", "IMAPFolder", path }); // associate inbox with root folder child.setInbox(inbox); // notify folder tree model FolderTreeModel.getInstance().nodeStructureChanged(parent); return inbox; } catch (Exception e) { throw new FolderCreationException(e); } }
(Lib) MessageNotOnServerException 3
              
// in java/org/columba/mail/pop3/POP3Store.java
public int getSize(int index) throws IOException, POP3Exception, CommandCancelledException { try { return ((Integer) getSizeList().get(index)).intValue(); } catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); } catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); } }
// in java/org/columba/mail/pop3/POP3Store.java
protected int getIndex(Object uid) throws IOException, POP3Exception, CommandCancelledException { if (getUidMap().containsKey(uid)) { return ((Integer) getUidMap().get(uid)).intValue(); } else { throw new MessageNotOnServerException(uid); } }
2
              
// in java/org/columba/mail/pop3/POP3Store.java
catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); }
0
(Domain) SpellException 3
              
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
public boolean checkFile(BufferedReader input, BufferedWriter output) throws SpellException { try { String line = input.readLine(); while (line != null) { String checkedLine; if (line.trim().equals("")) { checkedLine = line; } else { List results = _getSpellEngine().checkLine(line); checkedLine = _getSpellValidator().validate(line, results); if (checkedLine == null) { return false; } } output.write(checkedLine); line = input.readLine(); // Force that the last line in buffer does NOT have a newline if (line != null) { output.write('\n'); } } } catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } } return true; }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
public List checkLine(String line) throws SpellException { try { List results = new ArrayList(); final String spellCheckLinePrefix = "^"; _aSpellWriter.write(spellCheckLinePrefix + line); _aSpellWriter.newLine(); _aSpellWriter.flush(); String response = _aSpellReader.readLine(); while ((response != null) && !response.equals("")) { Result result = new Result(response); results.add(result); response = _aSpellReader.readLine(); } return results; } catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); } }
3
              
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot create aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); }
4
              
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
public boolean checkFile(BufferedReader input, BufferedWriter output) throws SpellException { try { String line = input.readLine(); while (line != null) { String checkedLine; if (line.trim().equals("")) { checkedLine = line; } else { List results = _getSpellEngine().checkLine(line); checkedLine = _getSpellValidator().validate(line, results); if (checkedLine == null) { return false; } } output.write(checkedLine); line = input.readLine(); // Force that the last line in buffer does NOT have a newline if (line != null) { output.write('\n'); } } } catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } } return true; }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
private Engine _getSpellEngine() throws SpellException { if (_spellEngine == null) { String aSpellCommandLine = _aspellExeFilename + " pipe"; _spellEngine = new AspellEngine(aSpellCommandLine); } return _spellEngine; }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
public List checkLine(String line) throws SpellException { try { List results = new ArrayList(); final String spellCheckLinePrefix = "^"; _aSpellWriter.write(spellCheckLinePrefix + line); _aSpellWriter.newLine(); _aSpellWriter.flush(); String response = _aSpellReader.readLine(); while ((response != null) && !response.equals("")) { Result result = new Result(response); results.add(result); response = _aSpellReader.readLine(); } return results; } catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); } }
(Lib) Exception 2
              
// in java/org/columba/mail/filter/plugins/CopyMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { String uid = filterAction.getUid(); IMailbox destFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(uid); if (destFolder == null) { JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), "Unable to find destination folder, please correct the destination folder path for this filter"); throw new Exception("File not found"); } MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, destFolder, uids); CopyMessageCommand c = new CopyMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/MoveMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { String uid = filterAction.getUid(); IMailbox destFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(uid); if (destFolder == null) { JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), "Unable to find destination folder, please correct the destination folder path for this filter"); throw new Exception("File not found"); } MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, destFolder, uids); MoveMessageCommand c = new MoveMessageCommand(r); return c; }
0 361
              
// in java/org/columba/mail/gui/message/MessageController.java
public IMailFolderCommandReference filterMessage(IMailbox folder, Object uid) throws Exception { return pgpFilter.filter(folder, uid); }
// in java/org/columba/mail/gui/message/MessageController.java
public void showMessage(IMailbox folder, Object uid) throws Exception { this.folder = folder; this.uid = uid; // if necessary decrypt/verify message IMailFolderCommandReference newRefs = filterMessage(folder, uid); // map to new reference if (newRefs != null) { folder = (IMailbox) newRefs.getSourceFolder(); uid = newRefs.getUids()[0]; } MimeTree mimePartTree = folder.getMimePartTree(uid); if (mimePartTree == null) throw new CommandCancelledException( "Message does not exist anymore."); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be shown? (html/plain) String preferedSubtype; if ((Boolean.valueOf(html.getAttribute("prefer")).booleanValue())) { preferedSubtype = "html"; } else { preferedSubtype = "plain"; } List parts = mimePartTree.getInlineParts(mimePartTree.getRootMimeNode(), "text", preferedSubtype); bodytextViewer.view(folder, uid, parts, this .getFrameController()); spamStatusViewer.view(folder, uid, this.getFrameController()); securityStatusViewer.view(folder, uid, this.getFrameController()); headerController.view(folder, uid, this.getFrameController()); // notify all interested listeners fireMessageSelectionChangedEvent(folder, uid.toString()); }
// in java/org/columba/mail/gui/message/MessageController.java
public void updateGUI() throws Exception { bodytextViewer.updateGUI(); spamStatusViewer.updateGUI(); securityStatusViewer.updateGUI(); headerController.updateGUI(); }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
public IMailFolderCommandReference filter(IMailbox folder, Object uid) throws Exception { mimePartTree = folder.getMimePartTree(uid); // Check if the message still exists // or has been moved by e.g. a filter if (mimePartTree == null) return null; // TODO (@author waffel): encrypt AND sign dosN#t work. The message is // always only // encrypted. We need a function that knows, here // is an encrypted AND signed Message. Thus first encyrpt and then // verifySign the message // if this message is signed/encrypted we have to use // GnuPG to extract the decrypted bodypart // - multipart/encrypted // - multipart/signed MimeType firstPartMimeType = mimePartTree.getRootMimeNode().getHeader() .getMimeType(); AccountItem defAccount = MailConfig.getInstance().getAccountList() .getDefaultAccount(); boolean pgpActive = false; if (defAccount != null) { SecurityItem pgpItem = defAccount.getPGPItem(); LOG.fine("pgp activated: " + pgpItem.get("enabled")); pgpActive = new Boolean((pgpItem.get("enabled"))).booleanValue(); } IMailFolderCommandReference result = null; LOG.fine("pgp is true"); if (firstPartMimeType.getSubtype().equals("signed")) { result = verify(folder, uid, pgpActive); } else if (firstPartMimeType.getSubtype().equals("encrypted")) { LOG.fine("Mimepart type encrypted found"); result = decrypt(folder, uid, pgpActive); } else { pgpMode = SecurityStatusViewer.NOOP; } // notify listeners fireSecurityStatusEvent(new SecurityStatusEvent(this, pgpMessage, pgpMode)); return result; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
private IMailFolderCommandReference decrypt(IMailbox folder, Object uid, boolean pgpActive) throws Exception, IOException { InputStream decryptedStream = null; LOG.fine("start decrypting"); if (!pgpActive) { pgpMessage = ""; pgpMode = SecurityStatusViewer.NO_KEY; } else { MimePart encryptedMultipart = mimePartTree.getRootMimeNode(); // the second child must be the encrypted message InputStream encryptedPart = folder.getMimePartBodyStream(uid, encryptedMultipart.getChild(1).getAddress()); try { JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); LOG.fine("new JSCConnection"); JSCFStatement stmt = con.createStatement(); LOG.fine("new Statement"); PGPPassChecker passCheck = PGPPassChecker.getInstance(); boolean check = passCheck.checkPassphrase(con); LOG.fine("after pass check, check is " + check); if (!check) { pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; // TODO (@author fdietz): make i18n! pgpMessage = "wrong passphrase"; return null; } LOG.fine("encrypted is != null?: " + (encryptedPart != null)); JSCFResultSet res = stmt.executeDecrypt(encryptedPart); LOG.fine("after calling decrypting"); if (res.isError()) { LOG.fine("the result set contains errors "); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = StreamUtils.readCharacterStream( res.getErrorStream()).toString(); LOG.fine("error message: " + pgpMessage); decryptedStream = res.getResultStream(); // return null; } else { decryptedStream = res.getResultStream(); pgpMode = SecurityStatusViewer.DECRYPTION_SUCCESS; } } catch (JSCFException e) { e.printStackTrace(); LOG.severe(e.getMessage()); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = e.getMessage(); // just show the encrypted raw message decryptedStream = encryptedPart; } } try { LOG.fine("decrypted Stream is: " + decryptedStream); CharSequence decryptedBodyPart = ""; // if the pgp mode is active we should get the decrypted part if (pgpActive) { // TODO (@author fdietz): should be removed if we only use // Streams! decryptedBodyPart = StreamUtils .readCharacterStream(decryptedStream); // check if the returned String is has a length != 0 if (decryptedBodyPart.length() == 0) { LOG .fine("decrypted body part has a 0 length ... fixing it"); decryptedBodyPart = new StringBuffer( "Content-Type: text/plain; charset=\"ISO-8859-15\"\n\n"); } } // else we set the body to the i18n String else { decryptedBodyPart = new StringBuffer( "Content-Type: text/plain; charset=\"ISO-8859-15\"\n\n" + MailResourceLoader.getString("menu", "mainframe", "security_decrypt_encrypted") + "\n"); } LOG.fine("the decrypted Body part: " + decryptedBodyPart); // construct new Message from decrypted string message = new ColumbaMessage(folder.getAllHeaderFields(uid)); Source decryptedSource = new CharSequenceSource(decryptedBodyPart); MimeHeader mimeHeader = new MimeHeader(HeaderParser .parse(decryptedSource)); mimePartTree = new MimeTree(BodyParser.parseMimePart(mimeHeader, decryptedSource)); message.setMimePartTree(mimePartTree); InputStream messageSourceStream = folder .getMessageSourceStream(uid); message.setSource(new CharSequenceSource(StreamUtils .readCharacterStream(messageSourceStream))); messageSourceStream.close(); // call AbstractFilter to do the tricky part return filter(folder, uid, message); // header = (ColumbaHeader) message.getHeaderInterface(); } catch (ParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } /* * controlPart.close(); encryptedPart.close(); if (decryptedStream != * null) { decryptedStream.close(); } */ return null; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
private MailFolderCommandReference verify(IMailbox folder, Object uid, boolean pgpActive) throws Exception, IOException { if (!pgpActive) { pgpMessage = ""; pgpMode = SecurityStatusViewer.NO_KEY; return null; } MimePart signedMultipart = mimePartTree.getRootMimeNode(); // the first child must be the signed part InputStream signedPart = folder.getMimePartSourceStream(uid, signedMultipart.getChild(0).getAddress()); // the second child must be the pgp-signature InputStream signature = folder.getMimePartBodyStream(uid, signedMultipart.getChild(1).getAddress()); try { JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); JSCFStatement stmt = con.createStatement(); String micalg = signedMultipart.getHeader().getContentParameter( "micalg").substring(4); JSCFResultSet res = stmt.executeVerify(signedPart, signature, micalg); if (res.isError()) { pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = StreamUtils.readCharacterStream( res.getErrorStream()).toString(); } else { pgpMode = SecurityStatusViewer.VERIFICATION_SUCCESS; pgpMessage = StreamUtils.readCharacterStream( res.getResultStream()).toString(); } } catch (JSCFException e) { if (Logging.DEBUG) e.printStackTrace(); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = e.getMessage(); // something really got wrong here -> show error dialog // JOptionPane.showMessageDialog(null, e.getMessage()); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; } signedPart.close(); signature.close(); return null; }
// in java/org/columba/mail/gui/message/filter/AbstractFilter.java
public IMailFolderCommandReference filter(IMailbox folder, Object uid, IColumbaMessage message) throws Exception { // map selection to this temporary message TempFolder tempFolder = FolderTreeModel.getInstance().getTempFolder(); // add message to temporary folder uid = tempFolder.addMessage(message); // create reference to this message MailFolderCommandReference local = new MailFolderCommandReference(tempFolder, new Object[] {uid}); // if we don't use this here - actions like reply would only work // on the // the encrypted message TableSelectionHandler h1 = ((TableSelectionHandler) mediator .getSelectionManager().getHandler(TableSelectionHandler.HANDLER_ID)); h1.setLocalReference(local); // this is needed to be able to open attachments of the decrypted // message // TODO check if we have to manually set the folder/uid in // message controller to make this work //messageController.setAttachmentSelectionReference(local); return local; }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
public void updateGUI() throws Exception { ((MailFrameMediator) mediator).removeTableSelectionListener(this); // Update only if the selection did not change if (updateGui) { IMessageController messageController = ((MessageViewOwner) mediator) .getMessageController(); // display changes messageController.updateGUI(); fillContext(); } }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
public void execute(IWorkerStatusController wsc) throws Exception { if (!updateGui) return; // get command reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get selected folder srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(wsc); // get selected message UID uid = r.getUids()[0]; if (!srcFolder.exists(uid)) { return; } try { // get flags flags = srcFolder.getFlags(uid); // get messagecontroller of frame IMessageController messageController = ((MessageViewOwner) mediator) .getMessageController(); messageController.showMessage(srcFolder, uid); restartMarkAsReadTimer(flags, messageController, r); // fill semantic context prepareContextData(); } catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); } }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
private void prepareContextData() throws Exception { // create empty value value = mediator.getSemanticContext().createValue(); // from email address Object fromObj = srcFolder.getAttribute(uid, "columba.from"); if (fromObj instanceof Address) { name = NameParser.getInstance().parseDisplayName(((Address)fromObj).getDisplayName()); from = (Address) fromObj; } else if ( fromObj instanceof String){ name = NameParser.getInstance().parseDisplayName((String) fromObj); } subject = (String) srcFolder.getAttribute(uid, "columba.subject"); date = (Date) srcFolder.getAttribute(uid, "columba.date"); }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
private void restartMarkAsReadTimer(Flags flags, IMessageController messageController, IMailFolderCommandReference r) throws Exception { if (flags == null) return; // if the message it not yet seen if (!flags.getSeen() && !srcFolder.isReadOnly()) { MarkAsReadTimer.getInstance().start(messageController, r); } }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
public void updateGUI() throws Exception { if (header.getMimeType().getType().toLowerCase().indexOf("message") != -1) { MessageFrameController c = new MessageFrameController(); new DefaultContainer(c); Object[] uidList = new Object[1]; uidList[0] = tempMessageUid; IMailFolderCommandReference r = new MailFolderCommandReference( tempFolder, uidList); c.setTreeSelection(r); c.setTableSelection(r); CommandProcessor.getInstance().addOp(new ViewMessageCommand(c, r)); } else { boolean attachmentHandlerExecuted = false; try { IExtensionHandler handler = PluginManager .getInstance() .getExtensionHandler( IExtensionHandlerKeys.ORG_COLUMBA_ATTACHMENT_HANDLER); Enumeration<IExtension> e = handler.getExtensionEnumeration(); while (e.hasMoreElements()) { IExtension extension = e.nextElement(); try { IAttachmentHandler attachmentHandler = (IAttachmentHandler) extension .instanciateExtension(null); attachmentHandler.execute(new AttachmentContext( tempFile, header)); attachmentHandlerExecuted &= true; } catch (PluginException e1) { LOG.severe("Error while loading plugin: " + e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); } } } catch (PluginHandlerNotFoundException e2) { LOG.severe("Error while loading plugin: " + e2.getMessage()); if (Logging.DEBUG) e2.printStackTrace(); } // in case no attachment handler was executed correctly // -> fall back to default handler if (!attachmentHandlerExecuted) { boolean success = ColumbaDesktop.getInstance().open(tempFile); // if attachment can't be opened, save it only if (!success) { File saveToFile = getDestinationFile(header); if (saveToFile.exists()) saveToFile.delete(); tempFile.renameTo(saveToFile); } } } }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); IMailbox folder = (IMailbox) r.getSourceFolder(); Object[] uids = r.getUids(); Integer[] address = r.getAddress(); header = folder.getMimePartTree(uids[0]).getFromAddress(address) .getHeader(); worker.setDisplayText("Opening " + header.getFileName()); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); // wrap with observable stream for progress bar updates bodyStream = new ProgressObservedInputStream(bodyStream, worker); if (header.getMimeType().getType().equals("message")) { tempFolder = FolderTreeModel.getInstance().getTempFolder(); try { tempMessageUid = tempFolder.addMessage(bodyStream); } catch (Exception e) { LOG .warning("Could not create temporary email from the attachment."); } } else { String filename = header.getFileName(); if (filename != null) { tempFile = TempFileStore.createTempFile(filename); } else { tempFile = TempFileStore.createTempFile(); } int encoding = header.getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; case MimeHeader.BASE64: bodyStream = new Base64DecoderInputStream(bodyStream); break; default: } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Storing the attachment to :" + tempFile); } FileOutputStream fileStream = new FileOutputStream(tempFile); StreamUtils.streamCopy(bodyStream, fileStream); fileStream.close(); bodyStream.close(); } }
// in java/org/columba/mail/gui/message/command/SaveAttachmentTemporaryCommand.java
public void execute(IWorkerStatusController worker) throws Exception { super.execute(worker); commandSemaphore.release(); }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
public void updateGUI() throws Exception { ColumbaDesktop.getInstance().open(tempFile); }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); IMailbox folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); Object uid = uids[0]; InputStream in = null; OutputStream out = null; try { in = new BufferedInputStream(folder.getMessageSourceStream(uid)); tempFile = TempFileStore.createTempFileWithSuffix("txt"); out = new BufferedOutputStream(new FileOutputStream(tempFile)); byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer, 0, buffer.length)) > 0) { out.write(buffer, 0, read); } } catch (IOException ioe) { ioe.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException ioe) { } } if (out != null) { try { out.close(); } catch (IOException ioe) { } } } }
// in java/org/columba/mail/gui/message/command/SaveAttachmentCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); IMailbox folder = (IMailbox) r.getSourceFolder(); Object[] uids = r.getUids(); Integer[] address = r.getAddress(); MimeHeader header = folder.getMimePartTree(uids[0]).getFromAddress( address).getHeader(); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); // wrap with observable stream for progress bar updates bodyStream = new ProgressObservedInputStream(bodyStream, worker); File destFile = getDestinationFile(header); if ( destFile == null ) return; worker.setDisplayText("Saving " + destFile.getName()); // write to temporary file File tempFile = new File(destFile.getAbsoluteFile() + ".part"); if (tempFile == null) return; int encoding = header.getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; case MimeHeader.BASE64: bodyStream = new Base64DecoderInputStream(bodyStream); break; default: } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Storing the attachment to :" + tempFile); } FileOutputStream fileStream = new FileOutputStream(tempFile); StreamUtils.streamCopy(bodyStream, fileStream); fileStream.close(); bodyStream.close(); // rename "*.part" file to destination file tempFile.renameTo(destFile); // reset progress bar worker.setProgressBarValue(0); // We are done - clear the status message with a delay worker.clearDisplayTextWithDelay(); }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
public void view(IMailbox folder, Object uid, MailFrameMediator mediator) throws Exception { // add headerfields which are about to show up XmlElement headerviewerElement = MailConfig.getInstance() .get("options").getElement("/options/headerviewer"); IDefaultItem item = new DefaultItem(headerviewerElement); int style = item.getIntegerWithDefault("style", 0); map = new LinkedHashMap(); Header header = null; String[] headers = null; switch (style) { case 0: // default headers = new String[] { "Subject", "Date", "From", "To", "Cc" }; // get header from folder header = folder.getHeaderFields(uid, headers); // transform headers if necessary for (int i = 0; i < headers.length; i++) { String key = headers[i]; JComponent[] value = transformHeaderField(header, key); JButton trailingItem = new JButton("more..."); trailingItem = createLinkButton(trailingItem); trailingItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { showAddressListDialog(); } }); DynamicItemListPanel p = new DynamicItemListPanel(2, trailingItem, true); p.setOpaque(false); for (int j = 0; j < value.length; j++) { p.addItem(value[j]); } if (value.length > 0) map.put(key, p); } break; case 1: // custom headers String list = headerviewerElement.getAttribute("headerfields"); StringTokenizer tok = new StringTokenizer(list, " "); headers = new String[tok.countTokens()]; for (int i = 0; i < headers.length; i++) { headers[i] = tok.nextToken(); } // get header from folder header = folder.getHeaderFields(uid, headers); // transform headers if necessary for (int i = 0; i < headers.length; i++) { String key = headers[i]; JComponent[] value = transformHeaderField(header, key); if (value.length > 0) map.put(key, value); } break; case 2: // default headers = new String[] { "From" }; // get header from folder header = folder.getHeaderFields(uid, headers); // transform headers if necessary for (int i = 0; i < headers.length; i++) { String key = headers[i]; JComponent[] value = transformHeaderField(header, key); JButton trailingItem = new JButton("more..."); trailingItem = createLinkButton(trailingItem); trailingItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { showAddressListDialog(); } }); DynamicItemListPanel p = new DynamicItemListPanel(2, trailingItem, true); p.setOpaque(false); for (int j = 0; j < value.length; j++) { p.addItem(value[j]); } if (value.length > 0) map.put(key, p); } break; } hasAttachment = ((Boolean) folder.getAttribute(uid, "columba.attachment")).booleanValue(); if (hasAttachment) { JComponent[] value = createAttachmentComponentArray(folder, uid); // create a view more button, responsible for // opening the attachment viewer popup JButton moreButton = createAttachmentMoreButton(); DynamicItemListPanel p = new DynamicItemListPanel(2, null, true); p.setShowLastSeparator(false); p.setOpaque(false); for (int j = 0; j < value.length; j++) { p.addItem(value[j]); } p.addItem(moreButton); // TODO i18n "attachments" label if (value.length > 0) map.put("Attachments", p); } headerTextPane.setHeader(map); attachmentViewer.view(folder, uid, mediator); // hack to support dockable view title update // TODO replace with listener pattern if (mediator instanceof ThreePaneMailFrameController) { final ThreePaneMailFrameController c = (ThreePaneMailFrameController) mediator; // get header from folder final String title = (String) folder.getAttribute(uid, "columba.subject"); // awt-event-thread javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { c.getMessageViewerDockable().setTitle(title); } }); }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
private JComponent[] createAttachmentComponentArray(final IMailbox folder, final Object uid) throws Exception { Vector vector = new Vector(); MimeTree model = folder.getMimePartTree(uid); List displayedMimeParts = model.getAllLeafs(); // remove body part if already shown in text viewer removeBodyParts(model, displayedMimeParts); // Display resulting MimeParts for (int i = 0; i < displayedMimeParts.size(); i++) { final StreamableMimePart mp = (StreamableMimePart) displayedMimeParts .get(i); // create attachment component with text, icon // tooltip, context menu and double-click action JButton button = createAttachmentItem(mp); vector.add(button); } // // create a view more button, responsible for // // opening the attachment viewer popup // JButton moreButton = createAttachmentMoreButton(); // vector.add(moreButton); return (JComponent[]) vector.toArray(new JComponent[0]); }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
public void updateGUI() throws Exception { headerTextPane.updateGUI(); layoutComponents(); revalidate(); repaint(); attachmentViewer.updateGUI(); }
// in java/org/columba/mail/gui/message/viewer/SpamStatusViewer.java
public void view(IMailbox folder, Object uid, MailFrameMediator mediator) throws Exception { Boolean spam = (Boolean) folder.getAttribute(uid, "columba.spam"); visible = spam.booleanValue(); }
// in java/org/columba/mail/gui/message/viewer/SpamStatusViewer.java
public void updateGUI() throws Exception { setSpam(visible); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
public void view(IMailbox folder, Object uid, List bodyParts, MailFrameMediator mediator) throws Exception { this.folder = folder; this.uid = uid; InputStream bodyStream; MimeTree mimePartTree = folder.getMimePartTree(uid); if (bodyParts.size() == 0) { body = MessageParser.transformTextToHTML("<No Message-Text>", css, enableSmilies, true); } else { body = ""; for (int i = 0; i < bodyParts.size(); i++) { MimePart bodyPart = (MimePart) bodyParts.get(i); htmlMessage = bodyPart.getHeader().getMimeType().getSubtype() .equals("html"); bodyStream = folder.getMimePartBodyStream(uid, bodyPart .getAddress()); bodyStream = MessageParser.decodeBodyStream(bodyPart, bodyStream); // Which Charset shall we use ? Charset charset = ((CharsetOwnerInterface) mediator).getCharset(); charset = MessageParser.extractCharset(charset, bodyPart); bodyStream = new FallbackCharsetDecoderInputStream(bodyStream, charset); // Read Stream in String StringBuffer text = StreamUtils.readCharacterStream(bodyStream); // if HTML stripping is enabled if (isHTMLStrippingEnabled()) { // strip HTML message -> remove all HTML tags text = new StringBuffer(HtmlParser.stripHtmlTags(text.toString(), true)); htmlMessage = false; } if (htmlMessage) { // Download any CIDs in the html mail body += HtmlParser.getHtmlBody(downloadCIDParts(text.toString(), mimePartTree)); } else { body += MessageParser.transformTextToHTML(text.toString(), css, enableSmilies, false); } } body = MessageParser.transformToHTML(new StringBuffer(body), css); } }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
public void updateGUI() throws Exception { viewerPlugin.view(body); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
private void downloadMimePart(MimePart part, File destFile) throws Exception { MimeHeader header = part.getHeader(); InputStream bodyStream = folder.getMimePartBodyStream(uid, part .getAddress()); int encoding = header.getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; case MimeHeader.BASE64: bodyStream = new Base64DecoderInputStream(bodyStream); break; default: } FileOutputStream fileStream = new FileOutputStream(destFile); StreamUtils.streamCopy(bodyStream, fileStream); fileStream.close(); bodyStream.close(); }
// in java/org/columba/mail/gui/message/viewer/AttachmentsViewer.java
public void view(IMailbox folder, Object uid, MailFrameMediator mediator) throws Exception { setLocalReference(new MailFolderCommandReference(folder, new Object[] { uid })); mimePartTree = folder.getMimePartTree(uid); }
// in java/org/columba/mail/gui/message/viewer/AttachmentsViewer.java
public void updateGUI() throws Exception { if (mimePartTree == null) return; setMimePartTree(mimePartTree); }
// in java/org/columba/mail/gui/message/viewer/SecurityStatusViewer.java
public void view(IMailbox folder, Object uid, MailFrameMediator mediator) throws Exception { }
// in java/org/columba/mail/gui/message/viewer/SecurityStatusViewer.java
public void updateGUI() throws Exception { }
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
public static String transformTextToHTML(String bodyText, String css, boolean enableSmilies, boolean encapsulate) throws Exception { String body = null; // substitute special characters like: // <,>,&,\t,\n body = HtmlParser.substituteSpecialCharacters(bodyText); // parse for urls and substite with HTML-code body = HtmlParser.substituteURL(body); // parse for email addresses and substite with HTML-code body = HtmlParser.substituteEmailAddress(body); // parse for quotings and color the darkgray body = DocumentParser.markQuotings(body); // add smilies if (enableSmilies == true) { body = DocumentParser.addSmilies(body); } body = "<P>" + body + "</P>"; // encapsulate bodytext in html-code if (encapsulate) body = transformToHTML(new StringBuffer(body), css); return body; }
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
public static InputStream decodeBodyStream(MimePart bodyPart, InputStream bodyStream) throws Exception { // default encoding is plain int encoding = MimeHeader.PLAIN; if (bodyPart != null) { encoding = bodyPart.getHeader().getContentTransferEncoding(); } switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64: { bodyStream = new Base64DecoderInputStream(bodyStream); break; } } return bodyStream; }
// in java/org/columba/mail/gui/message/util/DocumentParser.java
public static String markQuotings(String input) throws Exception { Matcher matcher = markQuotingsPattern.matcher(input); return matcher.replaceAll("\n<font class=\"quoting\">$1$3</font>"); }
// in java/org/columba/mail/gui/message/util/DocumentParser.java
public static String addSmilies(String input) throws Exception { Matcher matcher; for (int i = 0; i < smilyPattern.length; i++) { matcher = smilyPattern[i].matcher(input); input = matcher.replaceAll("&nbsp<IMG SRC=\"" + smilyImage[i] + "\">"); } return input; }
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { parentFolder = (IMailFolder) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); String name = ((IMailFolderCommandReference) getReference()) .getFolderName(); String type = ((IMailFolderCommandReference) getReference()) .getFolderType(); try { if (type == null) { FolderFactory.getInstance() .createDefaultChild(parentFolder, name); } else { FolderFactory.getInstance() .createChild(parentFolder, name, type); } } catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); } }
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
public void updateGUI() throws Exception { if (success) { /* * MailInterface.treeModel.nodeStructureChanged(parentFolder); */ // select node in JTree TreeNode[] nodes = childFolder.getPath(); tree.setSelectionPath(new TreePath(nodes)); } }
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { parentFolder = (IMailFolder) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); String name = ((IMailFolderCommandReference) getReference()) .getFolderName(); try { childFolder = FolderFactory.getInstance().createDefaultChild( parentFolder, name); // if folder creation failed // -> don't update tree ui if (childFolder == null) { success = false; } } catch (Exception ex) { success = false; throw ex; } }
// in java/org/columba/mail/gui/tree/command/MailboxSizeCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolder folder = (IMailFolder) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); total = 0; if (folder instanceof IMailbox) { IHeaderList headerList = ((IMailbox) folder).getHeaderList(); ICloseableIterator it = headerList.headerIterator(); while (it.hasNext()) { IColumbaHeader header = (IColumbaHeader) it.next(); Integer sizeInt = (Integer) header.getAttributes().get( "columba.size"); if (sizeInt != null) { total += sizeInt.intValue(); } } it.close(); } }
// in java/org/columba/mail/gui/tree/command/MailboxSizeCommand.java
public void updateGUI() throws Exception { dialog.setMailboxSize(total); }
// in java/org/columba/mail/gui/config/subscribe/UnsubscribeFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { SubscribeCommandReference subscribeReference = (SubscribeCommandReference) getReference(); root = (IMAPRootFolder) subscribeReference.getSourceFolder(); store = root.getServer(); store.unsubscribeFolder(subscribeReference.getMailbox()); }
// in java/org/columba/mail/gui/config/subscribe/UnsubscribeFolderCommand.java
public void updateGUI() throws Exception { SubscribeDialog dialog = ((SubscribeCommandReference) getReference()) .getDialog(); dialog.unsubscribeDone(); }
// in java/org/columba/mail/gui/config/subscribe/SynchronizeFolderListCommand.java
public void execute(IWorkerStatusController worker) throws Exception { root = (IMAPRootFolder) ((SubscribeCommandReference) getReference()) .getSourceFolder(); store = root.getServer(); node = createTreeStructure(); }
// in java/org/columba/mail/gui/config/subscribe/SynchronizeFolderListCommand.java
private List fetchUnsubscribedFolders(String reference) throws Exception { NamespaceCollection namespaces; // Does the server support the namespace extension? if (store.isSupported("NAMESPACE")) { namespaces = store.fetchNamespaces(); } else { // create default namespace namespaces = new NamespaceCollection(); namespaces.addPersonalNamespace(new Namespace("", "/")); } ArrayList result = new ArrayList(); Iterator it; // Process personal namespaces if (namespaces.getPersonalNamespaceSize() > 0) { it = namespaces.getPersonalIterator(); while (it.hasNext()) { Namespace pN = (Namespace) it.next(); ListInfo[] list = store.list("", pN.getPrefix() + '%'); result.addAll(Arrays.asList(list)); } } // Process other users namespaces if (namespaces.getOtherUserNamespaceSize() > 0) { it = namespaces.getOtherUserIterator(); while (it.hasNext()) { Namespace pN = (Namespace) it.next(); ListInfo[] list = store.list("", pN.getPrefix() + '%'); result.addAll(Arrays.asList(list)); } } // Process shared namespaces if (namespaces.getSharedNamespaceSize() > 0) { it = namespaces.getSharedIterator(); while (it.hasNext()) { Namespace pN = (Namespace) it.next(); ListInfo[] list = store.list("", pN.getPrefix() + '%'); result.addAll(Arrays.asList(list)); } } for(int i=0; i<result.size(); i++ ) { ListInfo info = (ListInfo) result.get(i); // Handle special case in which INBOX has a NIL delimiter // -> there might exist a pseudo hierarchy under INBOX+delimiter if (info.getName().equalsIgnoreCase("INBOX") && info.getDelimiter() == null) { result.addAll(Arrays.asList(store.list("", "INBOX" + store.getDelimiter() + '%'))); break; } // If this folder has children add them // TODO: In the future we should try to fetch additional children on demand // when the tree of the dialog is opened if (store.isSupported("CHILDREN")) { if( info.getParameter(ListInfo.HASCHILDREN)) { result.addAll(Arrays.asList(store.list("", info.getName() + store.getDelimiter() + '%'))); } } else { ListInfo[] childlist = store.list("", info.getName() + store.getDelimiter() + '%'); if (childlist.length > 0) result.addAll(Arrays.asList(childlist)); } } return result; }
// in java/org/columba/mail/gui/config/subscribe/SynchronizeFolderListCommand.java
private TreeNode createTreeStructure() throws Exception { ListInfo[] lsub = store.fetchSubscribedFolders(); // Create list of unsubscribed folders List subscribedFolders = new ArrayList(Arrays.asList(lsub)); // INBOX is always subscribed subscribedFolders.add(new ListInfo("INBOX", null, 0)); List unsubscribedFolders = fetchUnsubscribedFolders(""); ListTools.substract(unsubscribedFolders, subscribedFolders); // Now we have the subscribed folders in subscribedFolders // and the unsubscribed folders in unsubscribedFolders // Next step: Create a treestructure CheckableItemImpl rootNode = new CheckableItemImpl(root.getName()); Iterator it = unsubscribedFolders.iterator(); while (it.hasNext()) { ListInfoTreeNode node = insertTreeNode((ListInfo) it.next(), rootNode); node.setSelected(false); } it = subscribedFolders.iterator(); while (it.hasNext()) { ListInfoTreeNode node = insertTreeNode((ListInfo) it.next(), rootNode); node.setSelected(true); } return rootNode; }
// in java/org/columba/mail/gui/config/subscribe/SynchronizeFolderListCommand.java
public void updateGUI() throws Exception { SubscribeDialog dialog = ((SubscribeCommandReference) getReference()) .getDialog(); dialog.syncFolderListDone(new DefaultTreeModel(node)); }
// in java/org/columba/mail/gui/config/subscribe/SubscribeFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { SubscribeCommandReference subscribeReference = (SubscribeCommandReference) getReference(); root = (IMAPRootFolder) subscribeReference.getSourceFolder(); store = root.getServer(); store.subscribeFolder(subscribeReference.getMailbox()); }
// in java/org/columba/mail/gui/config/subscribe/SubscribeFolderCommand.java
public void updateGUI() throws Exception { SubscribeDialog dialog = ((SubscribeCommandReference) getReference()) .getDialog(); dialog.subscribeDone(); }
// in java/org/columba/mail/gui/contact/list/ContactListModel.java
public void setPatternString(String s) throws Exception { patternString = s; // manipulateModel(TableModelPlugin.STRUCTURE_CHANGE); }
// in java/org/columba/mail/gui/tagging/TagFolderFactory.java
public static VirtualFolder createTagFolder(ITag tag, IMailFolder folder) throws Exception { // get search folder VirtualFolder tagFolder = new VirtualFolder("Tag Folder", folder); // TODO: @author hubms check what is neccessary // remove old filters // searchFolder.getFilter().getFilterRule().removeAll(); // add filter criteria // searchFolder.getFilter().getFilterRule().add(c); // search in subfolders recursively tagFolder.getConfiguration().setString("property", "include_subfolders", "true"); String uid = folder.getId(); // set source folder UID tagFolder.getConfiguration().setString("property", "source_uid", uid); return tagFolder; }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
protected void initComponents() throws Exception { // CellConstraints cc = new CellConstraints(); // we generate most buttons using the actions already instanciated paragraphComboBox = new JComboBox(ParagraphMenu.STYLE_TAGS); paragraphComboBox.setRenderer(new ParagraphTagRenderer()); paragraphComboBox.setActionCommand("PARA"); paragraphComboBox.addActionListener(this); paragraphComboBox.setFocusable(false); LabelWithMnemonic sizeLabel = new LabelWithMnemonic(MailResourceLoader .getString("dialog", "composer", "size")); sizeComboBox = new JComboBox(FontSizeMenu.SIZES); sizeComboBox.setActionCommand("SIZE"); sizeComboBox.addActionListener(this); sizeComboBox.setSelectedIndex(2); sizeComboBox.setFocusable(false); // set initial enabled state of combo boxes // XmlElement optionsElement = MailConfig.getInstance().get( // "composer_options").getElement("/options"); // XmlElement htmlElement = optionsElement.getElement("html"); // String s = htmlElement.getAttribute("enable", "false"); // boolean enableHtml = Boolean.valueOf(s).booleanValue(); // paragraphComboBox.setEnabled(enableHtml); // TODO (@author javaprog):sizeComboBox can be enabled as // paragraphComboBox when implemented sizeComboBox.setEnabled(false); ToggleToolbarButton boldFormatButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("BoldFormatAction", getFrameController())); ToggleToolbarButton italicFormatButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("ItalicFormatAction", getFrameController())); ToggleToolbarButton underlineFormatButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("UnderlineFormatAction", getFrameController())); ToggleToolbarButton strikeoutFormatButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("StrikeoutFormatAction", getFrameController())); ToggleToolbarButton leftJustifyButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("LeftJustifyAction", getFrameController())); ToggleToolbarButton centerJustifyButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("CenterJustifyAction", getFrameController())); ToggleToolbarButton rightJustifyButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("RightJustifyAction", getFrameController())); // builder.add(paraLabel, cc.xy(1, 7)); add(paragraphComboBox); addSeparator(); add(sizeLabel); add(sizeComboBox); addSeparator(); add(boldFormatButton); add(italicFormatButton); add(underlineFormatButton); add(strikeoutFormatButton); addSeparator(); add(leftJustifyButton); add(centerJustifyButton); add(rightJustifyButton); add(Box.createHorizontalGlue()); // FormLayout layout = new FormLayout( // "default, 3dlu, default, 3dlu, default, 3dlu, " // + "default, 3dlu, default, 3dlu, default, 3dlu, " // + "default, 6dlu, default, 3dlu, default, 3dlu, " // + "default, 3dlu", "fill:default"); // PanelBuilder b = new PanelBuilder(this, layout); // // CellConstraints c = new CellConstraints(); // // b.add(paragraphComboBox, cc.xy(1, 1)); // b.add(sizeLabel, cc.xy(3, 1)); // b.add(sizeComboBox, cc.xy(5, 1)); // b.add(boldFormatButton, cc.xy(7, 1)); // b.add(italicFormatButton, cc.xy(9, 1)); // b.add(underlineFormatButton, cc.xy(11, 1)); // b.add(strikeoutFormatButton, cc.xy(13, 1)); // b.add(leftJustifyButton, cc.xy(15, 1)); // b.add(centerJustifyButton, cc.xy(17, 1)); // b.add(rightJustifyButton, cc.xy(19, 1)); // builder.add(panel, cc.xy(1, 7)); }
// in java/org/columba/mail/gui/composer/command/ReplyToMailingListCommand.java
protected void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], headerfields); BasicHeader rfcHeader = new BasicHeader(header); // set subject model.setSubject(MessageBuilderHelper.createReplySubject( rfcHeader.getSubject())); // Use reply-to field if given, else use from Address to = rfcHeader.getBeenThere(); if (to == null) { Address[] replyTo = rfcHeader.getReplyTo(); if (replyTo.length > 0) { to = replyTo[0]; } } if (to == null) { to = rfcHeader.getFrom(); } MessageBuilderHelper.addAddressesToAddressbook(new Address[] { to }); model.setTo(new Address[] { to }); // create In-Reply-To:, References: headerfields MessageBuilderHelper.createMailingListHeaderItems(header, model); // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper.getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/RedirectCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // get mimeparts MimeTree mimePartTree = folder.getMimePartTree(uids[0]); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be show? (html/plain) MimePart bodyPart = null; Integer[] bodyPartAddress = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart != null) { // setup charset and html initMimeHeader(bodyPart); bodyPartAddress = bodyPart.getAddress(); String quotedBodyText = createQuotedBody(bodyPart.getHeader(), folder, uids, bodyPartAddress); model.setBodyText(quotedBodyText); } // add all attachments MimeTree mt = folder.getMimePartTree(uids[0]); Iterator it = mt.getAllLeafs().iterator(); while (it.hasNext()) { MimePart mp = (MimePart) it.next(); Integer[] address = mp.getAddress(); // skip if bodypart (already added as quoted text) if (Arrays.equals(address, bodyPartAddress)) continue; // add attachment InputStream stream = folder.getMimePartBodyStream(uids[0], address); model.addMimePart(new InputStreamMimePart(mp.getHeader(), stream)); } // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/RedirectCommand.java
private void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], new String[] { "Subject", "To", "From" }); BasicHeader rfcHeader = new BasicHeader(header); // set subject ; mod:20040629 SWITT model.setSubject(rfcHeader.getSubject()); // set From for redirecting; new: 20040629 SWITT model.setHeaderField("From", rfcHeader.getFrom().toString() + " (by way of " + rfcHeader.get("To") + ")"); }
// in java/org/columba/mail/gui/composer/command/RedirectCommand.java
protected String createQuotedBody(MimeHeader header, IMailbox folder, Object[] uids, Integer[] address) throws IOException, Exception { InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); // Do decoding stuff switch( header.getContentTransferEncoding() ) { case MimeHeader.QUOTED_PRINTABLE : { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64 : { bodyStream = new Base64DecoderInputStream(bodyStream); } } String charset = header.getContentParameter("charset"); if( charset != null ) { try { bodyStream = new CharsetDecoderInputStream(bodyStream, Charset.forName(charset)); } catch( UnsupportedCharsetException e ) { // Stick with the default charset } } String quotedBody; // Quote original message - different methods for text and html if (model.isHtml()) { // Html: Insertion of text before and after original message // build message orginal ; mod:2004629 SWITT StringBuffer buf = new StringBuffer(); buf.append("<html><body>"); buf.append(HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream( bodyStream).toString()))); buf.append("</body></html>"); quotedBody = buf.toString(); } else { // Text: take org. message; mod:20040629 SWITT quotedBody = StreamUtils.readCharacterStream(bodyStream).toString(); } bodyStream.close(); return quotedBody; }
// in java/org/columba/mail/gui/composer/command/SaveMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { ComposerCommandReference r = (ComposerCommandReference) getReference(); ComposerController composerController = r.getComposerController(); SendableMessage message = (SendableMessage) r.getMessage(); if (message == null) { message = new MessageComposer(((ComposerModel) composerController .getModel())).compose(worker, r.isAppendSignature()); } folder = (IMailbox) r.getSourceFolder(); worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "save_message")); InputStream sourceStream = new ProgressObservedInputStream(message .getSourceStream(), worker); folder.addMessage(sourceStream, message.getHeader().getAttributes(), message.getHeader().getFlags()); sourceStream.close(); // Add all recipients to the collected addresses List recipients = message.getRecipients(); if (recipients != null && recipients.size() > 0) { Address[] addresses = new Address[recipients.size()]; for (int i = 0; i < recipients.size(); i++) { try { addresses[i] = AddressParser .parseAddress((String) recipients.get(i)); } catch (ParserException e) { addresses[i] = addresses[i - 1]; } } MessageBuilderHelper.addAddressesToAddressbook(addresses); } }
// in java/org/columba/mail/gui/composer/command/OpenMessageWithComposerCommand.java
public void updateGUI() throws Exception { // open composer frame controller = new ComposerController(); new DefaultContainer(controller); // apply model controller.setComposerModel(model); // model->view update controller.updateComponents(true); }
// in java/org/columba/mail/gui/composer/command/OpenMessageWithComposerCommand.java
public void execute(IWorkerStatusController worker) throws Exception { model = new ComposerModel(); // get selected folder folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get selected messages Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // we only need the first message uid = uids[0]; //TODO (@author fdietz): keep track of progress here InputStream messageSourceStream = folder.getMessageSourceStream(uid); Source tempSource = TempSourceFactory.createTempSource( messageSourceStream, -1); messageSourceStream.close(); Message message = MessageParser.parse(tempSource); initHeader(message); // get message flags Flags flags = folder.getFlags(uid); model.getMessage().getHeader().setFlags(flags); // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); boolean preferHtml = Boolean.valueOf(html.getAttribute("prefer")) .booleanValue(); initBody(message, preferHtml); // store reference to source message model.setSourceReference(new MailFolderCommandReference(folder, new Object[] {uid})); }
// in java/org/columba/mail/gui/composer/command/OpenMessageWithComposerCommand.java
private void initBody(Message message, boolean preferHtml) throws Exception { MimeTree mimeTree = message.getMimePartTree(); // Which Bodypart shall be shown? (html/plain) LocalMimePart bodyPart = null; if (preferHtml) { bodyPart = (LocalMimePart) mimeTree.getFirstTextPart("html"); } else { bodyPart = (LocalMimePart) mimeTree.getFirstTextPart("plain"); } if (bodyPart != null) { MimeHeader header = bodyPart.getHeader(); if (header.getMimeType().getSubtype().equals("html")) { // html model.setHtml(true); } else { model.setHtml(false); } InputStream bodyStream = folder.getMimePartBodyStream(uid, bodyPart.getAddress()); // Do decoding stuff switch( header.getContentTransferEncoding() ) { case MimeHeader.QUOTED_PRINTABLE : { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64 : { bodyStream = new Base64DecoderInputStream(bodyStream); } } String charset = header.getContentParameter("charset"); if (charset != null) { try { bodyStream = new CharsetDecoderInputStream(bodyStream, Charset.forName(charset)); model.setCharset(Charset.forName(charset)); } catch( UnsupportedCharsetException e ) { // Stick with the default charset } } model.setBodyText(StreamUtils.readCharacterStream( bodyStream) .toString()); } initAttachments(mimeTree, bodyPart); }
// in java/org/columba/mail/gui/composer/command/ReplyToAllCommand.java
protected void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], headerfields); // From which account is this mail? Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper.getAccountItem(accountUid); Address accountAddress = null; if ( accountItem != null) accountAddress = MailConfig.getInstance().getAccountList().uidGet(accountUid.intValue()).getIdentity().getAddress(); BasicHeader rfcHeader = new BasicHeader(header); // set subject model.setSubject(MessageBuilderHelper.createReplySubject( rfcHeader.getSubject())); LinkedList toList = new LinkedList(); toList.addAll(Arrays.asList(rfcHeader.getReplyTo())); toList.add(rfcHeader.getFrom()); toList.addAll(Arrays.asList(rfcHeader.getTo())); // bug #997560 (fdietz): CC: should be in Cc:, instead of To: //toList.addAll(Arrays.asList(rfcHeader.getCc())); // remove duplicates Collections.sort(toList); Iterator it = toList.iterator(); Address last = (Address) it.next(); while (it.hasNext()) { Address act = (Address) it.next(); // Remove duplicates or the mail address from the receiver account if (last.equals(act) || (accountAddress != null && accountAddress.equals(act)) ) { it.remove(); } else { last = act; } } Address[] to = (Address[]) toList.toArray(new Address[] { }); // Add addresses to the addressbook MessageBuilderHelper.addAddressesToAddressbook(to); model.setTo(to); // bug #997560 (fdietz): CC: should be in Cc:, instead of To: LinkedList ccList = new LinkedList(); ccList.addAll(Arrays.asList(rfcHeader.getCc())); it = ccList.iterator(); while (it.hasNext()) { Address act = (Address) it.next(); // Remove the mail address from the receiver account if (accountAddress != null && accountAddress.equals(act)) { it.remove(); } } Address[] cc = (Address[]) ccList.toArray(new Address[] { }); model.setCc(cc); // create In-Reply-To:, References: headerfields MessageBuilderHelper.createMailingListHeaderItems(header, model); // select the account this mail was received from model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
public void updateGUI() throws Exception { // open composer frame controller = new ComposerController(); new DefaultContainer(controller); // apply model controller.setComposerModel(model); // model->view update controller.updateComponents(true); // Set the focus to the editor pane and set cursor to the top controller.getCurrentEditor().getViewUIComponent().requestFocus(); controller.getCurrentEditor().getViewUIComponent().moveCaretPosition(0); controller.getCurrentEditor().getViewUIComponent().select(0,0); }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // get mimeparts MimeTree mimePartTree = folder.getMimePartTree(uids[0]); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart != null) { // setup charset and html initMimeHeader(bodyPart); Integer[] address = bodyPart.getAddress(); String quotedBodyText = createQuotedBody(bodyPart.getHeader(), folder, uids, address); // debug output LOG.fine("Quoted body text:\n" + quotedBodyText); model.setBodyText(quotedBodyText); } }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
protected void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], headerfields); BasicHeader rfcHeader = new BasicHeader(header); // set subject model.setSubject(MessageBuilderHelper.createReplySubject(rfcHeader .getSubject())); // Use reply-to field if given, else use from Address[] to = rfcHeader.getReplyTo(); if (to.length == 0) { to = new Address[] { rfcHeader.getFrom()}; } // Add addresses to the addressbook MessageBuilderHelper.addAddressesToAddressbook(to); model.setTo(to); // create In-Reply-To:, References: headerfields MessageBuilderHelper.createMailingListHeaderItems(header, model); // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
protected String createQuotedBody(MimeHeader header, IMailbox folder, Object[] uids, Integer[] address) throws IOException, Exception { MimeTree mimePartTree = folder.getMimePartTree(uids[0]); MimePart bodyPart = mimePartTree.getFromAddress(address); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); String bodyText = MessageBuilderHelper.createBodyText(bodyPart, bodyStream); boolean wasHtml; if (header.getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String quotedBody; // Quote original message - different methods for text and html if (model.isHtml()) { // Html: Insertion of text before and after original message // get necessary headerfields BasicHeader rfcHeader = new BasicHeader(folder.getHeaderFields( uids[0], headerfields)); String subject = rfcHeader.getSubject(); String date = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM).format(rfcHeader.getDate()); String from = AddressListRenderer.renderToHTMLWithLinks( new Address[] { rfcHeader.getFrom()}).toString(); String to = AddressListRenderer.renderToHTMLWithLinks( rfcHeader.getTo()).toString(); // build "quoted" message StringBuffer buf = new StringBuffer(); buf.append("<html><body><p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_start")); buf.append("<br>" + MailResourceLoader.getString("header", "header", "subject") + ": " + subject); buf.append("<br>" + MailResourceLoader.getString("header", "header", "date") + ": " + date); buf.append("<br>" + MailResourceLoader.getString("header", "header", "from") + ": " + from); buf.append("<br>" + MailResourceLoader.getString("header", "header", "to") + ": " + to); buf.append("</p>"); String htmlbody; if (wasHtml) { htmlbody = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(bodyText)); } else { htmlbody = HtmlParser.substituteSpecialCharacters(bodyText); } buf.append(htmlbody); buf.append("<p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_end")); buf.append("</p></body></html>"); quotedBody = buf.toString(); } else { if (wasHtml) { bodyText = HtmlParser.htmlToText(bodyText); } // Text: Addition of > before each line quotedBody = StreamUtils.readReader(new QuoteFilterReader( new StringReader(bodyText))).toString(); } return quotedBody; }
// in java/org/columba/mail/gui/composer/command/ReplyWithTemplateCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // get mimeparts MimeTree mimePartTree = folder.getMimePartTree(uids[0]); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart != null) { // setup charset and html initMimeHeader(bodyPart); Integer[] address = bodyPart.getAddress(); String quotedBodyText = createQuotedBody(bodyPart.getHeader(), folder, uids, address); // get answer from template String templateBody = getTemplateBody(); String bodytext; if (model.isHtml()) { bodytext = "<html><body>" + HtmlParser.getHtmlBody(quotedBodyText) + "<br>" + templateBody + "</body></html>"; } else { bodytext = quotedBodyText + "\n" + templateBody; } model.setBodyText(bodytext); } else { String bodytext = getTemplateBody(); if (model.isHtml()) bodytext = "<html><body>" + bodytext + "</body></html>"; model.setBodyText(bodytext); } }
// in java/org/columba/mail/gui/composer/command/ReplyWithTemplateCommand.java
private String getTemplateBody() throws Exception, CommandCancelledException, IOException { // template folder has uid=107 IMailbox templateFolder = (IMailbox) FolderTreeModel .getInstance().getFolder("107"); // retrieve headerlist of tempate folder IHeaderList list = templateFolder.getHeaderList(); // choose template ChooseTemplateDialog d = new ChooseTemplateDialog(mediator.getView() .getFrame(), list); Object uid = null; if (d.isResult()) { // user pressed OK uid = d.getUid(); } else { throw new CommandCancelledException(); } // get bodytext of template message MimeTree tree = templateFolder.getMimePartTree(uid); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = tree.getFirstTextPart("html"); } else { bodyPart = tree.getFirstTextPart("plain"); } InputStream bodyStream = templateFolder.getMimePartBodyStream(uid, bodyPart .getAddress()); boolean wasHtml; if (bodyPart.getHeader().getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String body; if (model.isHtml()) { if (wasHtml) { body = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream(bodyStream) .toString())); } else { body = HtmlParser.substituteSpecialCharacters( StreamUtils.readCharacterStream(bodyStream).toString()); } } else { if (wasHtml) { body = HtmlParser.htmlToText(StreamUtils.readCharacterStream(bodyStream). toString()); } else { body = StreamUtils.readCharacterStream(bodyStream).toString(); } } bodyStream.close(); return body; }
// in java/org/columba/mail/gui/composer/command/ForwardCommand.java
public void updateGUI() throws Exception { // open composer frame controller = new ComposerController(); new DefaultContainer(controller); // apply model controller.setComposerModel(model); // model->view update controller.updateComponents(true); }
// in java/org/columba/mail/gui/composer/command/ForwardCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // get headerfields Header header = folder.getHeaderFields(uids[0], new String[] { "Subject" }); // create composer model model = new ComposerModel(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // set subject model.setSubject(MessageBuilderHelper .createForwardSubject(new BasicHeader(header).getSubject())); // initialize MimeHeader as RFC822-compliant-message MimeHeader mimeHeader = new MimeHeader(); mimeHeader.setMimeType(new MimeType("message", "rfc822")); mimeHeader.setContentDescription((String)folder.getAttribute(uids[0],"columba.subject")); // add mimepart to model InputStream messageSourceStream = folder .getMessageSourceStream(uids[0]); model.addMimePart(new InputStreamMimePart(mimeHeader, messageSourceStream)); // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/ForwardInlineCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // get mimeparts MimeTree mimePartTree = folder.getMimePartTree(uids[0]); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; Integer[] bodyPartAddress = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart != null) { // setup charset and html initMimeHeader(bodyPart); bodyPartAddress = bodyPart.getAddress(); String quotedBodyText = createQuotedBody(bodyPart.getHeader(), folder, uids, bodyPartAddress); model.setBodyText(quotedBodyText); } // add all attachments MimeTree mt = folder.getMimePartTree(uids[0]); Iterator it = mt.getAllLeafs().iterator(); while (it.hasNext()) { MimePart mp = (MimePart) it.next(); Integer[] address = mp.getAddress(); // skip if bodypart (already added as quoted text) if (Arrays.equals(address, bodyPartAddress)) continue; // add attachment InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); int encoding = mp.getHeader().getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; case MimeHeader.BASE64: bodyStream = new Base64DecoderInputStream(bodyStream); break; default: } model.addMimePart(new InputStreamMimePart(mp.getHeader(), bodyStream)); } // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/ForwardInlineCommand.java
private void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], new String[] { "Subject" }); BasicHeader rfcHeader = new BasicHeader(header); // set subject model.setSubject(MessageBuilderHelper.createForwardSubject(rfcHeader .getSubject())); }
// in java/org/columba/mail/gui/composer/command/ForwardInlineCommand.java
protected String createQuotedBody(MimeHeader header, IMailbox folder, Object[] uids, Integer[] address) throws IOException, Exception { MimeTree mimePartTree = folder.getMimePartTree(uids[0]); MimePart bodyPart = mimePartTree.getFromAddress(address); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); String bodyText = MessageBuilderHelper.createBodyText(bodyPart, bodyStream); boolean wasHtml; if (header.getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String quotedBody; // Quote original message - different methods for text and html if (model.isHtml()) { // Html: Insertion of text before and after original message // get necessary headerfields BasicHeader rfcHeader = new BasicHeader(folder.getHeaderFields( uids[0], headerfields)); String subject = rfcHeader.getSubject(); String date = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM).format(rfcHeader.getDate()); String from = AddressListRenderer.renderToHTMLWithLinks( new Address[] { rfcHeader.getFrom() }).toString(); String to = AddressListRenderer.renderToHTMLWithLinks( rfcHeader.getTo()).toString(); // build "quoted" message StringBuffer buf = new StringBuffer(); buf.append("<html><body><p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_start")); buf.append("<br>" + MailResourceLoader.getString("header", "header", "subject") + ": " + subject); buf.append("<br>" + MailResourceLoader.getString("header", "header", "date") + ": " + date); buf.append("<br>" + MailResourceLoader.getString("header", "header", "from") + ": " + from); buf.append("<br>" + MailResourceLoader.getString("header", "header", "to") + ": " + to); buf.append("</p>"); String htmlbody; if (wasHtml) { htmlbody = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(bodyText)); } else { htmlbody = HtmlParser.substituteSpecialCharacters(bodyText); } buf.append(htmlbody); buf.append("<p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_end")); buf.append("</p></body></html>"); quotedBody = buf.toString(); } else { BasicHeader rfcHeader = new BasicHeader(folder.getHeaderFields( uids[0], headerfields)); String date = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM).format(rfcHeader.getDate()); String from = rfcHeader.getFrom().toString(); if (wasHtml) { bodyText = HtmlParser.htmlToText(bodyText); } // Text: Addition of > before each line StringBuffer buf = StreamUtils.readReader(new QuoteFilterReader( new StringReader(bodyText))); buf.insert(0, ">\n"); buf.insert(0, "> Date: " + date + "\n"); buf.insert(0, "> From: " + from + "\n"); quotedBody = buf.toString(); } return quotedBody; }
// in java/org/columba/mail/gui/composer/command/ReplyAsAttachmentCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // initialize MimeHeader as RFC822-compliant-message MimeHeader mimeHeader = new MimeHeader(); mimeHeader.setMimeType(new MimeType("message", "rfc822")); mimeHeader.setContentDescription((String)folder.getAttribute(uids[0],"columba.subject")); // add mimepart to model InputStream messageSourceStream = folder .getMessageSourceStream(uids[0]); model.addMimePart(new InputStreamMimePart(mimeHeader, messageSourceStream)); messageSourceStream.close(); }
// in java/org/columba/mail/gui/util/WelcomeMessage.java
private static String createMessage(String to, String accountUid) throws Exception { StringBuffer buf = new StringBuffer(); buf.append("Subject: Welcome to Columba\r\n"); buf.append("From: columba-users@lists.sourceforge.net\r\n"); buf.append("To: "+to+"\r\n"); buf.append("\r\n"); InputStream is = DiskIO .getResourceStream("org/columba/mail/welcome_message_body.txt"); String body = StreamUtils.readCharacterStream(is).toString(); buf.append(body); return buf.toString(); }
// in java/org/columba/mail/gui/util/WelcomeMessage.java
public static void addWelcomeMessage(IMailFolder folder, String to, String accountUid) throws Exception { if ( folder == null) throw new IllegalArgumentException("folder == null"); if ( to == null || to.length() == 0) throw new IllegalArgumentException("to == nllu"); if ( accountUid == null ) throw new IllegalArgumentException("account uid == null"); // create message String message = createMessage(to, accountUid); // convert to inputstream InputStream is = new ByteArrayInputStream(message.getBytes("UTF-8")); // add to folder CommandProcessor.getInstance().addOp( new AddMessageCommand(new MailFolderCommandReference( folder), is)); }
// in java/org/columba/mail/gui/table/TableController.java
public void showHeaderList(IMailbox folder, IHeaderList headerList) throws Exception { // save previously selected folder options if (previouslySelectedFolder != null) { ((MailFrameMediator) getFrameController()).getFolderOptionsController().save(previouslySelectedFolder); } // load options of newly selected folder ((MailFrameMediator) getFrameController()).getFolderOptionsController().load(folder, FolderOptionsController.STATE_BEFORE); getHeaderTableModel().set(headerList); // load options of newly selected folder ((MailFrameMediator) getFrameController()).getFolderOptionsController().load(folder, FolderOptionsController.STATE_AFTER); // remember previously selected folder previouslySelectedFolder = folder; }
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
public void updateGUI() throws Exception { ((MailFrameMediator) mediator).removeTreeSelectionListener(this); // Update only if the selection did not change if (updateGui) { ((TableViewOwner) mediator).getTableController().showHeaderList( folder, headerList); } }
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // Register as SelectionListener to track the selection // of the tree if (!updateGui) return; IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); // fetch the headerlist try { headerList = (folder).getHeaderList(); } catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; } updateGui &= !worker.cancelled(); }
// in java/org/columba/mail/pop3/POP3Server.java
public void save() throws Exception { headerList.persist(); }
// in java/org/columba/mail/pop3/POP3Server.java
public void logout() throws Exception { getStore().logout(); }
// in java/org/columba/mail/pop3/POP3Server.java
public List synchronize() throws Exception { if (getHeaderList().count() == 0) { LOG.severe(accountItem.getName() + " - POP3 Headerlist is empty!"); } // Get the uids from the headercache LinkedList headerUids = new LinkedList(getHeaderList().keySet()); // Get the list of the uids on the server // Important: Use a clone of the List since // we must not change it! List newUids = store.getUIDList(); // substract the uids that we already downloaded -> // newUids contains all uids to fetch from the server ListTools.substract(newUids, headerUids); // substract the uids on the server from the downloaded uids -> // headerUids are the uids that have been removed from the server ListTools.substract(headerUids, store.getUIDList()); Iterator it = headerUids.iterator(); // update the cache while (it.hasNext()) { getHeaderList().remove(it.next()); cacheChanged = true; } // return the uids that are new return newUids; }
// in java/org/columba/mail/pop3/POP3Server.java
public int getMessageCount() throws Exception { return getStore().getMessageCount(); }
// in java/org/columba/mail/pop3/POP3Server.java
public int getMessageSize(Object uid) throws Exception { return store.getSize(store.getIndex(uid)); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { POP3CommandReference r = (POP3CommandReference) getReference(); server = r.getServer(); // register interest on status bar information ((StatusObservableImpl) server.getObservable()).setWorker(worker); log(MailResourceLoader.getString("statusbar", "message", "authenticating")); try { // login and get # of messages on server totalMessageCount = server.getMessageCount(); if (worker.cancelled()) throw new CommandCancelledException(); // synchronize local UID list with server UID list List newMessagesUidList = synchronize(); if (worker.cancelled()) throw new CommandCancelledException(); if (Logging.DEBUG) { LOG.fine(newMessagesUidList.toString()); } if (worker.cancelled()) throw new CommandCancelledException(); // only download new messages downloadNewMessages(newMessagesUidList, worker); // Delete old message from server if the feature is enabled server.cleanUpServer(); // logout cleanly logout(); // display downloaded message count in statusbar if (newMessageCount == 0) { log(MailResourceLoader.getString("statusbar", "message", "no_new_messages")); } else { log(MessageFormat.format(MailResourceLoader.getString( "statusbar", "message", "fetched_count"), new Object[] { new Integer(newMessageCount) })); // get inbox-folder from pop3-server preferences IMailbox inboxFolder = server.getFolder(); // notify listeners IMailFolderCommandReference ref = new MailFolderCommandReference(inboxFolder, newMessagesUidList.toArray()); MailCheckingManager.getInstance().fireNewMessageArrived(ref); } } catch (CommandCancelledException e) { server.logout(); // clear statusbar message server.getObservable().clearMessage(); } catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; } /* * catch (IOException e) { String name = e.getClass().getName(); * JOptionPane.showMessageDialog(null, e.getLocalizedMessage(), * name.substring(name.lastIndexOf(".")), JOptionPane.ERROR_MESSAGE); // * clear statusbar message server.getObservable().clearMessage(); } */ finally { /* * // always enable the menuitem again * r[0].getPOP3ServerController().enableActions(true); */ } }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void downloadMessage(Object serverUID, IWorkerStatusController worker) throws Exception { // server message numbers start with 1 // whereas List numbers start with 0 // -> always increase fetch number IWorkerStatusChangeListener listener = new IWorkerStatusChangeListener() { public void workerStatusChanged(WorkerStatusChangedEvent e) { if (e.getSource().cancelled()) { try { server.dropConnection(); } catch (IOException e1) { } } } }; // important for cancel worker.addWorkerStatusChangeListener(listener); // download message ColumbaMessage message; try { message = server.getMessage(serverUID, worker); } catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); } // not needed anymore worker.removeWorkerStatusChangeListener(listener); if (message == null) { LOG.severe("Message with UID=" + serverUID + " isn't on the server."); return; } message.getHeader().getFlags().setSeen(false); // get inbox-folder from pop3-server preferences IMailbox inboxFolder = server.getFolder(); // start command which adds message to folder // and calls apply-filter on this specific message IMailFolderCommandReference r = new MailFolderCommandReference( inboxFolder, message); CommandProcessor.getInstance().addOp(new AddPOP3MessageCommand(r)); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
protected int calculateTotalSize(List uidList) throws Exception { int totalSize = 0; Iterator it = uidList.iterator(); while (it.hasNext()) { totalSize += server.getMessageSize(it.next()); } return totalSize; }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void downloadNewMessages(List newMessagesUIDList, IWorkerStatusController worker) throws Exception { LOG.fine("need to fetch " + newMessagesUIDList.size() + " messages."); int totalSize = calculateTotalSize(newMessagesUIDList); worker.setProgressBarMaximum(totalSize); worker.setProgressBarValue(0); newMessageCount = newMessagesUIDList.size(); for (int i = 0; i < newMessageCount; i++) { if (worker.cancelled()) throw new CommandCancelledException(); // which UID should be downloaded next Object serverUID = newMessagesUIDList.get(i); LOG.fine("fetch message with UID=" + serverUID); log(MessageFormat.format(MailResourceLoader.getString("statusbar", "message", "fetch_messages"), new Object[] { new Integer(i + 1), new Integer(newMessageCount) })); int size = server.getMessageSize(serverUID); if (server.getAccountItem().getPopItem().getBoolean("enable_limit")) { // check if message isn't too big to download int maxSize = server.getAccountItem().getPopItem().getInteger( "limit"); // if message-size is bigger skip download of this message if (size > maxSize) { LOG.fine("skipping download of message, too big"); continue; } } // now download the message downloadMessage(serverUID, worker); if (!server.getAccountItem().getPopItem().getBoolean( "leave_messages_on_server")) { // delete message from server server.deleteMessage(serverUID); LOG.fine("deleted message with uid=" + serverUID); } } }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public List synchronize() throws Exception { log(MailResourceLoader.getString("statusbar", "message", "fetch_uid_list")); LOG.fine("synchronize local UID-list with remote UID-list"); // synchronize local UID-list with server List newMessagesUIDList = server.synchronize(); return newMessagesUIDList; }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void logout() throws Exception { server.logout(); LOG.fine("logout"); log(MailResourceLoader.getString("statusbar", "message", "logout")); if (newMessageCount == 0) { log(MailResourceLoader.getString("statusbar", "message", "no_new_messages")); } }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void updateGUI() throws Exception { if (action != null) { action.setEnabled(true); } }
// in java/org/columba/mail/pop3/command/AddPOP3MessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); inboxFolder = (IMailbox) r.getSourceFolder(); IColumbaMessage message = (IColumbaMessage) r.getMessage(); // add message to folder SourceInputStream messageStream = new SourceInputStream(message .getSource()); Object uid = inboxFolder.addMessage(messageStream, message.getHeader().getAttributes(), message.getHeader().getFlags()); messageStream.close(); // mark message as recent r.setSourceFolder(inboxFolder); r.setUids(new Object[] { uid }); r.setMarkVariant(MarkMessageCommand.MARK_AS_RECENT); new MarkMessageCommand(r).execute(worker); // apply spam filter boolean messageWasMoved = applySpamFilter(uid, worker); if (messageWasMoved == false) { // apply filter on message applyFilters(uid); } }
// in java/org/columba/mail/pop3/command/AddPOP3MessageCommand.java
private boolean applySpamFilter(Object uid, IWorkerStatusController worker) throws Exception { // message belongs to which account? AccountItem item = CommandHelper.retrieveAccountItem(inboxFolder, uid); if ( item == null ) return false; // if spam filter is not enabled -> return if (!item.getSpamItem().isEnabled()) { return false; } // create reference IMailFolderCommandReference r = new MailFolderCommandReference( inboxFolder, new Object[] { uid }); // score message and mark as "spam" or "not spam" new ScoreMessageCommand(r).execute(worker); // is message marked as spam boolean spam = ((Boolean) inboxFolder.getAttribute(uid, "columba.spam")) .booleanValue(); if (spam == false) return false; if (item.getSpamItem().isMoveIncomingJunkMessagesEnabled()) { if (item.getSpamItem().isIncomingTrashSelected()) { // move message to trash IMailbox trash = (IMailbox) ((RootFolder) inboxFolder .getRootFolder()).getTrashFolder(); // create reference MailFolderCommandReference ref2 = new MailFolderCommandReference( inboxFolder, trash, new Object[] { uid }); CommandProcessor.getInstance().addOp( new MoveMessageCommand(ref2)); } else { // move message to user-configured folder (generally "Junk" // folder) IMailbox destFolder = (IMailbox) FolderTreeModel .getInstance() .getFolder(item.getSpamItem().getIncomingCustomFolder()); // create reference MailFolderCommandReference ref2 = new MailFolderCommandReference( inboxFolder, destFolder, new Object[] { uid }); CommandProcessor.getInstance().addOp( new MoveMessageCommand(ref2)); } return true; } return false; }
// in java/org/columba/mail/pop3/command/AddPOP3MessageCommand.java
private void applyFilters(Object uid) throws Exception { IFilterList list = inboxFolder.getFilterList(); for (int j = 0; j < list.count(); j++) { IFilter filter = list.get(j); Object[] result = inboxFolder.searchMessages(filter, new Object[] { uid }); if (result.length != 0) { CompoundCommand command = new FilterCompoundCommand(filter, inboxFolder, result); CommandProcessor.getInstance().addOp(command); } } }
// in java/org/columba/mail/pop3/POP3Store.java
public List getUIDList() throws Exception { return new ArrayList(getUidMap().keySet()); }
// in java/org/columba/mail/imap/FetchSubFolderListCommand.java
public void execute(IWorkerStatusController worker) throws Exception { MailFolderCommandReference r = (MailFolderCommandReference) getReference(); if (r == null) { return; } if (r.getSourceFolder() instanceof IMAPRootFolder) { imapRoot = (IMAPRootFolder) r.getSourceFolder(); imapRoot.syncSubscribedFolders(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void logout() throws Exception { if (protocol.getState() != IMAPProtocol.NOT_CONNECTED) { try { protocol.logout(); } catch (Exception e) { // don't care } } }
// in java/org/columba/mail/imap/IMAPServer.java
public ListInfo[] list(String reference, String pattern) throws Exception { ensureLoginState(); try { return protocol.list(reference, pattern); } catch (IMAPDisconnectedException e) { return protocol.list(reference, pattern); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer append(InputStream messageSource, IMAPFlags flags, IMAPFolder folder) throws Exception { // make sure we are already logged in ensureLoginState(); // close the mailbox if it is selected if (protocol.getState() == IMAPProtocol.SELECTED && protocol.getSelectedMailbox().equals(folder)) { protocol.close(); } MailboxStatus status = protocol.status(folder.getImapPath(), new String[] { "UIDNEXT" }); if (flags != null) { protocol.append(folder.getImapPath(), messageSource, new Object[] { flags }); } else { protocol.append(folder.getImapPath(), messageSource); } return new Integer((int) status.getUidNext()); }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer append(InputStream messageSource, IMAPFolder folder) throws Exception { return append(messageSource, null, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
public void deleteFolder(String path) throws Exception { // make sure we are already logged in ensureLoginState(); if (protocol.getState() == IMAPProtocol.SELECTED && protocol.getSelectedMailbox().equals(path)) { protocol.close(); } protocol.unsubscribe(path); protocol.delete(path); }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] copy(IMAPFolder destFolder, Object[] uids, IMAPFolder folder) throws Exception { ensureSelectedState(folder); // We need to sort the uids in order // to have the correct association // between the new and old uid List sortedUids = Arrays.asList(uids); Collections.sort(sortedUids); MailboxStatus statusBefore = protocol.status(destFolder.getImapPath(), new String[] { "UIDNEXT" }); protocol.uidCopy(new SequenceSet(Arrays.asList(uids)), destFolder .getImapPath()); MailboxStatus statusAfter = protocol.status(destFolder.getImapPath(), new String[] { "UIDNEXT" }); // the UIDS start UIDNext till UIDNext + uids.length int copied = (int) (statusAfter.getUidNext() - statusBefore .getUidNext()); Integer[] destUids = new Integer[copied]; for (int i = 0; i < copied; i++) { destUids[i] = new Integer((int) (statusBefore.getUidNext() + i)); } return destUids; }
// in java/org/columba/mail/imap/IMAPServer.java
public void fetchHeaderList(IHeaderList headerList, List list, IMAPFolder folder) throws Exception { // make sure this mailbox is selected ensureSelectedState(folder); printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_header_list")); int count = list.size() / IMAPServer.STEP_SIZE; int rest = list.size() % IMAPServer.STEP_SIZE; getObservable().setCurrent(0); getObservable().setMax(count + 1); for (int i = 0; i < count; i++) { doFetchHeaderList(headerList, list.subList( i * IMAPServer.STEP_SIZE, (i + 1) * IMAPServer.STEP_SIZE)); getObservable().setCurrent(i); } if (rest > 0) { doFetchHeaderList(headerList, list .subList(count * IMAPServer.STEP_SIZE, count * IMAPServer.STEP_SIZE + rest)); } getObservable().setCurrent(count + 1); }
// in java/org/columba/mail/imap/IMAPServer.java
public List search(Object[] uids, IFilterRule filterRule, IMAPFolder folder) throws Exception { LinkedList result = new LinkedList(search(filterRule, folder)); ListTools.intersect(result, Arrays.asList(uids)); return result; }
// in java/org/columba/mail/filter/plugins/DeleteMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, uids); r.setMarkVariant(MarkMessageCommand.MARK_AS_EXPUNGED); MarkMessageCommand c = new MarkMessageCommand(r); CommandProcessor.getInstance().addOp(c); r = new MailFolderCommandReference(srcFolder); return new ExpungeFolderCommand(r); }
// in java/org/columba/mail/filter/plugins/DateFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { // transform string to Date representation Date date = transformDate(pattern); if (date == null) return false; boolean result = false; // get date Date d = (Date) ((IMailbox)folder).getAttribute(uid, "columba.date"); if (d == null) { LOG.fine("field date not found"); return false; } switch (condition) { case FilterCriteria.DATE_BEFORE: if (d.before(date)) { result = true; } break; case FilterCriteria.DATE_AFTER: if (d.after(date)) { result = true; } break; } return result; }
// in java/org/columba/mail/filter/plugins/BodyFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { // get message body InputStream messageSourceStream = ((IMailbox)folder).getMessageSourceStream(uid); StringBuffer body = StreamUtils.readCharacterStream(messageSourceStream); String bodyText = pattern; boolean result = false; switch (condition) { case FilterCriteria.CONTAINS: if (body.indexOf(bodyText) != -1) { result = true; } break; case FilterCriteria.CONTAINS_NOT: if (body.indexOf(bodyText) == -1) { result = true; } break; } return result; }
// in java/org/columba/mail/filter/plugins/PriorityFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { boolean result = false; String s = (String) searchPattern; Integer searchPatternInt = transformPriority(s); Integer priority = (Integer) ((IMailbox)folder).getAttribute(uid, "columba.priority"); if (priority == null) { return false; } switch (condition) { case FilterCriteria.IS: if (priority.compareTo(searchPatternInt) == 0) { result = true; } break; case FilterCriteria.IS_NOT: if (priority.compareTo(searchPatternInt) != 0) { result = true; } break; } return result; }
// in java/org/columba/mail/filter/plugins/FlagsFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { boolean result = false; String headerField = pattern; Flags flags = ((IMailbox)folder).getFlags(uid); if (headerField.equalsIgnoreCase("Answered")) { result = flags.get(Flags.ANSWERED); } else if (headerField.equalsIgnoreCase("Deleted")) { result = flags.get(Flags.DELETED); } else if (headerField.equalsIgnoreCase("Flagged")) { result = flags.get(Flags.FLAGGED); } else if (headerField.equalsIgnoreCase("Recent")) { result = flags.get(Flags.RECENT); } else if (headerField.equalsIgnoreCase("Draft")) { result = flags.get(Flags.DRAFT); } else if (headerField.equalsIgnoreCase("Seen")) { result = flags.get(Flags.SEEN); } else if (headerField.equalsIgnoreCase("Spam")) { result = ((Boolean) ((IMailbox)folder).getAttribute(uid, "columba.spam")) .booleanValue(); } if (condition == FilterCriteria.IS) { return result; } else { return !result; } }
// in java/org/columba/mail/filter/plugins/MarkMessageAsReadAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { MailFolderCommandReference r = new MailFolderCommandReference( srcFolder, uids); String variant = filterAction.get("markvariant"); if (variant.equals("read")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_READ); } else if (variant.equals("unread")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_UNREAD); } else if (variant.equals("flagged")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_FLAGGED); } else if (variant.equals("not_flagged")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_UNFLAGGED); } else if (variant.equals("expunged")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_EXPUNGED); } else if (variant.equals("not_expunged")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_UNEXPUNGED); } else if (variant.equals("answered")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_ANSWERED); } else if (variant.equals("spam")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_SPAM); } else if (variant.equals("no_spam")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_NOTSPAM); } // if something goes wrong here, fall back to "mark as read" else { r.setMarkVariant(MarkMessageCommand.MARK_AS_READ); } MarkMessageCommand c = new MarkMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/AccountFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { boolean result = false; Integer messageAccountUid = (Integer) ((IMailbox) folder).getAttribute( uid, "columba.accountuid"); if ((messageAccountUid != null) && (criteriaAccountUid != -1)) { int id = messageAccountUid.intValue(); if ((criteriaCondition == FilterCriteria.IS) && (criteriaAccountUid == id)) { result = true; } else if ((criteriaCondition == FilterCriteria.IS_NOT) && (criteriaAccountUid != id)) { result = true; } } return result; }
// in java/org/columba/mail/filter/plugins/CopyMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { String uid = filterAction.getUid(); IMailbox destFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(uid); if (destFolder == null) { JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), "Unable to find destination folder, please correct the destination folder path for this filter"); throw new Exception("File not found"); } MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, destFolder, uids); CopyMessageCommand c = new CopyMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/MatchAllFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { // match all matches return true; }
// in java/org/columba/mail/filter/plugins/MoveMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { String uid = filterAction.getUid(); IMailbox destFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(uid); if (destFolder == null) { JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), "Unable to find destination folder, please correct the destination folder path for this filter"); throw new Exception("File not found"); } MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, destFolder, uids); MoveMessageCommand c = new MoveMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/SizeFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { boolean result = false; Integer size = transformSize((String) pattern); Integer s = (Integer) ((IMailbox)folder).getAttribute(uid, "columba.size"); if (s == null) { return false; } switch (condition) { case FilterCriteria.SIZE_SMALLER: if (size.compareTo(s) > 0) { result = true; } break; case FilterCriteria.SIZE_BIGGER: if (size.compareTo(s) < 0) { result = true; } break; } return result; }
// in java/org/columba/mail/filter/plugins/HeaderfieldFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { // get message header Header header = ((IMailbox)folder).getHeaderFields(uid, new String[] { headerfield }); if (header == null) { return false; } String headerItem = (String) header.get(headerfield); // cancel if headerfield doesn't exist if (headerItem == null) return false; // decode headerfield headerItem = EncodedWord.decode(headerItem).toString(); // see if theirs a match boolean result = match(headerItem, condition, pattern); return result; }
// in java/org/columba/mail/filter/plugins/ColorMessageFilterAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { int rgb = filterAction.getIntegerWithDefault("rgb", Color.black.getRGB()); // create reference MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, uids); r.setColorValue(rgb); // create command return new ColorMessageCommand(r); }
// in java/org/columba/mail/filter/plugins/AddressbookFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { Header header = ((IMailbox) folder).getHeaderFields(uid, new String[] { "From" }); String from = header.get("From"); Address address = null; try { address = AddressParser.parseAddress(from); } catch (Exception ex) { return false; } IFolderFacade folderFacade = null; IContactFacade contactFacade = null; try { folderFacade = ServiceConnector.getFolderFacade(); contactFacade = ServiceConnector.getContactFacade(); } catch (ServiceNotFoundException e) { e.printStackTrace(); return false; } org.columba.addressbook.facade.IFolder contactFolder = folderFacade.getCollectedAddresses(); String contactId = contactFacade.findByEmailAddress(contactFolder.getId(), address.getMailAddress()); if ( contactId != null ) return true; return false; }
// in java/org/columba/mail/filter/plugins/ScoreMessageFilterAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, uids); ScoreMessageCommand c = new ScoreMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/ColorFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { int messageRGB = defaultColorRGB; Color messageColor = (Color) ((IMailbox)folder).getAttribute(uid, "columba.color"); if (messageColor != null) { messageRGB = messageColor.getRGB(); } boolean result = false; if ((criteriaCondition == FilterCriteria.IS) && (messageRGB == criteriaRGB)) { result = true; } else if ((criteriaCondition == FilterCriteria.IS_NOT) && (messageRGB != criteriaRGB)) { result = true; } return result; }
// in java/org/columba/mail/pgp/MultipartSignedRenderer.java
public InputStream render(MimePart part) throws Exception { Vector streams = new Vector((2 * 2) + 3); MimeHeader header = part.getHeader(); // Create boundary to separate the mime-parts String boundary = createUniqueBoundary().toString(); header.putContentParameter("boundary", boundary); byte[] startBoundary = ("\r\n--" + boundary + "\r\n").getBytes(); byte[] endBoundary = ("\r\n--" + boundary + "--\r\n").getBytes(); // Add pgp-specific content-parameters // we take as default hash-algo SHA1 header.putContentParameter("micalg", "pgp-sha1"); header.putContentParameter("protocol", "application/pgp-signature"); // Create the header and body of the multipart streams.add(header.getHeader().getInputStream()); // Add the MimePart that will be signed streams.add(new ByteArrayInputStream(startBoundary)); CloneStreamMaster signedPartCloneModel = new CloneStreamMaster( MimeTreeRenderer.getInstance().renderMimePart(part.getChild(0))); streams.add(signedPartCloneModel.getClone()); // Add the signature streams.add(new ByteArrayInputStream(startBoundary)); StreamableMimePart signatureMimePart; signatureMimePart = null; JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); PGPPassChecker passCheck = PGPPassChecker.getInstance(); boolean check = passCheck.checkPassphrase(con); if (!check) { throw new WrongPassphraseException("wrong passphrase"); } JSCFStatement stmt = con.createStatement(); JSCFResultSet res = stmt.executeSign(signedPartCloneModel.getClone()); signatureMimePart = new InputStreamMimePart(this.signatureHeader, res .getResultStream()); streams.add(MimeTreeRenderer.getInstance().renderMimePart( signatureMimePart)); // Create the closing boundary streams.add(new ByteArrayInputStream(endBoundary)); return new SequenceInputStream(streams); }
// in java/org/columba/mail/pgp/MultipartEncryptedRenderer.java
public InputStream render(MimePart part) throws Exception { Vector streams = new Vector((2 * 2) + 3); MimeHeader header = part.getHeader(); // Create boundary to separate the mime-parts String boundary = createUniqueBoundary().toString(); header.putContentParameter("boundary", boundary); byte[] startBoundary = ("\r\n--" + boundary + "\r\n").getBytes(); byte[] endBoundary = ("\r\n--" + boundary + "--\r\n").getBytes(); // Add pgp-specific content-parameters header.putContentParameter("protocol", "application/pgp-encrypted"); // Create the header of the multipart streams.add(header.getHeader().getInputStream()); SecurityItem pgpItem = ((PGPMimePart) part).getPgpItem(); // Add the ControlMimePart streams.add(new ByteArrayInputStream(startBoundary)); streams.add(MimeTreeRenderer.getInstance().renderMimePart(controlPart)); // Add the encrypted MimePart streams.add(new ByteArrayInputStream(startBoundary)); StreamableMimePart encryptedPart; encryptedPart = null; /* JSCFDriverManager.registerJSCFDriver(new GPGDriver()); JSCFConnection con = JSCFDriverManager.getConnection("jscf:gpg:"+pgpItem.get("path")); */ JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); //con.getProperties().put("USERID", pgpItem.get("id")); JSCFStatement stmt = con.createStatement(); JSCFResultSet res = stmt.executeEncrypt(MimeTreeRenderer.getInstance() .renderMimePart(part.getChild( 0)), pgpItem.get("recipients")); if (res.isError()) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), StreamUtils.readCharacterStream(res.getErrorStream()).toString()); } encryptedPart = new InputStreamMimePart(encryptedHeader, res.getResultStream()); streams.add(MimeTreeRenderer.getInstance().renderMimePart(encryptedPart)); // Create the closing boundary streams.add(new ByteArrayInputStream(endBoundary)); return new SequenceInputStream(streams); }
// in java/org/columba/mail/spam/rules/MissingToHeaderRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[] { "To"}); String from = header.get("To"); if (from == null) return MAX_PROBABILITY; if (from.length() == 0) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/SubjectContainsSpamRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[] { "Subject"}); String subject = header.get("Subject"); if (subject == null) return NEARLY_ZERO; if (subject.length() == 0) return NEARLY_ZERO; // convert to lower-case subject = subject.toLowerCase(); if (subject.indexOf("[spam]") != -1) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/OnlyHTMLMimepartRule.java
public float score(IMailbox folder, Object uid) throws Exception { MimeTree tree = folder.getMimePartTree(uid); Iterator it = tree.getAllLeafs().iterator(); boolean onlyHTML = true; while (it.hasNext()) { MimePart mp = (MimePart) it.next(); MimeHeader header = mp.getHeader(); MimeType mimetype = header.getMimeType(); if ((mimetype.getType().equals("text")) && (mimetype.getSubtype().equals("html"))) { } else { onlyHTML = false; } } if (onlyHTML) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/SubjectWhitespaceRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[]{"Subject"}); String subject = header.get("Subject"); if ( subject == null ) return NEARLY_ZERO; if ( subject.length() == 0 ) return NEARLY_ZERO; int count=0; boolean whitespace = false; for ( int i=0; i<subject.length(); i++) { char ch = subject.charAt(i); if ( ch == ' ') { // whitespace detected // if already detected before if ( whitespace ) count++; whitespace = true; } else { whitespace = false; } } // check for at least 10 whitespaces if ( count > 10 ) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/SubjectIsAllCapitalsRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[] { "Subject"}); String subject = header.get("Subject"); if (subject == null) return NEARLY_ZERO; if (subject.length() == 0) return NEARLY_ZERO; if (subject.equals(subject.toUpperCase())) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/RuleList.java
public ProbabilityMap getProbabilities(IMailbox folder, Object uid) throws Exception { ProbabilityMap map = new ProbabilityMapImpl(); Iterator it = list.iterator(); while (it.hasNext()) { Rule rule = (Rule) it.next(); LOG.info("rule " + rule.getName()); float score = rule.score(folder, uid); LOG.info("score=" + score); map.addToken(new Token(rule.getName()), score); } return map; }
// in java/org/columba/mail/spam/rules/MixedCharactersAddressRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[] { "From"}); String from = header.get("From"); if (from == null) return NEARLY_ZERO; if (from.length() == 0) return NEARLY_ZERO; int count = 0; for (int i = 0; i < from.length(); i++) { if (Character.isDigit(from.charAt(i))) count++; } // if 1/3 of all characters are digits if ( count > from.length()/3) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/SpamController.java
public boolean scoreMessage(IMailbox mailbox, Object uid) throws Exception { return spamPlugin.scoreMessage(mailbox, uid); }
// in java/org/columba/mail/spam/SpamController.java
public void trainMessageAsSpam(IMailbox mailbox, Object uid) throws Exception { spamPlugin.trainMessageAsSpam(mailbox, uid); }
// in java/org/columba/mail/spam/SpamController.java
public void trainMessageAsHam(IMailbox mailbox, Object uid) throws Exception { spamPlugin.trainMessageAsHam(mailbox, uid); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
public boolean scoreMessage(IMailbox mailbox, Object uid) throws Exception { // load database from file load(); // get inputstream of message body InputStream istream = CommandHelper.getBodyPart(mailbox, uid); // we are using this inpustream multiple times // --> istream will be closed by CloneStreamMaster CloneStreamMaster master = new CloneStreamMaster(istream); // get stream istream = master.getClone(); // apply additional handcrafted rules ProbabilityMap map = RuleList.getInstance().getProbabilities(mailbox, uid); float score = filter.scoreMessage(new Message(istream), map); return score >= 0.9f; }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
public void trainMessageAsSpam(IMailbox mailbox, Object uid) throws Exception { // get inputstream of message body InputStream istream = CommandHelper.getBodyPart(mailbox, uid); // get headers Header h = mailbox.getHeaderFields(uid, Message.HEADERFIELDS); // put headers in list Enumeration e = h.getKeys(); List list = new ArrayList(); while (e.hasMoreElements()) { String key = (String) e.nextElement(); list.add(h.get(key)); } // load database from file load(); try { CloneStreamMaster master = new CloneStreamMaster(istream); InputStream inputStream = master.getClone(); byte[] md5sum = MD5SumHelper.createMD5(inputStream); // close stream inputStream.close(); // get new inputstream inputStream = master.getClone(); Message message = new Message(inputStream, list, md5sum); // check if this message was already learned // -> only add if this is not the case if (db.MD5SumExists(md5sum)) { // message already exists // --> correct token data filter.correctMessageAsSpam(message); } else { // new message filter.trainMessageAsSpam(message); } // close stream inputStream.close(); // set dirty flag hasChanged = true; } catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); } catch (NoSuchAlgorithmException nsae) { } // does not occur }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
public void trainMessageAsHam(IMailbox mailbox, Object uid) throws Exception { // get inputstream of message body InputStream istream = CommandHelper.getBodyPart(mailbox, uid); // get headers Header h = mailbox.getHeaderFields(uid, Message.HEADERFIELDS); // put headers in list Enumeration e = h.getKeys(); List list = new ArrayList(); while (e.hasMoreElements()) { String key = (String) e.nextElement(); list.add(h.get(key)); } // load database from file load(); try { CloneStreamMaster master = new CloneStreamMaster(istream); InputStream inputStream = master.getClone(); byte[] md5sum = MD5SumHelper.createMD5(inputStream); // close stream inputStream.close(); // get new inputstream inputStream = master.getClone(); Message message = new Message(inputStream, list, md5sum); // check if this message was already learned if (db.MD5SumExists(md5sum)) { // message already exists // --> correct token data filter.correctMessageAsHam(message); } else { // new message filter.trainMessageAsHam(message); } // close stream inputStream.close(); // set dirty flag hasChanged = true; } catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); } catch (NoSuchAlgorithmException nsae) { } // does not occur }
// in java/org/columba/mail/spam/command/LearnMessageAsSpamCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get array of source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // update status message if (uids.length > 1) { // TODO (@author fdietz): i18n worker.setDisplayText("Training messages..."); worker.setProgressBarMaximum(uids.length); } for (int j = 0; j < uids.length; j++) { if (worker.cancelled()) { break; } try { // train message as spam SpamController.getInstance().trainMessageAsSpam(srcFolder, uids[j]); if (uids.length > 1) { worker.setProgressBarValue(j); } } catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } } } }
// in java/org/columba/mail/spam/command/CommandHelper.java
public static InputStream getBodyPart(IMailbox folder, Object uid) throws Exception { MimeTree mimePartTree = folder.getMimePartTree(uid); List l = mimePartTree.getLeafsWithContentType(mimePartTree .getRootMimeNode(), "text"); if (l.size() > 1) { Vector streamList = new Vector(); Iterator it = l.iterator(); while (it.hasNext()) { MimePart mp = (MimePart) it.next(); InputStream s = getBodyPartStream(folder, uid, mp); streamList.add(s); } SequenceInputStream stream = new SequenceInputStream(streamList .elements()); return stream; } else if (l.size() == 1) { MimePart mp = (MimePart) l.get(0); InputStream s = getBodyPartStream(folder, uid, mp); return s; } else { return new ByteArrayInputStream(new byte[0]); } }
// in java/org/columba/mail/spam/command/CommandHelper.java
private static InputStream getBodyPartStream(IMailbox folder, Object uid, MimePart mp) throws Exception { InputStream bodyStream = folder.getMimePartBodyStream(uid, mp .getAddress()); int encoding = mp.getHeader().getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64: { bodyStream = new Base64DecoderInputStream(bodyStream); break; } } return bodyStream; }
// in java/org/columba/mail/spam/command/CommandHelper.java
public static AccountItem retrieveAccountItem(IMailbox folder, Object uid) throws Exception { AccountItem item = null; Object accountUid = folder.getAttribute(uid, "columba.accountuid"); if (accountUid != null) { // try to get account using the account ID item = MailConfig.getInstance().getAccountList().uidGet( ((Integer) accountUid).intValue()); } if (item == null) { // try to get the account using the email address Header header = folder.getHeaderFields(uid, new String[] { "To" }); item = MailConfig.getInstance().getAccountList().getAccount( header.get("To")); } if (item == null) { // use default account as fallback item = MailConfig.getInstance().getAccountList() .getDefaultAccount(); } return item; }
// in java/org/columba/mail/spam/command/LearnMessageAsHamCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get array of source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // update status message if (uids.length > 1) { // TODO (@author fdietz): i18n worker.setDisplayText("Training messages..."); worker.setProgressBarMaximum(uids.length); } long startTime = System.currentTimeMillis(); for (int j = 0; j < uids.length; j++) { if (worker.cancelled()) { break; } try { // train message as ham SpamController.getInstance().trainMessageAsHam(srcFolder, uids[j]); if (uids.length > 1) { worker.setProgressBarValue(j); } } catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } } } long endTime = System.currentTimeMillis(); LOG.info("took me=" + (endTime - startTime) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
public void updateGUI() throws Exception { // update table if (markAsSpamCommand != null) { markAsSpamCommand.updateGUI(); } if (markAsNotSpamCommand != null) { markAsNotSpamCommand.updateGUI(); } }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs uids = r.getUids(); // get source folder srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // update status message // TODO (@author fdietz): i18n worker.setDisplayText("Scoring messages ..."); worker.setProgressBarMaximum(uids.length); ArrayList spamList = new ArrayList(); ArrayList nonspamList = new ArrayList(); for (int j = 0; j < uids.length; j++) { if (worker.cancelled()) { return; } try { // score message boolean result = scoreMessage(j); // if message is spam if (result) { // mark message as spam spamList.add(uids[j]); } else { // mark message as *not* spam nonspamList.add(uids[j]); } // train message as spam or non spam trainMessage(j, result); worker.setProgressBarValue(j); if (worker.cancelled()) { break; } } catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } } } // mark spam messages if (spamList.size() != 0) { MailFolderCommandReference ref = new MailFolderCommandReference( srcFolder, spamList.toArray()); ref.setMarkVariant(MarkMessageCommand.MARK_AS_SPAM); markAsSpamCommand = new MarkMessageCommand(ref); markAsSpamCommand.execute(worker); } // mark non spam messages if (nonspamList.size() != 0) { MailFolderCommandReference ref = new MailFolderCommandReference( srcFolder, nonspamList.toArray()); ref.setMarkVariant(MarkMessageCommand.MARK_AS_NOTSPAM); markAsNotSpamCommand = new MarkMessageCommand(ref); markAsNotSpamCommand.execute(worker); } }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
private boolean scoreMessage(int j) throws Exception, IOException { // calculate message score boolean result = SpamController.getInstance().scoreMessage(srcFolder, uids[j]); // message belongs to which account? AccountItem item = CommandHelper .retrieveAccountItem(srcFolder, uids[j]); if (item.getSpamItem().checkAddressbook()) { // check if sender is already in addressbook boolean isInAddressbook = new AddressbookFilter().process( srcFolder, uids[j]); result = result && !isInAddressbook; } return result; }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
private void trainMessage(int j, boolean result) throws Exception { // add this message to frequency database if (result) { SpamController.getInstance().trainMessageAsSpam(srcFolder, uids[j]); } else { SpamController.getInstance().trainMessageAsHam(srcFolder, uids[j]); } }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinPlugin.java
public boolean scoreMessage(IMailbox mailbox, Object uid) throws Exception { InputStream rawMessageSource = mailbox.getMessageSourceStream(uid); IPCHelper ipcHelper = new IPCHelper(); // "-L" use local tests only // String cmd = "spamassassin -L"; // String cmd = "spamc -c -L"; String cmd = ExternalToolsHelper.getSpamc() + " -c"; String result = null; int exitVal = -1; try { LOG.info("creating process.."); ipcHelper.executeCommand(cmd); LOG.info("sending to stdin.."); ipcHelper.send(rawMessageSource); exitVal = ipcHelper.waitFor(); LOG.info("exitcode=" + exitVal); LOG.info("retrieving output.."); result = ipcHelper.getOutputString(); ipcHelper.waitForThreads(); } catch (Exception ex) { ex.printStackTrace(); } if (result == null) { return false; } if (exitVal == 1) { // spam found return true; } else { return false; } }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinPlugin.java
public void trainMessageAsSpam(IMailbox mailbox, Object uid) throws Exception { InputStream rawMessageSource = mailbox.getMessageSourceStream(uid); IPCHelper ipcHelper = new IPCHelper(); LOG.info("creating process.."); // --no-rebuild option is deprecated in recent SpamAssassin versions /* ipcHelper.executeCommand(ExternalToolsHelper.getSALearn() + " --no-rebuild --spam --single"); */ ipcHelper.executeCommand(ExternalToolsHelper.getSALearn() + " --no-sync --spam --single"); LOG.info("sending to stdin.."); ipcHelper.send(rawMessageSource); int exitVal = ipcHelper.waitFor(); LOG.info("exitcode=" + exitVal); LOG.info("retrieving output.."); String result = ipcHelper.getOutputString(); LOG.info("output=" + result); ipcHelper.waitForThreads(); }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinPlugin.java
public void trainMessageAsHam(IMailbox mailbox, Object uid) throws Exception { InputStream rawMessageSource = mailbox.getMessageSourceStream(uid); IPCHelper ipcHelper = new IPCHelper(); LOG.info("creating process.."); // --no-rebuild option is deprecated in recent SpamAssassin versions ipcHelper.executeCommand(ExternalToolsHelper.getSALearn() + " --no-sync --ham --single"); LOG.info("sending to stdin.."); ipcHelper.send(rawMessageSource); int exitVal = ipcHelper.waitFor(); LOG.info("exitcode=" + exitVal); LOG.info("retrieving output.."); String result = ipcHelper.getOutputString(); LOG.info("output=" + result); ipcHelper.waitForThreads(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public void executeCommand(String command) throws Exception { p = Runtime.getRuntime().exec(command); errorStream = new StreamThread(p.getErrorStream()); outputStream = new StreamThread(p.getInputStream()); inputStream = p.getOutputStream(); errorStream.start(); outputStream.start(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public void send(String in) throws Exception { inputStream.write(in.getBytes()); inputStream.flush(); inputStream.close(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public void send(InputStream in) throws Exception { StreamUtils.streamCopy(in, inputStream); inputStream.flush(); inputStream.close(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public int waitFor() throws Exception { int exitVal = p.waitFor(); return exitVal; }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public String getErrorString() throws Exception { String str = errorStream.getBuffer(); return str; }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public String getOutputString() throws Exception { String str = outputStream.getBuffer(); return str; }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public void waitForThreads() throws Exception { outputStream.join(); errorStream.join(); }
// in java/org/columba/mail/search/SearchFolderFactory.java
public static VirtualFolder createSearchFolder(FilterCriteria c, IMailFolder folder) throws Exception { // create search folder VirtualFolder searchFolder = createVirtualFolder(folder); // add filter criteria searchFolder.getFilter().getFilterRule().add(c); return searchFolder; }
// in java/org/columba/mail/search/SearchFolderFactory.java
public static VirtualFolder prepareSearchFolder(FilterCriteria c, IMailFolder folder) throws Exception { // create search folder VirtualFolder searchFolder = createVirtualFolder(folder); // add filter criteria searchFolder.getFilter().getFilterRule().add(c); return searchFolder; }
// in java/org/columba/mail/search/SearchFolderFactory.java
public static VirtualFolder createSearchFolder(FilterRule rule, IMailFolder folder) throws Exception { // create search folder VirtualFolder searchFolder = createVirtualFolder(folder); searchFolder.getFilter().getFilterRule().setCondition( rule.getConditionInt()); for (int i = 0; i < rule.getChildCount(); i++) { // add filter criteria searchFolder.getFilter().getFilterRule().add(rule.get(i)); } return searchFolder; }
// in java/org/columba/mail/search/SearchFolderFactory.java
public static VirtualFolder prepareSearchFolder(FilterRule rule, IMailFolder folder) throws Exception { // create search folder VirtualFolder searchFolder = createVirtualFolder(folder); searchFolder.getFilter().getFilterRule().setCondition( rule.getConditionInt()); for (int i = 0; i < rule.getChildCount(); i++) { // add filter criteria searchFolder.getFilter().getFilterRule().add(rule.get(i)); } return searchFolder; }
// in java/org/columba/mail/search/MailSearchProvider.java
private List<ISearchResult> retrieveResultData(Vector<SearchIndex> indizes, int startIndex, int resultCount) throws Exception { // ensure we are in existing result range int count = (startIndex + resultCount <= indizes.size()) ? resultCount : indizes.size(); List<ISearchResult> result = new Vector<ISearchResult>(); // gather result results for (int i = startIndex; i < count; i++) { SearchIndex idx = indizes.get(i); VirtualFolder folder = idx.folder; Object messageId = idx.messageId; // TODO @author fdietz: ensure that we don't fetch individual // headers // to reduce client/server roundtrips String title = (String) folder.getAttribute(messageId, "columba.subject"); Address from = (Address) folder.getAttribute(messageId, "columba.from"); Date date = (Date) folder.getAttribute(messageId, "columba.date"); String description = from.toString() + " " + date; VirtualHeader h = (VirtualHeader) folder.getHeaderList().get(messageId); URI uri = SearchResultBuilder.createURI(h.getSrcFolder().getId(), h.getSrcUid()); System.out.println("uri="+uri.toString()); ImageIcon statusIcon = null; Flags flags = folder.getFlags(messageId); if (flags.getDeleted()) { statusIcon = ImageLoader.getSmallIcon("user-trash.png"); } else if (flags.getAnswered()) { statusIcon = MailImageLoader .getSmallIcon("message-mail-replied.png"); } else if (flags.getDraft()) { statusIcon = MailImageLoader.getSmallIcon("edit.png"); } else if (!flags.getSeen()) { statusIcon = MailImageLoader .getSmallIcon("message-mail-unread.png"); } else if (flags.getSeen()) { statusIcon = MailImageLoader .getSmallIcon("message-mail-read.png"); } String dateString = new DateHelper().format(date); result.add(new MailSearchResult(title, description, uri, dateString, date, from, statusIcon, flags.getFlagged())); } return result; }
// in java/org/columba/mail/folder/imap/UpdateFlagCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get IMAP rootfolder IMAPFolder srcFolder = (IMAPFolder) r.getSourceFolder(); srcFolder.updateFlag(flag); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void removeFolder() throws Exception { try { if (existsOnServer) { String path = getImapPath(); getServer().deleteFolder(path); } super.removeFolder(); } catch (Exception e) { throw e; } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void setName(String name) throws Exception { if (getName() == null) { // if creating new folder super.setName(name); return; } String oldPath = getImapPath(); LOG.info("old path=" + oldPath); String newPath = null; if (getParent() instanceof IMAPFolder) { newPath = ((IMAPFolder) getParent()).getImapPath(); } newPath += (getServer().getDelimiter() + name); LOG.info("new path=" + newPath); getServer().renameFolder(oldPath, newPath); super.setName(name); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public synchronized IHeaderList getHeaderList() throws Exception { if (headerList == null) { // header cache is stored in "headerlist" subfolder File headercacheDirectory = new File(getDirectoryFile(), "headerlist"); headerList = new BerkeleyDBHeaderList(headercacheDirectory, getId()); headerList .addHeaderListCorruptedListener(new IHeaderListCorruptedListener() { public void headerListCorrupted(IHeaderList headerList) { headerList.clear(); getMessageFolderInfo().reset(); fireFolderPropertyChanged(); } }); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
Object[] synchronizeHeaderlist() throws Exception, IOException, CommandCancelledException, IMAPException { Object[] result = new Object[0]; // do not sync folders which have a Noselect flag if (!getConfiguration().getBooleanWithDefault("selectable", true)) return result; // Check if the mailbox has changed MailboxStatus status = getServer().getStatus(this); if (status.getMessages() == 0) { purgeHeaderList(); syncMailboxInfo(status); return result; } if (!firstSync && status.getMessages() == this.getMessageFolderInfo() .getExists()) { return result; } List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); int largestLocalUid = localUids.size() > 0 ? ((Integer) localUids .get(localUids.size() - 1)).intValue() : -1; int largestRemoteUid = getServer().getLargestRemoteUid(this, status); if (localUids.size() == status.getMessages() && largestRemoteUid == largestLocalUid) { // Seems to be no change! if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } return result; } printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); largestRemoteUid = getServer().fetchUid( new SequenceSet(SequenceEntry.STAR), this); if (largestRemoteUid == -1) { largestRemoteUid = getServer().fetchUid( new SequenceSet(status.getMessages()), this); } int largestLocalUidIndex = findLargestLocalUidIndex(localUids); int newMessages = status.getMessages() - largestLocalUidIndex; /* * // Somehow there are new messages that // have a lower index -> out * of sync if (localUids.size() - status.getMessages() + newMessages < * 0) { * * LOG.severe("Folder " + getName() + " is out of sync -> recreating the * cache!"); purgeHeaderList(); // all messages are new newMessages = * status.getMessages(); // Set the index of the largest Uid to 0 // -> * ensure it works with the fetch of new // messages part below * largestLocalUidIndex = 0; largestLocalUid = -1; * * localUids.clear(); } */ LOG.fine("Found " + newMessages + " new Messages"); // If we have new messages add them to the headerlist if (newMessages > 0) { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_new_headers")); // Ensure sizes are correct getMessageFolderInfo().setExists(localUids.size()); getMessageFolderInfo().setUnseen( Math.min(getMessageFolderInfo().getUnseen(), localUids .size())); getMessageFolderInfo().setRecent(0); List newUids = fetchNewMessages(largestLocalUidIndex); localUids.addAll(newUids); if (newUids.size() < newMessages) { // There are still more messages to update // -> issue another fetch messages command CommandProcessor.getInstance().addOp( new FetchMessagesCommand( new MailFolderCommandReference(this), newMessages, largestLocalUidIndex, newUids .size())); } else { fetchDone(); } result = newUids.toArray(new Object[0]); } else { // Number of deleted messages is computed from exists on imap and // local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } } return result; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void findRemovedMessages(MailboxStatus status, List localUids) throws Exception, IOException, IMAPException, CommandCancelledException { int largestRemoteUid = getServer().getLargestRemoteUid(this); int deletedMessages = localUids.size() - status.getMessages(); LOG.fine("Found " + deletedMessages + " deleted Messages"); // Find the messages that have been deleted if (deletedMessages > 0) { int found = 0; // First deleted all local uids that // are larger than the largest remote uid while (localUids.size() > 0 && found != deletedMessages && ((Integer) localUids.get(localUids.size() - 1)) .intValue() > largestRemoteUid) { Flags flags = getHeaderList().remove( localUids.get(localUids.size() - 1)).getFlags(); fireMessageRemoved(localUids.remove(localUids.size() - 1), flags); found++; } // Search in packs beginning from newest to oldest // -> in most cases this should save us a lot of uid fetchings to // find the deleted messages // Pack size is min 10, max 200 else mailboxsize / 10 int packSize = Math.min(Math.max(deletedMessages, status .getMessages() / 10), 200); int upper = status.getMessages(); int localPointer = localUids.size() - 1; // Fetch Pack outer loop while (upper >= 1 && found != deletedMessages) { SequenceSet set = new SequenceSet(); set.add(Math.max(upper - packSize + 1, 1), upper); // Fetch these uids and compare them to the // local list Integer[] actUids = getServer().fetchUids(set, this); // Compare inner loop for (int i = actUids.length - 1; i >= 0 && found != deletedMessages; i--) { // Find missing uids loop while (found != deletedMessages && localPointer >= 0 && !localUids.get(localPointer).equals(actUids[i])) { // We found the uid of a deleted message // -> remove it from the headerlist getHeaderList().remove(localUids.get(localPointer)); found++; localPointer--; } // next position in the local uid list localPointer--; } upper = upper - packSize; } // All the other local mails are deleted while (found < deletedMessages && localPointer >= 0) { getHeaderList().remove(localUids.get(localPointer--)); found++; } if (found != deletedMessages) { LOG.severe("Assertion failed : found only " + found + " of " + deletedMessages); } } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void purgeHeaderList() throws Exception { ICloseableIterator it = getHeaderList().keyIterator(); while (it.hasNext()) { Object uid = it.next(); fireMessageRemoved(uid, getHeaderList().get(uid).getFlags()); } it.close(); getHeaderList().clear(); getMessageFolderInfo().reset(); fireFolderPropertyChanged(); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
List fetchNewMessages(int startIndex) throws IOException, IMAPException, CommandCancelledException, Exception { IMAPFlags[] newFlags = getServer().fetchFlagsListStartFrom2( startIndex + 1, this); List newUids = new ArrayList(newFlags.length); // Build a list of the new uids for (int i = 0; i < newFlags.length; i++) { // Update the list of new and local uids newUids.add(newFlags[i].getUid()); } // Fetch the headers of the new messages ... getServer().fetchHeaderList(getHeaderList(), newUids, this); // .. and set the flags setFlags(newFlags); // fire message added updates for (int i = 0; i < newFlags.length; i++) { fireMessageAdded(newFlags[i].getUid(), newFlags[i]); } return newUids; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void synchronizeFlags(MailboxStatus status) throws Exception, IOException, CommandCancelledException, IMAPException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_flags")); MailboxStatus flagStatus = new MailboxStatus(); flagStatus.setMessages(status.getMessages()); // Build the remote lists of messages that are UNSEEN, FLAGGED, DELETED, // JUNK SearchKey unseenKey = new SearchKey(SearchKey.UNSEEN); List remoteUnseenUids = Arrays.asList(getServer().search(unseenKey, this)); flagStatus.setUnseen(remoteUnseenUids.size()); SearchKey flaggedKey = new SearchKey(SearchKey.FLAGGED); List remoteFlaggedUids = Arrays.asList(getServer().search(flaggedKey, this)); SearchKey deletedKey = new SearchKey(SearchKey.DELETED); List remoteDeletedUids = Arrays.asList(getServer().search(deletedKey, this)); SearchKey recentKey = new SearchKey(SearchKey.RECENT); List remoteRecentUids = Arrays.asList(getServer().search(recentKey, this)); flagStatus.setRecent(remoteRecentUids.size()); SearchKey junkKey = new SearchKey(SearchKey.KEYWORD, "JUNK"); List remoteJunkUids = Arrays.asList(getServer().search(junkKey, this)); SearchKey answeredKey = new SearchKey(SearchKey.ANSWERED); List remoteAnsweredUids = Arrays.asList(getServer().search(answeredKey, this)); SearchKey draftKey = new SearchKey(SearchKey.DRAFT); List remoteDraftUids = Arrays.asList(getServer().search(draftKey, this)); // update the local flags and ensure that the MailboxInfo is correct ICloseableIterator headerIterator = getHeaderList().headerIterator(); int unseen = 0; int flagged = 0; int recent = 0; int deleted = 0; int junk = 0; int answered = 0; int draft = 0; while (headerIterator.hasNext()) { IColumbaHeader header = (IColumbaHeader) headerIterator.next(); Object uid = header.get("columba.uid"); Flags flag = header.getFlags(); Flags oldFlag = (Flags) flag.clone(); int index; index = Collections.binarySearch(remoteUnseenUids, uid); flag.setSeen(index < 0); if (!flag.getSeen()) { unseen++; } index = Collections.binarySearch(remoteDeletedUids, uid); flag.setDeleted(index >= 0); if (flag.getDeleted()) { deleted++; } index = Collections.binarySearch(remoteFlaggedUids, uid); flag.setFlagged(index >= 0); if (flag.getFlagged()) { flagged++; } index = Collections.binarySearch(remoteRecentUids, uid); flag.setRecent(index >= 0); if (flag.getRecent()) { recent++; } index = Collections.binarySearch(remoteJunkUids, uid); header.getAttributes().put("columba.spam", new Boolean(index >= 0)); if (index >= 0) { junk++; } index = Collections.binarySearch(remoteAnsweredUids, uid); flag.setAnswered(index >= 0); if (flag.getAnswered()) { answered++; } index = Collections.binarySearch(remoteDraftUids, uid); flag.setDraft(index >= 0); if (flag.getDraft()) { draft++; } if (!flag.equals(oldFlag)) { getHeaderList().update(uid, header); fireMessageFlagChanged(uid, oldFlag, 0); } } headerIterator.close(); if (remoteJunkUids.size() != junk || remoteRecentUids.size() != recent || remoteFlaggedUids.size() != flagged || remoteDeletedUids.size() != deleted || remoteUnseenUids.size() != unseen || remoteAnsweredUids.size() != answered || remoteDraftUids.size() != draft) { // Something is wrong // Sync again synchronizeHeaderlist(); return; } syncMailboxInfo(flagStatus); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
protected void setFlags(Flags[] flagsList) throws Exception { for (int i = 0; i < flagsList.length; i++) { IMAPFlags flags = (IMAPFlags) flagsList[i]; Integer uid = (Integer) flags.getUid(); IColumbaHeader header = getHeaderList().get(uid); Flags localFlags = header.getFlags(); localFlags.setFlags(flags.getFlags()); // Junk flag header.getAttributes().put("columba.spam", Boolean.valueOf(flags.get(IMAPFlags.JUNK))); getHeaderList().update(uid, header); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public MimeTree getMimePartTree(Object uid) throws Exception { MimeTree tree = IMAPCache.getInstance().getMimeTree(this, uid); if (tree == null) { tree = getServer().getMimeTree(uid, this); IMAPCache.getInstance().addMimeTree(this, uid, tree); } return tree; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void innerCopy(IMailbox destiny, Object[] uids) throws Exception { IMAPFolder destFolder = (IMAPFolder) destiny; Object[] destUids = getServer().copy(destFolder, uids, this); if (destUids.length < uids.length) { LOG .warning("Some messages could not be copied because they do not exist anymore!"); } // Check if maybe no message at all got copied // In this case we are finished here if (destUids.length == 0) return; if (destFolder.mailboxSyncEnabled) { // Trigger Synchronization CommandProcessor.getInstance().addOp( new CheckForNewMessagesCommand( new MailFolderCommandReference(destFolder))); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void markMessage(Object[] uids, int variant) throws Exception { getServer().markMessage(uids, variant, this); super.markMessage(uids, variant); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void expungeFolder() throws Exception { try { getServer().expunge(this); super.expungeFolder(); } catch (Exception e) { throw e; } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public IColumbaHeader getMessageHeader(Object uid) throws Exception { return getHeaderList().get(uid); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void addSubfolder(IMailFolder child) throws Exception { if (child instanceof IMAPFolder) { getServer().createMailbox(child.getName(), this); } super.addSubfolder(child); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { PassiveHeaderParserInputStream withHeaderInputStream = new PassiveHeaderParserInputStream( in); IMAPFlags imapFlags = new IMAPFlags(flags.getFlags()); Integer uid = getServer() .append(withHeaderInputStream, imapFlags, this); // Since JUNK is a non-system Flag we have to set it with // an addtitional STORE command if (((Boolean) attributes.get("columba.spam")).booleanValue()) { imapFlags.set(IMAPFlags.JUNK, true); getServer().setFlags(new Object[] { uid }, imapFlags, this); } if (mailboxSyncEnabled) { // Trigger Synchronization CommandProcessor.getInstance().addOp( new CheckForNewMessagesCommand( new MailFolderCommandReference(this))); } return uid; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public Header getHeaderFields(Object uid, String[] keys) throws Exception { // get header with UID IColumbaHeader header = getHeaderList().get(uid); if (header == null) return new Header(); // cached headerfield list List cachedList = Arrays.asList(CachedHeaderfields .getDefaultHeaderfields()); List keyList = new ArrayList(Arrays.asList(keys)); ListTools.substract(keyList, cachedList); if (keyList.size() > 0) { return getServer().getHeaders(uid, keys, this); } else { return (Header) header.getHeader().clone(); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public InputStream getMessageSourceStream(Object uid) throws Exception { return getServer().getMessageSourceStream(uid, this); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address) throws Exception { return getServer().getMimePartSourceStream(uid, address, this); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address) throws Exception { InputStream result = IMAPCache.getInstance().getMimeBody(this, uid, address); if (result == null) { LOG.fine("Cache miss - fetching from server"); result = IMAPCache.getInstance().addMimeBody(this, uid, address, getServer().getMimePartBodyStream(uid, address, this)); } return result; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public Object addMessage(InputStream in) throws Exception { PassiveHeaderParserInputStream withHeaderInputStream = new PassiveHeaderParserInputStream( in); Integer uid = getServer().append(withHeaderInputStream, this); if (mailboxSyncEnabled) { // Trigger Synchronization CommandProcessor.getInstance().addOp( new CheckForNewMessagesCommand( new MailFolderCommandReference(this))); } return uid; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public Header getAllHeaderFields(Object uid) throws Exception { return getServer().getAllHeaders(uid, this); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void updateFlag(IMAPFlags flag) throws Exception, CommandCancelledException { if (getServer().isSelected(this)) { Integer uid = new Integer(getServer().fetchUid( new SequenceSet(flag.getIndex()), this)); flag.setUid(uid); setFlags(new Flags[] { flag }); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void save() throws Exception { super.save(); if (headerList != null) headerList.persist(); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
void fetchDone() throws IOException, CommandCancelledException, IMAPException, Exception { MailboxStatus status = getServer().getStatus(this); List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); // Number of deleted messages is computed from exists on imap and local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } // Apply filter if enabled ImapItem item = getServer().getItem(); boolean applyFilter = item.getBooleanWithDefault( "automatically_apply_filter", false); // if "automatically apply filter" is selected & there // are // new // messages if (applyFilter) { CommandProcessor.getInstance() .addOp( new ApplyFilterCommand( new MailFolderCommandReference(this))); } // Reenable Updating the mailbox mailboxSyncEnabled = true; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
protected void syncFolder(AbstractFolder parent, String name, ListInfo info) throws Exception { if ((name.indexOf(server.getDelimiter()) != -1) && (name.indexOf(server.getDelimiter()) != (name.length() - 1))) { // delimiter found // -> recursively create all necessary folders to create // -> the final folder String subchild = name.substring(0, name.indexOf(server .getDelimiter())); AbstractFolder subFolder = (AbstractFolder) parent .findChildWithName(subchild, false, IMAPFolder.class); // if folder doesn't exist already if (subFolder == null) { subFolder = new IMAPFolder(subchild, "IMAPFolder", getParentPath()); parent.add(subFolder); parent.getConfiguration().getRoot().addElement( subFolder.getConfiguration().getRoot()); FolderTreeModel.getInstance().insertNodeInto(subFolder, parent, parent.getIndex(subFolder)); ((IMAPFolder) subFolder).existsOnServer = true; subFolder.getConfiguration().setString("selectable", "false"); // this is the final folder // subFolder = addIMAPChildFolder(parent, info, subchild); } else { if (!((IMAPFolder) subFolder).existsOnServer) { ((IMAPFolder) subFolder).existsOnServer = true; subFolder.getConfiguration().setString("selectable", "false"); } } // recursively go on syncFolder(subFolder, name.substring(name.indexOf(server .getDelimiter()) + server.getDelimiter().length()), info); } else { // no delimiter found // -> this is already the final folder // if folder doesn't exist already AbstractFolder subFolder = (AbstractFolder) parent .findChildWithName(name, false, IMAPFolder.class); if (subFolder == null) { subFolder = new IMAPFolder(name, "IMAPFolder", getParentPath()); parent.add(subFolder); parent.getConfiguration().getRoot().addElement( subFolder.getConfiguration().getRoot()); FolderTreeModel.getInstance().insertNodeInto(subFolder, parent, parent.getIndex(subFolder)); } ((IMAPFolder) subFolder).existsOnServer = true; // Check the Noselect flag if (info.getParameter(ListInfo.NOSELECT)) { subFolder.getConfiguration().setString("selectable", "false"); } else { subFolder.getConfiguration().setString("selectable", "true"); } // Check the Noinferior flag if (info.getParameter(ListInfo.NOINFERIORS) && info.getDelimiter() != null) { subFolder.getConfiguration().setString("noinferiors", "true"); } else { subFolder.getConfiguration().setString("noinferiors", "false"); } } }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
private boolean removeNotMarkedSubfolders(AbstractFolder parent) throws Exception { AbstractFolder child; // first remove all subfolders recursively for (int i = 0; i < parent.getChildCount(); i++) { child = (AbstractFolder) parent.getChildAt(i); if (child instanceof IMAPFolder) { if (removeNotMarkedSubfolders(child)) { // A child got removed -> stay at this position to // get the next i--; } } } // maybe remove this folder if (parent instanceof IMAPFolder) { if (!((IMAPFolder) parent).existsOnServer) { FolderTreeModel.getInstance().removeNodeFromParent(parent); parent.removeFolder(); return true; } } return false; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public void syncSubscribedFolders() throws Exception { // first clear all flags markAllSubfoldersAsExistOnServer(this, false); IMAPFolder inbox = (IMAPFolder) this.findChildWithName("INBOX", false); inbox.existsOnServer = true; try { // create and tag all subfolders on server ListInfo[] listInfo = getServer().fetchSubscribedFolders(); for (int i = 0; i < listInfo.length; i++) { ListInfo info = listInfo[i]; LOG.fine("delimiter=" + getServer().getDelimiter()); String folderPath = info.getName(); syncFolder(this, folderPath, info); } } catch (Exception ex) { ex.printStackTrace(); } // This fixes the strange behaviour of the courier imapserver // which sets the \Noselect flag on INBOX inbox.getConfiguration().setString("selectable", "true"); removeNotMarkedSubfolders(this); findSpecialFolders(); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public Object[] searchMessages(Filter filter, Object[] uids) throws Exception { return null; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public Object[] searchMessages(Filter filter) throws Exception { return null; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public void addSubfolder(IMailFolder child) throws Exception { if (child instanceof IMAPFolder) { getServer().createMailbox(child.getName(), null); } super.addSubfolder(child); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public void setInbox(IMAPFolder inbox) throws Exception { super.addSubfolder(inbox); super.add(inbox); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public void save() throws Exception { LOG.info("Logout from IMAPServer " + getName()); getServer().logout(); }
// in java/org/columba/mail/folder/imap/FetchMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); IMAPFolder imapFolder = (IMAPFolder) r.getSourceFolder(); worker.setProgressBarMaximum(newMessages); worker.setProgressBarValue(fetchedMessages); int fetched = imapFolder.fetchNewMessages(offset + fetchedMessages).size(); fetchedMessages += fetched; worker.setProgressBarValue(fetchedMessages); if( worker.cancelled()) { return; } if(fetched > 0 && fetchedMessages < newMessages) { CommandProcessor.getInstance().addOp( new FetchMessagesCommand( new MailFolderCommandReference(imapFolder), newMessages, offset, fetchedMessages)); } else { // Trigger any pending Flag syncs imapFolder.fetchDone(); } }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // register for status events ((StatusObservableImpl) imapFolder.getObservable()).setWorker(worker); // Find old numbers int total = imapFolder.getMessageFolderInfo().getExists(); // check for new headers Object[] uids = new Object[0]; try { uids = imapFolder.synchronizeHeaderlist(); } catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); } // Get the new numbers int newTotal = imapFolder.getMessageFolderInfo().getExists(); // fire new message event to interested listeners if (triggerNotification && (newTotal != total) ) { if( ((IMAPRootFolder)imapFolder.getRootFolder()).getAccountItem().getImapItem().getBoolean("enable_sound")) { // create reference of newly arrived messages IMailFolderCommandReference ref = new MailFolderCommandReference(imapFolder, uids); // fire event MailCheckingManager.getInstance().fireNewMessageArrived(ref); } } }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
public void updateGUI() throws Exception { // Reenable the action if( action != null) action.setEnabled(true); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void save() throws Exception { saveMessageFolderInfo(); if (getSearchEngine() != null) { getSearchEngine().save(); } }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
protected void updateMailFolderInfo(Flags flags, int variant) throws Exception { boolean updated = false; if (flags == null) { return; } try { switch (variant) { case MarkMessageCommand.MARK_AS_READ: { if (flags.getRecent()) { getMessageFolderInfo().decRecent(); updated = true; } if (!flags.getSeen()) { getMessageFolderInfo().decUnseen(); updated = true; } break; } case MarkMessageCommand.MARK_AS_UNREAD: { if (flags.getSeen()) { getMessageFolderInfo().incUnseen(); updated = true; } break; } case MarkMessageCommand.MARK_AS_EXPUNGED: { if (!flags.getSeen()) { getMessageFolderInfo().decUnseen(); updated = true; } if (flags.getRecent()) { getMessageFolderInfo().decRecent(); updated = true; } break; } case MarkMessageCommand.MARK_AS_RECENT: { if (!flags.getRecent()) { getMessageFolderInfo().incRecent(); updated = true; } break; } case MarkMessageCommand.MARK_AS_NOTRECENT: { if (flags.getRecent()) { getMessageFolderInfo().decRecent(); updated = true; } break; } } } catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); } // update treenode if (updated) fireFolderPropertyChanged(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
protected void markMessage(Object uid, int variant) throws Exception { IColumbaHeader header = getHeaderList().get(uid); Flags flags = header.getFlags(); updateMailFolderInfo(flags, variant); if (flags == null) { return; } Flags oldFlags = (Flags) flags.clone(); switch (variant) { case MarkMessageCommand.MARK_AS_READ: { flags.setSeen(true); flags.setRecent(false); break; } case MarkMessageCommand.MARK_AS_UNREAD: { flags.setSeen(false); break; } case MarkMessageCommand.MARK_AS_FLAGGED: { flags.setFlagged(true); break; } case MarkMessageCommand.MARK_AS_UNFLAGGED: { flags.setFlagged(false); break; } case MarkMessageCommand.MARK_AS_EXPUNGED: { flags.setSeen(true); flags.setRecent(false); flags.setDeleted(true); break; } case MarkMessageCommand.MARK_AS_UNEXPUNGED: { flags.setDeleted(false); break; } case MarkMessageCommand.MARK_AS_ANSWERED: { flags.setAnswered(true); break; } case MarkMessageCommand.MARK_AS_UNANSWERED: { flags.setAnswered(false); break; } case MarkMessageCommand.MARK_AS_SPAM: { header.getAttributes().put("columba.spam", Boolean.TRUE); break; } case MarkMessageCommand.MARK_AS_NOTSPAM: { header.getAttributes().put("columba.spam", Boolean.FALSE); break; } case MarkMessageCommand.MARK_AS_DRAFT: { flags.setDraft(true); break; } case MarkMessageCommand.MARK_AS_NOTDRAFT: { flags.setDraft(false); break; } case MarkMessageCommand.MARK_AS_RECENT: { flags.setRecent(true); break; } case MarkMessageCommand.MARK_AS_NOTRECENT: { flags.setRecent(false); break; } } setChanged(true); header.setFlags(flags); getHeaderList().update(uid, header); fireMessageFlagChanged(uid, oldFlags, variant); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void markMessage(Object[] uids, int variant) throws Exception { for (int i = 0; i < uids.length; i++) { if (exists(uids[i])) { markMessage(uids[i], variant); } } }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void expungeFolder() throws Exception { // get list of all uids Object[] uids = getUids(); for (int i = 0; i < uids.length; i++) { Object uid = uids[i]; if (uid == null) { continue; } // if message with uid doesn't exist -> skip if (!exists(uid)) { LOG.info("uid " + uid + " doesn't exist"); continue; } if (getFlags(uid).getDeleted()) { // move message to trash if marked as expunged LOG.info("removing uid=" + uid); // remove message removeMessage(uid); } } }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void removeMessage(Object uid) throws Exception { // remove from header-list IColumbaHeader header = getHeaderList().remove(uid); // notify listeners fireMessageRemoved(uid, header.getFlags()); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public boolean exists(Object uid) throws Exception { return getHeaderList().exists(uid); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Object[] getUids() throws Exception { return getHeaderList().getUids(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void setAttribute(Object uid, String key, Object value) throws Exception { IColumbaHeader header = getHeaderList().get(uid); Flags flags = header.getFlags(); if (flags == null) { return; } Flags oldFlags = (Flags) flags.clone(); header.getAttributes().put(key, value); getHeaderList().update(uid, header); // set folder changed flag // -> if not, the header cache wouldn't notice that something // -> has changed. And wouldn't save the changes. setChanged(true); fireMessageFlagChanged(uid, oldFlags, 0); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Flags getFlags(Object uid) throws Exception { return getHeaderList().get(uid).getFlags(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Attributes getAttributes(Object uid) throws Exception { return getHeaderList().get(uid).getAttributes(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Object getAttribute(Object uid, String key) throws Exception { return getHeaderList().get(uid).getAttributes().get(key); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Object[] searchMessages(IFilter filter, Object[] uids) throws Exception { // if there is no search engine, try the default one if (getSearchEngine() == null) return (new DefaultSearchEngine(this)).searchMessages(filter, uids); return getSearchEngine().searchMessages(filter, uids); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Object[] searchMessages(IFilter filter) throws Exception { // if there is no search engine, try the default one if (getSearchEngine() == null) return (new DefaultSearchEngine(this)).searchMessages(filter); return getSearchEngine().searchMessages(filter); }
// in java/org/columba/mail/folder/mailboximport/MHImporter.java
public void importMailboxFile(File directory, IWorkerStatusController worker, IMailbox destFolder) throws Exception { File[] list = directory.listFiles(MHMessageFileFilter.getInstance()); for (int i = 0; i < list.length; i++) { File file = list[i]; String name = file.getName(); if (name.equals(".") || name.equals("..")) { continue; } if (name.startsWith(".")) { continue; } if ((file.exists()) && (file.length() > 0)) { importMessage(file, worker); } } }
// in java/org/columba/mail/folder/mailboximport/MHImporter.java
protected void importMessage(File file, IWorkerStatusController worker) throws Exception { StringBuffer strbuf = new StringBuffer(); BufferedReader in = new BufferedReader(new FileReader(file)); String str; strbuf = new StringBuffer(); while ((str = in.readLine()) != null) { strbuf.append(str + "\n"); } in.close(); saveMessage(strbuf.toString(), worker, getDestinationFolder()); }
// in java/org/columba/mail/folder/mailboximport/MozillaImporter.java
public void importMailboxFile(File file, IWorkerStatusController worker, IMailbox destFolder) throws Exception { int count = 0; boolean sucess = false; StringBuffer strbuf = new StringBuffer(); BufferedReader in = new BufferedReader(new FileReader(file)); String str; // parse line by line while ((str = in.readLine()) != null) { // if user cancelled task exit immediately if (worker.cancelled()) { return; } // if line doesn't start with "From" or line length is 0 // -> save everything in StringBuffer if (!str.startsWith("From ") || str.length() == 0) { strbuf.append(str + "\n"); } else { // line contains "-" (mozilla mbox style) // -> import message in Columba if (str.indexOf("-") != -1) { if (strbuf.length() != 0) { // found new message saveMessage(strbuf.toString(), worker, getDestinationFolder()); count++; sucess = true; } strbuf = new StringBuffer(); } else { strbuf.append(str + "\n"); } } } // save last message, because while loop aborted before being able to // save message if (sucess && strbuf.length() > 0) { saveMessage(strbuf.toString(), worker, getDestinationFolder()); } in.close(); }
// in java/org/columba/mail/folder/mailboximport/EvolutionImporter.java
public void importMailboxFile(File file, IWorkerStatusController worker, IMailbox destFolder) throws Exception { int count = 0; boolean sucess = false; StringBuffer strbuf = new StringBuffer(); BufferedReader in = new BufferedReader(new FileReader(file)); String str; // parse line by line while ((str = in.readLine()) != null) { // if user cancelled task exit immediately if (worker.cancelled() == true) { return; } // if line doesn't start with "From" or line length is 0 // -> save everything in StringBuffer if ((str.startsWith("From ") == false) || (str.length() == 0)) { strbuf.append(str + "\n"); } else { // line contains "@" (evolution mbox style) or // -> import message in Columba if (str.indexOf("@") != -1) { if (strbuf.length() != 0) { // found new message saveMessage(strbuf.toString(), worker, getDestinationFolder()); count++; sucess = true; } strbuf = new StringBuffer(); } else { strbuf.append(str + "\n"); } } } // save last message, because while loop aborted before being able to // save message if ((sucess == true) && (strbuf.length() > 0)) { saveMessage(strbuf.toString(), worker, getDestinationFolder()); } in.close(); }
// in java/org/columba/mail/folder/mailboximport/AbstractMailboxImporter.java
protected void saveMessage(String rawString, IWorkerStatusController worker, IMailbox destFolder) throws Exception { /* * *20031231, karlpeder* Using InputStream instead of rawString * directly. Ensures size is set correctly by addMessage (bug #843657) */ SourceInputStream in = new SourceInputStream(new CharSequenceSource( rawString)); destFolder.addMessage(in); in.close(); counter++; //TODO (@author fdietz): i18n worker.setDisplayText("Importing messages: " + getCount()); }
// in java/org/columba/mail/folder/mailboximport/PegasusMailImporter.java
public void importMailboxFile(File file, IWorkerStatusController worker, IMailbox destFolder) throws Exception { int count = 0; boolean sucess = false; StringBuffer strbuf = new StringBuffer(); BufferedReader in = new BufferedReader(new FileReader(file)); String str; // parse line by line while ((str = in.readLine()) != null) { // if user cancelled task exit immediately if (worker.cancelled() == true) { return; } // if line doesn't start with "From ???@???" or line length is 0 // -> save everything in StringBuffer if ((str.startsWith("From ???@???") == false) || (str.length() == 0)) { strbuf.append(str + "\n"); } else { if (strbuf.length() != 0) { // found new message saveMessage(strbuf.toString(), worker, getDestinationFolder()); count++; sucess = true; } strbuf = new StringBuffer(); } } // save last message, because while loop aborted before being able to // save message if ((sucess == true) && (strbuf.length() > 0)) { saveMessage(strbuf.toString(), worker, getDestinationFolder()); } in.close(); }
// in java/org/columba/mail/folder/mailboximport/MBOXImporter.java
public void importMailboxFile(File file, IWorkerStatusController worker, IMailbox destFolder) throws Exception { FileSource mboxSource = new FileSource(file); MboxMessage[] messages = MboxParser.parseMbox(mboxSource); mboxSource.close(); LOG.info("Found " + messages.length + " messages in MBOX file"); //$NON-NLS-1$ //$NON-NLS-2$ SteerableInputStream in = new SteerableInputStream(new FileInputStream(file)); worker.setProgressBarMaximum(messages.length); for( int i=0; i<messages.length && !worker.cancelled(); i++) { worker.setProgressBarValue(i); in.setPosition(messages[i].getStart()); in.setLengthLeft(messages[i].getLength()); destFolder.addMessage(in); // this is necessary to do! counter++; } in.finalClose(); }
// in java/org/columba/mail/folder/outbox/OutboxFolder.java
public SendableMessage getSendableMessage(Object uid) throws Exception { ColumbaMessage message = getMessage(uid); SendableMessage sendableMessage = new SendableMessage(message); return sendableMessage; }
// in java/org/columba/mail/folder/outbox/OutboxFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { Object uid = super.addMessage(in, attributes, flags); setAttribute(uid, "columba.recipients", attributes .get("columba.recipients")); return uid; }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public void removeMessage(Object uid) throws Exception { MboxMessage message = (MboxMessage) messages.remove(uid); if (uid.equals(largestUid)) { FileChannel channel = new RandomAccessFile(mboxFile, "rw") .getChannel(); channel .truncate(mboxFile.length() - (message.getLength() + FROMLINE.length() + TERMLINE.length)); channel.close(); } else { int intUid = ((Integer) uid).intValue(); deleteFilePart(mboxFile, message.getStart() - FROMLINE.length(), message.getLength() + FROMLINE.length() + TERMLINE.length); // update message starts of following messages Enumeration uids = messages.keys(); while (uids.hasMoreElements()) { Integer actUid = (Integer) uids.nextElement(); if (actUid.intValue() > intUid) { MboxMessage m = (MboxMessage) messages.get(actUid); m .setStart(m.getStart() - (message.getLength() + FROMLINE.length() + TERMLINE.length)); } } } }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public Source getMessageSource(Object uid) throws Exception { if( ! exists(uid)) throw new FolderInconsistentException(); MboxMessage message = (MboxMessage) messages.get(uid); FileInputStream in = new FileInputStream(mboxFile); in.skip(message.getStart()); File tempFile = File.createTempFile("mbox_message", ".tmp"); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); StreamUtils.streamCopy(in, out, (int) message.getLength()); in.close(); out.close(); return new FileSource(tempFile); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public InputStream getMessageStream(Object uid) throws Exception { MboxMessage message = (MboxMessage) messages.get(uid); FileInputStream in = new FileInputStream(mboxFile); in.skip(message.getStart()); File tempFile = File.createTempFile("mbox_message", ".tmp"); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); StreamUtils.streamCopy(in, out, (int) message.getLength()); in.close(); out.close(); return new FileInputStream(tempFile); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public void saveMessage(Object uid, InputStream source) throws Exception { FileOutputStream out = new FileOutputStream(mboxFile, true); out.write(FROMLINE.getBytes("US-ASCII")); long pos = mboxFile.length(); long length = StreamUtils.streamCopy(source, out); out.write(TERMLINE); out.close(); messages.put(uid, new MboxMessage(uid, pos, length)); largestUid = uid; }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public boolean exists(Object uid) throws Exception { return messages.containsKey(uid); }
// in java/org/columba/mail/folder/mbox/CachedMboxFolder.java
public void save() throws Exception { super.save(); ((MboxDataStorage)getDataStorageInstance()).save(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public boolean exists(Object uid) throws Exception { return headerList.exists(uid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public IHeaderList getHeaderList() throws Exception { if (!active) { activate(); } else { revalidateSearch(); } return headerList; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void addSearchToHistory() throws Exception { VirtualFolder searchFolder = (VirtualFolder) FolderTreeModel .getInstance().getFolder("106"); // only create new subfolders if we used the default "Search Folder" if (!searchFolder.equals(this)) { return; } // (tstich) reduced to 3 because all need to be // search when activated on startup // we only want 3 subfolders // -> if more children exist remove them if (searchFolder.getChildCount() >= 3) { AbstractMessageFolder child = (AbstractMessageFolder) searchFolder .getChildAt(0); child.removeFolder(); } // create new subfolder String name = "search result"; VirtualFolder newFolder = null; try { newFolder = (VirtualFolder) FolderFactory.getInstance() .createChild(searchFolder, name, "VirtualFolder"); } catch (Exception ex) { ex.printStackTrace(); return; } // if creation failed if (newFolder == null) { return; } // copy all properties to the subfolder int uid = getConfiguration().getInteger("property", "source_uid"); boolean includes = getConfiguration().getBoolean("property", "include_subfolders"); IFolderItem newFolderItem = newFolder.getConfiguration(); newFolderItem.setInteger("property", "source_uid", uid); newFolderItem.setBoolean("property", "include_subfolders", includes); newFolderItem.getElement("filter").removeFromParent(); newFolderItem.getRoot().addElement( (XmlElement) getConfiguration().getElement("filter").clone()); MailFilterCriteria newc = new MailFilterCriteria(new Filter( getConfiguration().getElement("filter")).getFilterRule().get(0)); /* * FilterCriteria c = new * Filter(getConfiguration().getElement("filter")) .getFilterRule() * .get( 0); * * FilterCriteria newc = new * Filter(getConfiguration().getElement("filter")) .getFilterRule() * .get( 0); newc.setCriteria(c.getCriteriaString()); * newc.setHeaderItem(c.getHeaderItemString()); * newc.setPattern(c.getPattern()); newc.setType(c.getType()); */ // lets find a good name for our new vfolder StringBuffer buf = new StringBuffer(); if (newc.getTypeString().equalsIgnoreCase("flags")) { LOG.info("flags found"); //$NON-NLS-1$ buf.append(newc.getTypeString()); buf.append(" ("); buf.append(newc.getCriteriaString()); buf.append(" "); buf.append(newc.getPatternString()); buf.append(")"); } else if (newc.getTypeString().equalsIgnoreCase("custom headerfield")) { buf.append(newc.getHeaderfieldString()); buf.append(" ("); buf.append(newc.getCriteriaString()); buf.append(" "); buf.append(newc.getPatternString()); buf.append(")"); } else { buf.append(newc.getTypeString()); buf.append(" ("); buf.append(newc.getCriteriaString()); buf.append(" "); buf.append(newc.getPatternString()); buf.append(")"); } newFolder.setName(buf.toString()); // update tree-view FolderTreeModel.getInstance().nodeStructureChanged(searchFolder); // update tree-node (for renaming the new folder) FolderTreeModel.getInstance().nodeChanged(newFolder); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
protected void applySearch() throws Exception { IMailFolder srcFolder = getSourceFolder(); XmlElement filter = getConfiguration().getRoot().getElement("filter"); if (filter == null) { filter = new XmlElement("filter"); filter.addAttribute("description", "new filter"); filter.addAttribute("enabled", "true"); XmlElement rules = new XmlElement("rules"); rules.addAttribute("condition", "match_all"); XmlElement criteria = new XmlElement("criteria"); criteria.addAttribute("type", "Subject"); criteria.addAttribute("headerfield", "Subject"); criteria.addAttribute("criteria", "contains"); criteria.addAttribute("pattern", "pattern"); rules.addElement(criteria); filter.addElement(rules); getConfiguration().getRoot().addElement(filter); } Filter f = new Filter(getConfiguration().getRoot().getElement("filter")); applySearch(srcFolder, f); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
protected void applySearch(IMailFolder parent, Filter filter) throws Exception { if (parent instanceof IMailbox) { IMailbox folder = (IMailbox) parent; // if the parent is a virtual folder the search cannot be applied directly // look for the correct uids by finding the first non virtual folder Object[] resultUids = null; if (folder instanceof VirtualFolder) resultUids = folder.searchMessages(filter, folder.getUids()); else resultUids = folder.searchMessages(filter); if (resultUids != null) { for (int i = 0; i < resultUids.length; i++) { addFilteredMessage(resultUids[i], folder); } } } if (isRecursive()) { for (Enumeration e = parent.children(); e.hasMoreElements();) { IMailFolder folder = (IMailFolder) e.nextElement(); if (folder instanceof VirtualFolder) { continue; } applySearch(folder, filter); } } }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
private void addFilteredMessage(Object resultUid, IMailbox folder) throws Exception { String[] headerfields = CachedHeaderfields.getDefaultHeaderfields(); ColumbaHeader header = null; if (folder instanceof VirtualFolder) { // get source folder reference VirtualHeader virtualHeader = ((VirtualFolder) folder) .getVirtualHeader(resultUid); IMailbox sourceFolder = virtualHeader.getSrcFolder(); Object sourceUid = virtualHeader.getSrcUid(); Header h = sourceFolder.getHeaderFields(sourceUid, headerfields); header = new ColumbaHeader(h); header.setAttributes(sourceFolder .getAttributes(sourceUid)); header.setFlags(sourceFolder.getFlags(sourceUid)); Object uid = add((ColumbaHeader) header, sourceFolder, sourceUid); fireMessageAdded(uid, getFlags(uid)); } else { if (!folder.exists(resultUid)) return; Header h = folder.getHeaderFields(resultUid, headerfields); header = new ColumbaHeader(h); header.setAttributes(folder .getAttributes(resultUid)); header.setFlags(folder.getFlags(resultUid)); Object uid = add(header, folder, resultUid); fireMessageAdded(uid, getFlags(uid)); } }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object add(ColumbaHeader header, IMailbox source, Object uid) throws Exception { Object newUid = generateNextUid(); // VirtualMessage m = new VirtualMessage(f, uid, index); VirtualHeader virtualHeader = new VirtualHeader((ColumbaHeader) header, source, uid); virtualHeader.setVirtualUid(newUid); headerList.add(virtualHeader, newUid); return newUid; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void markMessage(Object[] uids, int variant) throws Exception { List list = new ArrayList(); // Check if all uids are still exisiting for (Object uid : uids) { if (exists(uid)) { list.add(uid); } } if (list.size() == 0) return; Collections.sort(list, new Comparator() { public int compare(Object o1, Object o2) { VirtualHeader h = (VirtualHeader) headerList.get(o1); String oV1 = h.getSrcFolder().getId(); h = (VirtualHeader) headerList.get(o2); String oV2 = h.getSrcFolder().getId(); return oV1.compareTo(oV2); } }); List folderUids = new ArrayList(uids.length); Iterator it = list.iterator(); VirtualHeader h = (VirtualHeader) headerList.get(it.next()); ; folderUids.add(h.getSrcUid()); IMailbox srcFolder = h.getSrcFolder(); while (it.hasNext()) { h = (VirtualHeader) headerList.get(it.next()); if (h.getSrcFolder() == srcFolder) { folderUids.add(h.getSrcUid()); } else { srcFolder.markMessage(folderUids.toArray(), variant); // change to new folder srcFolder = h.getSrcFolder(); folderUids.clear(); folderUids.add(h.getSrcUid()); } } srcFolder.markMessage(folderUids.toArray(), variant); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void removeMessage(Object uid) throws Exception { // get source folder reference VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); // remove from source folder sourceFolder.removeMessage(sourceUid); // remove from virtual folder headerList.remove(uid); // notify listeners fireMessageRemoved(uid, getFlags(uid)); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public MimeTree getMimePartTree(Object uid) throws Exception { if (!exists(uid)) return null; VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getMimePartTree(sourceUid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object[] searchMessages(Filter filter, Object[] uids) throws Exception { if (!active) { activate(); } else { revalidateSearch(); } if (uids.length == 0) return new Object[0]; List list = new ArrayList(Arrays.asList(uids)); Collections.sort(list, new Comparator() { public int compare(Object o1, Object o2) { VirtualHeader h = (VirtualHeader) headerList.get(o1); String oV1 = h.getSrcFolder().getId(); h = (VirtualHeader) headerList.get(o2); String oV2 = h.getSrcFolder().getId(); return oV1.compareTo(oV2); } }); List resultList = new ArrayList(); List virtualHeader = new ArrayList(); VirtualHeader h = (VirtualHeader) headerList.get(list.get(0)); IMailbox sourceFolder = h.getSrcFolder(); virtualHeader.add(h); for (int i = 1; i < uids.length; i++) { h = (VirtualHeader) headerList.get(list.get(i)); if (h.getSrcFolder() != sourceFolder || i == uids.length - 1) { // Now we can search this folder since no mail from // this folder will come in the list Object[] srcUids = new Object[virtualHeader.size()]; // Create a src uid array for (int j = 0; j < virtualHeader.size(); j++) { srcUids[j] = ((VirtualHeader) virtualHeader.get(j)) .getSrcUid(); } // search the src folder with the src uid array Object[] resultUids = sourceFolder.searchMessages(filter, srcUids); // Convert the src uids back to virtual uids if ((resultUids != null) && (resultUids.length > 0)) { Object[] virtualUids = new Object[resultUids.length]; for (int j = 0; j < resultUids.length; j++) { virtualUids[j] = srcUidToVirtualUid(sourceFolder, resultUids[j]); } // Add all found virtual uids to the result resultList.addAll(Arrays.asList(virtualUids)); } virtualHeader.clear(); } // Add this header to the list for later searching virtualHeader.add(h); sourceFolder = h.getSrcFolder(); } if (virtualHeader.size() > 0) { // Now we can search this folder since no mail from // this folder will come in the list Object[] srcUids = new Object[virtualHeader.size()]; // Create a src uid array for (int j = 0; j < virtualHeader.size(); j++) { srcUids[j] = ((VirtualHeader) virtualHeader.get(j)).getSrcUid(); } // search the src folder with the src uid array Object[] resultUids = sourceFolder.searchMessages(filter, srcUids); // Convert the src uids back to virtual uids if ((resultUids != null) && (resultUids.length > 0)) { Object[] virtualUids = new Object[resultUids.length]; for (int j = 0; j < resultUids.length; j++) { virtualUids[j] = srcUidToVirtualUid(sourceFolder, resultUids[j]); } // Add all found virtual uids to the result resultList.addAll(Arrays.asList(virtualUids)); } virtualHeader.clear(); } return resultList.toArray(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object[] searchMessages(Filter filter) throws Exception { return searchMessages(filter, getUids()); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object[] getUids() throws Exception { if (!active) { activate(); } return headerList.getUids(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object addMessage(InputStream in) throws Exception { // not supported return null; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object getAttribute(Object uid, String key) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getAttribute(sourceUid, key); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Flags getFlags(Object uid) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getFlags(sourceUid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Header getHeaderFields(Object uid, String[] keys) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getHeaderFields(sourceUid, keys); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public InputStream getMessageSourceStream(Object uid) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getMessageSourceStream(sourceUid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getMimePartBodyStream(sourceUid, address); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getMimePartSourceStream(sourceUid, address); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void innerCopy(IMailbox destFolder, Object[] uids) throws Exception { List list = new ArrayList(); // Check if all uids are still exisiting for (Object uid : uids) { if (exists(uid)) { list.add(uid); } } if (list.size() == 0) return; Collections.sort(list, new Comparator() { public int compare(Object o1, Object o2) { VirtualHeader h = (VirtualHeader) headerList.get(o1); String oV1 = h.getSrcFolder().getId(); h = (VirtualHeader) headerList.get(o2); String oV2 = h.getSrcFolder().getId(); return oV1.compareTo(oV2); } }); List folderUids = new ArrayList(uids.length); Iterator it = list.iterator(); VirtualHeader h = (VirtualHeader) headerList.get(it.next()); ; folderUids.add(h.getSrcUid()); IMailbox srcFolder = h.getSrcFolder(); while (it.hasNext()) { h = (VirtualHeader) headerList.get(it.next()); if (h.getSrcFolder() == srcFolder) { folderUids.add(h.getSrcUid()); } else { srcFolder.innerCopy(destFolder, folderUids.toArray()); // change to new folder srcFolder = h.getSrcFolder(); folderUids.clear(); folderUids.add(h.getSrcUid()); } } // Copy the rest srcFolder.innerCopy(destFolder, folderUids.toArray()); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void setAttribute(Object uid, String key, Object value) throws Exception { // get header with UID /* * ColumbaHeader header = (ColumbaHeader) headerList.get(uid); * header.getAttributes().put(key, value); */ VirtualHeader h = (VirtualHeader) headerList.get(uid); h.getAttributes().put(key, value); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); sourceFolder.setAttribute(sourceUid, key, value); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Attributes getAttributes(Object uid) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getAttributes(sourceUid); /* * if (getHeaderList().containsKey(uid)) { return * getHeaderList().get(uid).getAttributes(); } else { return null; } */ }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { // not supported return null; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Header getAllHeaderFields(Object uid) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getAllHeaderFields(sourceUid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void expungeFolder() throws Exception { IMailFolder srcFolder = getSourceFolder(); boolean isInclude = Boolean.valueOf( getConfiguration().getString("property", "include_subfolders")) .booleanValue(); if (isInclude) { recursiveExpunge(srcFolder); } else { if (srcFolder instanceof IMailbox) ((IMailbox) srcFolder).expungeFolder(); } }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
private void recursiveExpunge(IMailFolder srcFolder) throws Exception { IMailFolder folder; if (srcFolder instanceof IMailbox) ((IMailbox) srcFolder).expungeFolder(); for (Enumeration e = srcFolder.children(); e.hasMoreElements();) { folder = (IMailFolder) e.nextElement(); if (folder instanceof VirtualFolder) { continue; } recursiveExpunge(folder); } }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void activate() throws Exception { if (active) return; LOG.fine("Activating virtual folder " + getName()); getMessageFolderInfo().reset(); applySearch(); registerWithSource(); active = true; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void removeFolder() throws Exception { if (active) { deactivate(); } super.removeFolder(); }
// in java/org/columba/mail/folder/virtual/ActivateVirtualFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { VirtualFolder vFolder = (VirtualFolder) ((IFolderCommandReference) getReference()) .getSourceFolder(); worker.setDisplayText(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", "activate_vfolder"), new Object[] { vFolder.getName() })); vFolder.activate(); }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public void sync() throws Exception { // method is not needed by IMAP }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public List queryEngine(IFilterRule filter) throws Exception { // pass the work to IMAPStore return folder.getServer().search(filter, folder); }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public List queryEngine(IFilterRule filter, Object[] uids) throws Exception { // pass the work to IMAPStore return folder.getServer().search(uids, filter, folder); }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public void messageAdded(Object uid) throws Exception { // method is not needed by IMAP }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public void messageRemoved(Object uid) throws Exception { // method is not needed by IMAP }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public void reset() throws Exception { // method is not needed by IMAP }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public void sync() throws Exception { }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public List queryEngine(IFilterRule filter) throws Exception { return null; }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public List queryEngine(IFilterRule filter, Object[] uids) throws Exception { return null; }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public void messageAdded(Object uid) throws Exception { }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public void messageRemoved(Object uid) throws Exception { }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public void reset() throws Exception { }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
protected boolean processRule(Object uid, IFilterCriteria criteria, String type) throws Exception { if (type == null) { JOptionPane.showMessageDialog(null, "Filter type couldn't been found", "Error occured", JOptionPane.ERROR_MESSAGE); return false; } AbstractFilter instance = getFilter(criteria, type); if (instance == null) { return false; } return instance.process(folder, uid); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
protected List processCriteria(IFilterRule rule, List uids) throws Exception { LinkedList result = new LinkedList(); boolean b; int match = rule.getConditionInt(); ListIterator it = uids.listIterator(); Object uid; // MATCH_ALL if (match == FilterRule.MATCH_ALL) { while (it.hasNext()) { b = true; uid = it.next(); for (int i = 0; (i < rule.count()) && b; i++) { IFilterCriteria criteria = rule.get(i); String type = criteria.getTypeString(); b &= processRule(uid, criteria, type); } if (b) { result.add(uid); } } }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
public Object[] searchMessages(IFilter filter, Object[] uids) throws Exception { if (!filter.getEnabled()) { // filter is disabled return new Object[] {}; } List notDefaultEngineResult = null; List defaultEngineResult = new LinkedList(); IFilterRule filterRule = filter.getFilterRule(); IFilterRule notDefaultEngine = new FilterRule(); IFilterRule defaultEngine = new FilterRule(); divideFilterRule(filterRule, notDefaultEngine, defaultEngine); if (defaultEngine.count() > 0) { try { if (uids != null) { defaultEngineResult = getNonDefaultEngine().queryEngine( defaultEngine, uids); } else { defaultEngineResult = getNonDefaultEngine().queryEngine( defaultEngine); } } catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); } } if (notDefaultEngine.count() == 0) { notDefaultEngineResult = defaultEngineResult; } else { // MATCH_ALL if (filterRule.getConditionInt() == FilterRule.MATCH_ALL) { if (defaultEngine.count() > 0) { notDefaultEngineResult = processCriteria(notDefaultEngine, defaultEngineResult); } else { if (uids != null) { notDefaultEngineResult = processCriteria( notDefaultEngine, Arrays.asList(uids)); } else { notDefaultEngineResult = processCriteria( notDefaultEngine, Arrays.asList(folder .getUids())); } } } // MATCH_ANY else { if (uids != null) { List uidList = new LinkedList(Arrays.asList(uids)); ListTools.substract(uidList, defaultEngineResult); notDefaultEngineResult = processCriteria(notDefaultEngine, uidList); notDefaultEngineResult.addAll(defaultEngineResult); } else { notDefaultEngineResult = processCriteria(notDefaultEngine, Arrays.asList(folder.getUids())); } } } /* * worker.setDisplayText( "Search Result: " + * notDefaultEngineResult.size() + " messages found in " + * (System.currentTimeMillis() - startTime) + " ms"); */ return notDefaultEngineResult.toArray(); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
public Object[] searchMessages(IFilter filter) throws Exception { if (getObservable() != null) { getObservable().setMessage( MailResourceLoader.getString("statusbar", "message", "search")); } // return searchMessages(filter, null); Object[] result = searchMessages(filter, null); if (getObservable() != null) { // clear status bar message now we are done (with a delay) getObservable().clearMessageWithDelay(); } return result; }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
protected List queryEngine(IFilterRule filter, Object[] uids) throws Exception { return processCriteria(filter, Arrays.asList(uids)); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
protected List queryEngine(IFilterRule filter) throws Exception { Object[] uids = folder.getUids(); return processCriteria(filter, Arrays.asList(uids)); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
public void sync() throws Exception { getNonDefaultEngine().sync(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public List queryEngine(IFilterRule filter) throws Exception { Query query = getLuceneQuery(filter, analyzer); List result = search(query); ListTools.substract(result, deleted); if (!checkResult(result)) { // Search again result = search(query); ListTools.substract(result, deleted); } return result; }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public List queryEngine(IFilterRule filter, Object[] uids) throws Exception { List result = queryEngine(filter); ListTools.intersect(result, Arrays.asList(uids)); return result; }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public void messageAdded(Object uid) throws Exception { Document messageDoc = getDocument(uid); IndexWriter writer = new IndexWriter(ramIndexDir, analyzer, false); writer.addDocument(messageDoc); writer.close(); incOperationCounter(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public void messageRemoved(Object uid) throws Exception { deleted.add(uid); /* * try { indexLock.tryToGetLock(null); getReader().delete(new * Term("uid", uid.toString())); indexLock.release(); } catch * (IOException e) { JOptionPane.showMessageDialog( null, * e.getMessage(), "Error while removing Message from Lucene Index", * JOptionPane.ERROR_MESSAGE); } */ }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public void reset() throws Exception { createIndex(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public void sync() throws Exception { LOG.severe("Lucene Index inconsistent - recreation forced"); IHeaderList hl = folder.getHeaderList(); if (getObservable() != null) { getObservable().setMessage( MailResourceLoader.getString("statusbar", "message", "lucene_sync")); } getObservable().setCurrent(0); try { createIndex(); IndexWriter writer = new IndexWriter(luceneIndexDir, analyzer, false); int count = hl.count(); getObservable().setCurrent(count); Object uid; int i = 0; ICloseableIterator it; for (it = hl.keyIterator(); it.hasNext();) { uid = it.next(); writer.addDocument(getDocument(uid)); getObservable().setCurrent(i); } it.close(); getObservable().setCurrent(count); writer.optimize(); writer.close(); } catch (Exception e) { LOG.severe("Creation of Lucene Index failed :" + e.getLocalizedMessage()); // show neat error dialog here } }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public boolean exists(Object uid) throws Exception { File file = new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString()); return file.exists(); }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public void removeMessage(Object uid) throws Exception { File file = new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString()); //delete the file containing the message in the file system if (!file.delete()) { // Could not delete the file - possibly someone has a lock on it LOG.warning("Could not delete " + file.getAbsolutePath() + ". Will try to delete it on exit"); // ... delete it when Columba exists instead file.deleteOnExit(); } else { LOG.info(file.getAbsolutePath() + " deleted successfully"); } }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public Source getMessageSource(Object uid) throws Exception { File file = new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString()); try { return new FileSource(file); } catch (IOException e) { throw new FolderInconsistentException(); } }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public InputStream getMessageStream(Object uid) throws Exception { return new FileInputStream( new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString())); }
// in java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java
public void updateGUI() throws Exception { FolderTreeModel.getInstance().nodeStructureChanged(parentFolder); if (vfolder != null) { //vfolder.showFilterDialog((AbstractMailFrameController) getFrameMediator()); new ConfigFrame(mediator, vfolder); } }
// in java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references to selected folder and message IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save if (uids.length == 0) { LOG.fine( "No virtual folder created since no message was selected"); return; // no message selected. } Object uid = uids[0]; parentFolder = (IMailbox) r.getSourceFolder(); //register for status events ((StatusObservableImpl) parentFolder.getObservable()).setWorker(worker); // get value of Subject, From or To header Header header = parentFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"}); String headerValue = (String) header.get(vfolderType); if (headerValue == null) { LOG.warning("Error getting " + vfolderType + " header. No virtual folder created"); return; } // create virtual folder (is attached to parentFolder) String name = vfolderType + " contains [" + headerValue + "]"; vfolder = createVirtualFolder(name, vfolderType, headerValue, parentFolder); }
// in java/org/columba/mail/folder/command/ExpungeFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // update status message worker.setDisplayText("Expunging " + srcFolder.getName() + ".."); // expunge folder srcFolder.expungeFolder(); }
// in java/org/columba/mail/folder/command/AddMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get source folder folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); // add message to folder folder.addMessage(is); is.close(); }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); OutputStream os = null; try { // create output stream os = new BufferedOutputStream(new FileOutputStream(r.getDestFile())); int counter = 0; IMailbox srcFolder; Object[] uids; InputStream in; int read; byte[] buffer = new byte[1024]; // get source folder srcFolder = (IMailbox) r.getSourceFolder(); // get array of message UIDs uids = srcFolder.getUids(); // initialize progressbar with total number of messages worker.setProgressBarMaximum(uids.length); worker.setProgressBarValue(0); // for each message in folder i for (int j = 0; (j < uids.length) && !worker.cancelled(); j++) { // get message source from folder in = new BufferedInputStream(srcFolder .getMessageSourceStream(uids[j])); // prepend From line os.write(new String("From \r\n").getBytes()); // write message source to file while ((read = in.read(buffer, 0, buffer.length)) > 0) { os.write(buffer, 0, read); } try { in.close(); } catch (IOException ioe_) { } // append newline os.write(new String("\r\n").getBytes()); os.flush(); worker.setProgressBarValue(j); counter++; } // update status message if (worker.cancelled()) { worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "export_messages_cancelled")); } else { worker.setDisplayText(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", "export_messages_success"), new Object[] { Integer.toString(counter) })); } }
// in java/org/columba/mail/folder/command/CreateFilterOnMessageCommand.java
public void updateGUI() throws Exception { if ((filter != null) && (srcFolder != null)) { FilterDialog dialog = new FilterDialog(mediator, filter); if (!dialog.wasCancelled()) { srcFolder.getFilterList().add(filter); } } }
// in java/org/columba/mail/folder/command/CreateFilterOnMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references to selected folder and message IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save if (uids.length == 0) { LOG.fine("No filter created since no message was selected"); return; // no message selected. } Object uid = uids[0]; srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // get value of Subject, From or To header Header header = srcFolder.getHeaderFields(uid, new String[] { "Subject", "From", "To" }); String headerValue = (String) header.get(filterType); if (headerValue == null) { LOG.warning("Error getting " + filterType + " header. No filter created"); return; } // create filter String descr = filterType + " contains [" + headerValue + "]"; filter = createFilter(descr, filterType, headerValue); }
// in java/org/columba/mail/folder/command/ApplyFilterCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // display status message worker.setDisplayText("Applying filter to " + srcFolder.getName() + "..."); // get filter list from folder IFilterList list = srcFolder.getFilterList(); if (list == null) { return; } // initialize progressbar worker.setProgressBarMaximum(list.count()); // for each filter for (int i = 0; i < list.count(); i++) { // update progressbar worker.setProgressBarValue(i); // get filter IFilter filter = list.get(i); // skip, if filter is disabled if ( filter.getEnabled() == false) continue; // search all messages which match this filter Object[] result = srcFolder.searchMessages(filter); if (result == null) { continue; } // if we have a result if (result.length != 0) { // create a Command for every action of this filter // -> create a compound object which encapsulates all commands CompoundCommand command = new FilterCompoundCommand(filter, srcFolder, result); // add command to scheduler //MainInterface.processor.addOp(command); command.execute(worker); } } }
// in java/org/columba/mail/folder/command/ToggleMarkCommand.java
public void execute(IWorkerStatusController worker) throws Exception { this.worker = worker; /* * // use wrapper class for easier handling of references array adapter = * new FolderCommandAdapter( (MailFolderCommandReference[]) * getReferences()); * // get array of source references MailFolderCommandReference[] r = * adapter.getSourceFolderReferences(); */ IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // which kind of mark? int markVariant = r.getMarkVariant(); // create one list containing the marked items, which have to be "unmarked" // and another list containing the items remained to be marked List<Object> list1 = new ArrayList<Object>(); List<Object> list2 = new ArrayList<Object>(); for (int j = 0; j < uids.length; j++) { Flags flags = srcFolder.getFlags(uids[j]); boolean result = false; if (markVariant == MarkMessageCommand.MARK_AS_READ) { if (flags.getSeen()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_FLAGGED) { if (flags.getFlagged()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_EXPUNGED) { if (flags.getDeleted()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_ANSWERED) { if (flags.getAnswered()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_DRAFT) { if (flags.getDraft()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_SPAM) { boolean spam = ((Boolean) srcFolder.getAttribute(uids[j], "columba.spam")).booleanValue(); if (spam) result = true; } if (result) list1.add(uids[j]); else list2.add(uids[j]); } MailFolderCommandReference ref = null; // un-mark messages if (list1.size() > 0) { ref = new MailFolderCommandReference(srcFolder, list1.toArray()); ref.setMarkVariant(-markVariant); MarkMessageCommand c = new MarkMessageCommand(ref); commandList.add(c); c.execute(worker); // train bayesian filter if ((markVariant == MarkMessageCommand.MARK_AS_SPAM) || (markVariant == MarkMessageCommand.MARK_AS_NOTSPAM)) { processSpamFilter(uids, srcFolder, -markVariant); } } // mark messages if (list2.size() > 0) { ref = new MailFolderCommandReference(srcFolder, list2.toArray()); ref.setMarkVariant(markVariant); MarkMessageCommand c = new MarkMessageCommand(ref); commandList.add(c); c.execute(worker); // train bayesian filter if ((markVariant == MarkMessageCommand.MARK_AS_SPAM) || (markVariant == MarkMessageCommand.MARK_AS_NOTSPAM)) { processSpamFilter(uids, srcFolder, markVariant); } } }
// in java/org/columba/mail/folder/command/ToggleMarkCommand.java
private void processSpamFilter(Object[] uids, IMailbox srcFolder, int markVariant) throws Exception { // update status message worker.setDisplayText("Training messages..."); worker.setProgressBarMaximum(uids.length); // mark as spam /as not spam // for each message for (int j = 0; j < uids.length; j++) { worker.setDisplayText("Training messages..."); worker.setProgressBarMaximum(uids.length); // increase progressbar value worker.setProgressBarValue(j); // cancel here if user requests if (worker.cancelled()) { break; } // message belongs to which account? AccountItem item = CommandHelper.retrieveAccountItem(srcFolder, uids[j]); // skip if account information is not available if (item == null) continue; // if spam filter is not enabled -> return if (item.getSpamItem().isEnabled() == false) continue; LOG.info("learning uid=" + uids[j]); //$NON-NLS-1$ // create reference IMailFolderCommandReference ref = new MailFolderCommandReference(srcFolder, new Object[] { uids[j] }); // create command ICommand c = null; if (markVariant == MarkMessageCommand.MARK_AS_SPAM) c = new LearnMessageAsSpamCommand(ref); else c = new LearnMessageAsHamCommand(ref); // execute command c.execute(worker); // skip if message is *not* marked as spam if (markVariant == MarkMessageCommand.MARK_AS_NOTSPAM) continue; // skip if user didn't enable this option if (item.getSpamItem().isMoveMessageWhenMarkingEnabled() == false) continue; if (item.getSpamItem().isMoveTrashSelected() == false) { // move message to user-configured folder (generally "Junk" // folder) IMailFolder destFolder = FolderTreeModel.getInstance() .getFolder(item.getSpamItem().getMoveCustomFolder()); // create reference MailFolderCommandReference ref2 = new MailFolderCommandReference( srcFolder, destFolder, new Object[] { uids[j] }); CommandProcessor.getInstance().addOp(new MoveMessageCommand(ref2)); } else { // move message to trash IMailbox trash = (IMailbox) ((RootFolder) srcFolder .getRootFolder()).getTrashFolder(); // create reference MailFolderCommandReference ref2 = new MailFolderCommandReference( srcFolder, trash, new Object[] { uids[j] }); CommandProcessor.getInstance().addOp(new MoveMessageCommand(ref2)); } } }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
protected void doExecute(IWorkerStatusController worker, String statusMessage, String errorRetryMessage, String errorIgnoreMessage, String errorCopyMessage, String errorTitle, String canceledMessage) throws Exception { // get references r = (IMailFolderCommandReference) getReference(); // get destination foldedr destFolder = (IMailbox) r.getDestinationFolder(); Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // setting lastSelection for srcFolder to null srcFolder.setLastSelection(null); LOG.fine("src=" + srcFolder + " dest=" + destFolder); // update status message worker.setDisplayText(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", statusMessage), new Object[] { destFolder.getName() })); // initialize progress bar with total number of messages worker.setProgressBarMaximum(uids.length); if (srcFolder.getRootFolder().equals(destFolder.getRootFolder())) { // folders have same root folder // -> for example: two IMAP folders on the same server // -----> this means we use server-side copying which // -----> is much faster than using inputstreams here // // also used for local folders, which saves some parsing work srcFolder.innerCopy(destFolder, uids); } else { // two different root folders // -> get inputstream from source-folder and add it to // -> destination-folder as inputstream // -----> moving of raw message source // (works also for copying from local to IMAP folders, etc. for (int j = 0; (j < uids.length) && !worker.cancelled(); j++) { if (!srcFolder.exists(uids[j])) { continue; } try { // add source to destination folder Attributes attributes = srcFolder.getAttributes(uids[j]); Flags flags = srcFolder.getFlags(uids[j]); InputStream messageSourceStream = srcFolder .getMessageSourceStream(uids[j]); destFolder.addMessage(messageSourceStream, attributes, flags); messageSourceStream.close(); } catch (IOException ioe) { String[] options = new String[] { MailResourceLoader.getString("statusbar", "message", errorRetryMessage), MailResourceLoader.getString("statusbar", "message", errorIgnoreMessage), MailResourceLoader .getString("", "global", "cancel") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("statusbar", "message", errorCopyMessage), MailResourceLoader.getString("statusbar", "message", errorTitle), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]); switch (result) { case JOptionPane.YES_OPTION: //retry copy j--; break; case JOptionPane.CANCEL_OPTION: worker.cancel(); default: continue; } } // update progress bar worker.setProgressBarValue(j); } }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { doExecute(worker, "copy_messages", "err_copy_messages_retry", "err_copy_messages_ignore", "err_copy_messages_msg", "err_copy_messages_title", "copy_messages_cancelled"); }
// in java/org/columba/mail/folder/command/MarkMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { /* * // use wrapper class for easier handling of references array adapter = * new FolderCommandAdapter( (MailFolderCommandReference[]) * getReferences()); // get array of source references * MailFolderCommandReference[] r = adapter.getSourceFolderReferences(); */ IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // which kind of mark? int markVariant = r.getMarkVariant(); // saving last selected message to the folder srcFolder.setLastSelection(uids[0]); // mark message srcFolder.markMessage(uids, markVariant); }
// in java/org/columba/mail/folder/command/RemoveFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source folder IMailbox childFolder = (IMailbox) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); // remove source folder childFolder.removeFolder(); }
// in java/org/columba/mail/folder/command/MarkFolderAsReadCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get folder that is going to be moved folderToBeRead = (IMailbox) ((IMailFolderCommandReference) getReference()).getSourceFolder(); worker.setDisplayText(MessageFormat.format( MailResourceLoader.getString("statusbar", "message", "folder_markasread"), new Object[] {folderToBeRead.getName()})); worker.clearDisplayTextWithDelay(); IMailFolderCommandReference markCommandRefs = new MailFolderCommandReference(folderToBeRead); Object[] uids = folderToBeRead.getUids(); if ((uids != null) && (uids.length > 0)) { markCommandRefs.setUids(uids); markCommandRefs.setMarkVariant(MarkMessageCommand.MARK_AS_READ); markMessageCommand = new MarkMessageCommand(markCommandRefs); markMessageCommand.execute(worker); } }
// in java/org/columba/mail/folder/command/MoveFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get folder that is going to be moved IMailFolder movedFolder = (IMailFolder) ((IFolderCommandReference) getReference()) .getSourceFolder(); // get destination folder destParentFolder = (IMailFolder) ((IFolderCommandReference) getReference()) .getDestinationFolder(); // AbstractFolder.append also automatically removes the folder // from its parent movedFolder.moveTo(destParentFolder); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); JFileChooser fileChooser = new JFileChooser(); // save each message for (int j = 0; j < uids.length; j++) { Object uid = uids[j]; LOG.info("Saving UID=" + uid); header = srcFolder.getAllHeaderFields(uid); setupMessageBodyPart(uid, srcFolder,worker); AttachmentModel attMod = new AttachmentModel(); attMod.setCollection(srcFolder.getMimePartTree(uid)); attachments = attMod.getDisplayedMimeParts(); // determine type of body part boolean ishtml = false; if (bodyHeader.getMimeType().getSubtype().equals("html")) { ishtml = true; } // setup filters and filename for file chooser dialog ExtensionFileFilter txtFilter = new ExtensionFileFilter("txt", "Text (*.txt)"); ExtensionFileFilter htmlFilter = new ExtensionFileFilter("html", "Html (*.html)"); fileChooser.resetChoosableFileFilters(); fileChooser.setAcceptAllFileFilterUsed(false); fileChooser.addChoosableFileFilter(txtFilter); fileChooser.addChoosableFileFilter(htmlFilter); // add check box for incl. of headers JCheckBox inclHeaders = new JCheckBox(MailResourceLoader.getString( "dialog", "saveas", "save_all_headers"), getInclAllHeadersOption()); fileChooser.setAccessory(inclHeaders); // setup dialog title, active filter and file name String subject = EncodedWord.decode( header.get("Subject")).toString(); String defaultName = getValidFilename(subject,true); if (ishtml) { fileChooser.setDialogTitle(MailResourceLoader.getString( "dialog", "saveas", "save_html_message")); fileChooser.setFileFilter(htmlFilter); if (defaultName.length() > 0) { fileChooser.setSelectedFile(new File(defaultName + "." + htmlFilter.getExtension())); } } else { fileChooser.setDialogTitle(MailResourceLoader.getString( "dialog", "saveas", "save_text_message")); fileChooser.setFileFilter(txtFilter); if (defaultName.length() > 0) { fileChooser.setSelectedFile(new File(defaultName + "." + txtFilter.getExtension())); } } // show dialog int res = fileChooser.showSaveDialog(null); if (res == JFileChooser.APPROVE_OPTION) { File f = fileChooser.getSelectedFile(); ExtensionFileFilter filter = (ExtensionFileFilter) fileChooser.getFileFilter(); // Add default extension if no extension is given by the user if (ExtensionFileFilter.getFileExtension(f) == null) { f = new File(f.getAbsolutePath() + "." + filter.getExtension()); } int confirm; if (f.exists()) { // file exists, user needs to confirm overwrite confirm = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "saveas", "overwrite_existing_file"), MailResourceLoader.getString("dialog", "saveas", "file_exists"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); } else { confirm = JOptionPane.YES_OPTION; } if (confirm == JOptionPane.YES_OPTION) { // store whether all headers should be incl. boolean incl = inclHeaders.isSelected(); storeInclAllHeadersOption(incl); LOG.info("Incl. all headers: " + incl); // save message if (filter.getExtension().equals(htmlFilter.getExtension())) { saveMsgBodyAsHtml(incl, f); } else { saveMsgBodyAsText(incl, f); } } } } // end of for loop over uids to save }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
private void setupMessageBodyPart(Object uid, IMailbox srcFolder, IWorkerStatusController worker) throws Exception { // Does the user prefer html or plain text? XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Get body of message depending on user preferences MimeTree mimePartTree = srcFolder.getMimePartTree(uid); MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart == null) { bodyHeader = new MimeHeader(); bodyStream = new ByteArrayInputStream(new byte[0]); } else { bodyHeader = bodyPart.getHeader(); bodyStream = srcFolder.getMimePartBodyStream(uid, bodyPart.getAddress()); } }
// in java/org/columba/mail/folder/command/TagMessageCommand.java
Override public void execute(IWorkerStatusController worker) throws Exception { // get array of source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // does not work: r.getFolderName() // does not work: r.getMessage().getUID() // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); Hashtable<Object, IFolder> mails = new Hashtable<Object, IFolder>(); // check if virtual folder, if yes, do not use these uids, use the // real uids instead if (srcFolder instanceof VirtualFolder) { // get original folder try { IHeaderList hl = ((IMailbox) r.getSourceFolder()) .getHeaderList(); for (Object uid : r.getUids()) { // should be virtual mails.put(((VirtualHeader) hl.get(uid)).getSrcUid(), ((VirtualHeader) hl.get(uid)).getSrcFolder()); } } catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); } } else { for (Object uid : r.getUids()) { mails.put(uid, r.getSourceFolder()); } } if (type == ADD_TAG) { for (Entry<Object, IFolder> entry : mails.entrySet()) { AssociationStore.getInstance().addAssociation("tagging", id, createURI(entry.getValue().getId(), entry.getKey()).toString()); } } else if (type == REMOVE_TAG) { for (Entry<Object, IFolder> entry : mails.entrySet()) { AssociationStore.getInstance().removeAssociation("tagging", id, createURI(entry.getValue().getId(), entry.getKey()).toString()); } } }
// in java/org/columba/mail/folder/command/RenameFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source folder selectedFolder = (IMailFolder) ((IFolderCommandReference) getReference()).getSourceFolder(); // get name of folder String name = ((IMailFolderCommandReference) getReference()).getFolderName(); // rename folder ((IMailFolder) selectedFolder).setName(name); }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); JFileChooser fileChooser = new JFileChooser(); // Save message source for each selected message for (int j = 0; j < uids.length; j++) { Object uid = uids[j]; LOG.info("Saving UID=" + uid); //setup save dialog String subject = (String) srcFolder.getHeaderFields(uid, new String[] { "Subject" }).get("Subject"); subject = EncodedWord.decode(subject).toString(); String defaultName = getValidFilename(subject, false); if (defaultName.length() == 0) { defaultName = srcFolder.getHeaderList().get(uid).get("columba.from").toString(); } fileChooser.setSelectedFile(new File(defaultName)); fileChooser.setDialogTitle(MailResourceLoader.getString("dialog", "saveas", "save_msg_source")); // show dialog if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) { File f = fileChooser.getSelectedFile(); if (f.exists()) { // file exists, user needs to confirm overwrite int confirm = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "saveas", "overwrite_existing_file"), MailResourceLoader.getString("dialog", "saveas", "file_exists"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (confirm == JOptionPane.NO_OPTION) { j--; continue; } } InputStream in = null; OutputStream out = null; try { // save message source under selected filename in = new BufferedInputStream(srcFolder.getMessageSourceStream(uid)); out = new BufferedOutputStream(new FileOutputStream(f)); byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer, 0, buffer.length)) > 0) { out.write(buffer, 0, read); } } catch (IOException ioe) { LOG.severe("Error saving msg source to file: " + ioe.getMessage()); JOptionPane.showMessageDialog(null, MailResourceLoader.getString("dialog", "saveas", "err_save_msg"), MailResourceLoader.getString("dialog", "saveas", "err_save_title"), JOptionPane.ERROR_MESSAGE); } finally { try { in.close(); } catch (IOException ioe) { } try { if (out != null) { out.close(); } } catch (IOException ioe) { } } } } // end of loop over selected messages }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); IContactFacade contactFacade = null; IModelFacade modelFacade = null; try { contactFacade = ServiceConnector.getContactFacade(); modelFacade = ServiceConnector.getModelFacade(); } catch (ServiceNotFoundException e) { e.printStackTrace(); return; } Vector<String> v = new Vector<String>(); // for each message for (int i = 0; i < uids.length; i++) { // get header of message Header header = folder.getHeaderFields(uids[i], new String[] { "From" }); // get sender String sender = (String) header.get("From"); v.add(sender); } // add sender to addressbook Iterator<String> it = v.listIterator(); while (it.hasNext()) { try { Address address = Address.parse(it.next()); // add contact to addressbook IContactItem contactItem = modelFacade.createContactItem(); FacadeUtil.getInstance().initContactItem(contactItem, address.getDisplayName(), address.getMailAddress()); contactFacade.addContact(contactItem); } catch (ParserException e) { e.printStackTrace(); } catch (StoreException e) { e.printStackTrace(); } } }
// in java/org/columba/mail/folder/command/SaveFolderConfigurationCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // skip if no reference available if ((getReference() != null) || (getReference() == null)) { return; } IMailFolder folderTreeNode = (IMailFolder) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); // if folder is message folder // ->TODO (@author fdietz): there should be an interface, instead of the AbstractMessageFolder // class if (folderTreeNode instanceof AbstractMessageFolder) { AbstractMessageFolder folder = (AbstractMessageFolder) folderTreeNode; // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); // save headercache folder.save(); } }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get reference IFolderCommandReference r = (IFolderCommandReference) getReference(); // selected messages Object[] uids = r.getUids(); // selected folder IMailbox folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); IContactFacade contactFacade = null; IModelFacade modelFacade = null; try { contactFacade = ServiceConnector.getContactFacade(); modelFacade = ServiceConnector.getModelFacade(); } catch (ServiceNotFoundException e) { e.printStackTrace(); return; } List<String> addresses = new ArrayList<String>(); // for every message for (int i = 0; i < uids.length; i++) { // get header of message Header header = folder.getHeaderFields(uids[i], new String[] { "From", "To", "Cc", "Bcc" }); String addrStr = (String) header.get("From"); addresses.addAll(parseAddrStr(addrStr)); addrStr = (String) header.get("To"); addresses.addAll(parseAddrStr(addrStr)); addrStr = (String) header.get("Cc"); addresses.addAll(parseAddrStr(addrStr)); addrStr = (String) header.get("Bcc"); addresses.addAll(parseAddrStr(addrStr)); } // add sender to addressbook Iterator<String> it = addresses.listIterator(); List<IContactItem> contactItems = new ArrayList<IContactItem>(); while (it.hasNext()) { try { String addrStr = it.next(); if (addrStr == null) continue; Address address = Address.parse(addrStr); // add contact to addressbook IContactItem contactItem = modelFacade.createContactItem(); FacadeUtil.getInstance().initContactItem(contactItem, address.getDisplayName(), address.getMailAddress()); contactItems.add(contactItem); } catch (ParserException e) { e.printStackTrace(); } catch (StoreException e) { e.printStackTrace(); } } contactFacade.addContacts(contactItems.toArray(new IContactItem[contactItems.size()])); }
// in java/org/columba/mail/folder/command/ColorMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get array of source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // which kind of color? int rgbValue = r.getColorValue(); // saving last selected Message to the folder srcFolder.setLastSelection(uids[0]); // get color from factory // ->factory shares color objects to save memory Color color = ColorFactory.getColor(rgbValue); // for each message for (int j = 0; j < uids.length; j++) { // set columba.color flag srcFolder.setAttribute(uids[j], "columba.color", color); } }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
public void updatedGUI() throws Exception { }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { /* * *20030604, karlpeder* Fixed minor flaws to be able to print text * messages. Further more added support for html messages. */ IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to print IMailbox srcFolder = (IMailbox) r.getSourceFolder(); //register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // Print each message for (int j = 0; j < uids.length; j++) { Object uid = uids[j]; LOG.info("Printing UID=" + uid); Header header = srcFolder.getHeaderFields(uids[j], getHeaderKeys()); setupMessageBodyPart(uid, srcFolder, worker); // Setup print document for message cDocument messageDoc = new cDocument(); messageDoc.setHeader(getMailHeader()); messageDoc.setFooter(getMailFooter()); String[] headerKeys = getHeaderKeys(); cParagraph hKey; cParagraph hValue; cHGroup hLine; Object value; // Add header information to print for (int i = 0; i < Array.getLength(headerKeys); i++) { hKey = new cParagraph(); // *20030531, karlpeder* setting headerKeys to lowercase for // lookup! hKey.setText(MailResourceLoader.getString("header", headerKeys[i].toLowerCase())); hKey.setFontStyle(Font.BOLD); hValue = new cParagraph(); /* * *20031216, karlpeder* Changed handling of dates. * Previously columba.date header was used. Now we * use the Date header instead */ //if (headerKeys[i].equalsIgnoreCase("date")) { // value = header.get("columba.date"); //} else { //value = header.get(headerKeys[i]); //} value = header.get(headerKeys[i]); if (headerKeys[i].equalsIgnoreCase(dateHeaderKey)) { // special handling for dates SimpleDateFormat formatter = new SimpleDateFormat( "d MMM yyyy HH:mm:ss Z"); String dateStr = (String) value; // ignore leading weekday name (e.g. "Mon,"), since this // seems to give problems during parsing ParsePosition pos = new ParsePosition(dateStr.indexOf(',') + 1); Date d = formatter.parse((String) value, pos); if (d != null) { hValue.setText(getMailDateFormat().format(d)); } else { // fall back to use the Date header contents directly hValue.setText((String) value); } } else { hValue.setText((String) value); } hValue.setLeftMargin(new cCmUnit(3.0)); hLine = new cHGroup(); hLine.add(hKey); hLine.add(hValue); messageDoc.appendPrintObject(hLine); } // Add list of attachments if applicable AttachmentModel attMod = new AttachmentModel(); attMod.setCollection(srcFolder.getMimePartTree(uid)); List attachments = attMod.getDisplayedMimeParts(); for (int i = 0; i < attachments.size(); i++) { StreamableMimePart mp = (StreamableMimePart) attachments.get(i); if (mp.getHeader().getFileName() != null) { // one line is added to the header for each attachment // (which has a filename defined) hKey = new cParagraph(); hKey.setText(MailResourceLoader.getString("header", attHeaderKey)); hKey.setFontStyle(Font.BOLD); hValue = new cParagraph(); hValue.setText(mp.getHeader().getFileName()); hValue.setLeftMargin(new cCmUnit(3.0)); hLine = new cHGroup(); hLine.add(hKey); hLine.add(hValue); messageDoc.appendPrintObject(hLine); } } // Add body of message to print String mimesubtype = bodyHeader.getMimeType().getSubtype(); if (mimesubtype.equals("html")) { messageDoc.appendPrintObject(getHTMLBodyPrintObject()); } else { messageDoc.appendPrintObject(getPlainBodyPrintObject()); } // print the print document (i.e. the message) messageDoc.print(); } // end of for loop over uids to print }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
private void setupMessageBodyPart(Object uid, IMailbox srcFolder, IWorkerStatusController worker) throws Exception { // Does the user prefer html or plain text? XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Get body of message depending on user preferences MimeTree mimePartTree = srcFolder.getMimePartTree(uid); MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart == null) { bodyHeader = new MimeHeader(); bodyStream = new ByteArrayInputStream(new byte[0]); } else { bodyHeader = bodyPart.getHeader(); bodyStream = srcFolder.getMimePartBodyStream(uid, bodyPart.getAddress()); } }
// in java/org/columba/mail/folder/command/MoveMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references r = (IMailFolderCommandReference) getReference(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // get destination foldedr destFolder = (IMailbox) r.getDestinationFolder(); // cancel, if source equals destination folder if ( srcFolder.getId() == destFolder.getId() ) return; // calling CopyMessageCommand.execute() here! //super.execute(worker); doExecute(worker, "move_messages", "err_copy_messages_retry", "err_copy_messages_ignore", "err_move_messages_msg", "err_move_messages_title", "move_messages_cancelled"); // get messgae UIDs Object[] uids = r.getUids(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // setting lastSelection to null srcFolder.setLastSelection(null); LOG.info("src=" + srcFolder + " dest=" + destFolder); // update status message worker.setDisplayText("Moving messages to " + destFolder.getName() + "..."); worker.setProgressBarMaximum(uids.length); // mark all messages as expunged srcFolder.markMessage(uids, MarkMessageCommand.MARK_AS_EXPUNGED); // expunge folder srcFolder.expungeFolder(); // We are done - clear the status message after a delay worker.clearDisplayTextWithDelay(); }
// in java/org/columba/mail/folder/command/ImportMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { ImportFolderCommandReference r = (ImportFolderCommandReference) getReference(); AbstractMailboxImporter importer = r.getImporter(); importer.run(worker); }
// in java/org/columba/mail/folder/command/SyncSearchEngineCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source folder parentFolder = (AbstractLocalFolder) ((IMailFolderCommandReference) getReference()).getSourceFolder(); // resync search engine // -> this is only needed for Lucene right now DefaultSearchEngine engine = parentFolder.getSearchEngine(); engine.sync(); }
// in java/org/columba/mail/folder/AbstractFolder.java
public void setName(String newName) throws Exception { IFolderItem item = getConfiguration(); item.setString("property", "name", newName); fireFolderPropertyChanged(); }
// in java/org/columba/mail/folder/AbstractFolder.java
public void removeFolder() throws Exception { // remove XmlElement getConfiguration().getRoot().getParent().removeElement( getConfiguration().getRoot()); // notify listeners fireFolderRemoved(); }
// in java/org/columba/mail/folder/AbstractFolder.java
public void addSubfolder(IMailFolder child) throws Exception { getConfiguration().getRoot().addElement( child.getConfiguration().getRoot()); fireFolderAdded(child); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void removeFolder() throws Exception { // delete folder from your harddrive boolean b = DiskIO.deleteDirectory(directoryFile); // if this worked, remove it from tree.xml configuration, too if (b) { super.removeFolder(); } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public MimeTree getMimePartTree(Object uid) throws Exception { // get message with UID IColumbaMessage message = getMessage(uid); // get tree-like structure of mimeparts MimeTree mptree = message.getMimePartTree(); return mptree; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public InputStream getMessageSourceStream(Object uid) throws Exception { return getDataStorageInstance().getMessageStream(uid); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address) throws Exception { // get message with UID IColumbaMessage message = getMessage(uid); // Get the mimepart LocalMimePart mimepart = (LocalMimePart) message.getMimePartTree() .getFromAddress(address); return mimepart.getInputStream(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address) throws Exception { // get message with UID IColumbaMessage message = getMessage(uid); // Get the mimepart LocalMimePart mimepart = (LocalMimePart) message.getMimePartTree() .getFromAddress(address); return new SourceInputStream(mimepart.getSource()); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void innerCopy(IMailbox destFolder, Object[] uids) throws Exception { if (getObservable() != null) { getObservable().setMax(uids.length); } for (int i = 0; i < uids.length; i++) { // skip this message, if it doesn't exist in source folder if (!exists(uids[i])) { continue; } InputStream messageSourceStream = getMessageSourceStream(uids[i]); destFolder.addMessage(messageSourceStream, getAttributes(uids[i]), getFlags(uids[i])); messageSourceStream.close(); /* * ((AbstractLocalFolder) destFolder).setFlags(destuid, (Flags) * getFlags( uids[i]).clone()); */ // destFolder.fireMessageAdded(uids[i]); if (getObservable() != null) { getObservable().setCurrent(i); } } // we are done - clear the progress bar if (getObservable() != null) { getObservable().resetCurrent(); } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public Object addMessage(InputStream in) throws Exception { return addMessage(in, null, null); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { // generate UID for new message Object newUid = generateNextMessageUid(); // save message stream to file getDataStorageInstance().saveMessage(newUid, in); // close stream in.close(); // parse header Source source = getDataStorageInstance().getMessageSource(newUid); int messageSize = source.length(); Header header = HeaderParser.parse(source); ColumbaHeader h; if ((attributes != null) && (flags != null)) { // save header and attributes. Copy the flags! h = new ColumbaHeader(header, (Attributes) attributes.clone(), new Flags(flags.getFlags())); } else { h = new ColumbaHeader(header); h.set("columba.size", new Integer(messageSize / 1024)); } source.close(); h.set("columba.uid", newUid); getHeaderList().add(h, newUid); fireMessageAdded(newUid, getFlags(newUid)); return newUid; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
protected ColumbaMessage getMessage(Object uid) throws Exception { // Check if the message is already cached if (aktMessage != null) { if (aktMessage.getUID().equals(uid)) { // this message is already cached return aktMessage; } } ColumbaMessage message; try { Source source = null; source = getDataStorageInstance().getMessageSource(uid); // Parse Message from DataStorage try { message = new ColumbaMessage(MessageParser.parse(source)); } catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; } source.close(); message.setUID(uid); aktMessage = message; // TODO: fix parser exception } catch (FolderInconsistentException e) { super.removeMessage(uid); throw e; } // We use the attributes and flags from the cache // but the parsed header from the parsed message IColumbaHeader header = getHeaderList().get(uid); header.setHeader(message.getHeader().getHeader()); message.setHeader(header); return message; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
protected IColumbaHeader getMessageHeader(Object uid) throws Exception { if ((aktMessage != null) && (aktMessage.getUID().equals(uid))) { // message is already cached // try to compare the headerfield count of // the actually parsed message with the cached // headerfield count IColumbaMessage message = getMessage(uid); // number of headerfields int size = message.getHeader().count(); // get header from cache IColumbaHeader h = getHeaderList().get(uid); // message doesn't exist (this shouldn't happen here) if (h == null) { return null; } // number of headerfields int cachedSize = h.count(); // if header contains more fields than the cached header if (size > cachedSize) { return (ColumbaHeader) message.getHeader(); } return (ColumbaHeader) h; } else { // message isn't cached // -> just return header from cache return getHeaderList().get(uid); } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void removeMessage(Object uid) throws Exception { // remove message from disk getDataStorageInstance().removeMessage(uid); // fireMessageRemoved(uid, getFlags(uid)); super.removeMessage(uid); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
protected void setFlags(Object uid, Flags flags) throws Exception { IColumbaHeader h = getHeaderList().get(uid); Flags oldFlags = h.getFlags(); h.setFlags(flags); // update MessageFolderInfo if (oldFlags.get(Flags.RECENT) && !flags.get(Flags.RECENT)) { getMessageFolderInfo().decRecent(); } if (!oldFlags.get(Flags.RECENT) && flags.get(Flags.RECENT)) { getMessageFolderInfo().incRecent(); } if (oldFlags.get(Flags.SEEN) && !flags.get(Flags.SEEN)) { getMessageFolderInfo().incUnseen(); } if (!oldFlags.get(Flags.SEEN) && flags.get(Flags.SEEN)) { getMessageFolderInfo().decUnseen(); } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public Header getHeaderFields(Object uid, String[] keys) throws Exception { // cached headerfield list List cachedList = Arrays.asList(CachedHeaderfields .getDefaultHeaderfields()); LinkedList keyList = new LinkedList(Arrays.asList(keys)); ListTools.substract(keyList, cachedList); if (keyList.size() == 0) { return getHeaderList().get(uid).getHeader(); } else { // We need to parse // get message with UID IColumbaMessage message = getMessage(uid); Header header = message.getHeader().getHeader(); Header subHeader = new Header(); String value; for (int i = 0; i < keys.length; i++) { value = header.get(keys[i]); if (value != null) { subHeader.set(keys[i], value); } } return subHeader; } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void expungeFolder() throws Exception { // make sure to close all file handles // to the currently cached message // -> necessary for windows to be able to delete the local file if (aktMessage != null) { aktMessage.close(); aktMessage = null; } super.expungeFolder(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public Header getAllHeaderFields(Object uid) throws Exception { IColumbaMessage message = getMessage(uid); Header header = message.getHeader().getHeader(); return header; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public synchronized IHeaderList getHeaderList() throws Exception { if (headerList == null) { // header cache is stored in "headerlist" subfolder File headercacheDirectory = new File(getDirectoryFile(),"headerlist"); headerList = new BerkeleyDBHeaderList(headercacheDirectory, getId()); final AbstractMessageFolder folder = this; headerList .addHeaderListCorruptedListener(new IHeaderListCorruptedListener() { public void headerListCorrupted(IHeaderList headerList) { try { SyncHeaderList.sync(folder, headerList); } catch (IOException e) { LOG.severe(e.getMessage()); } } }); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void save() throws Exception { super.save(); if (headerList != null) headerList.persist(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object[] getUids() throws Exception { return messageList.keySet().toArray(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public boolean exists(Object uid) throws Exception { return messageList.containsKey(uid); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public IHeaderList getHeaderList() throws Exception { return headerList; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public void removeMessage(Object uid) throws Exception { Flags flags = getFlags(uid); fireMessageRemoved(uid, flags); headerList.remove(uid); messageList.remove(uid); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public MimeTree getMimePartTree(Object uid) throws Exception { return ((IColumbaMessage) messageList.get(uid)).getMimePartTree(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public IColumbaHeader getMessageHeader(Object uid) throws Exception { ColumbaHeader header = (ColumbaHeader) headerList.get(uid); return header; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public IColumbaMessage getMessage(Object uid) throws Exception { IColumbaMessage message = (IColumbaMessage) messageList.get(uid); return message; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object[] searchMessages(Filter filter, Object[] uids) throws Exception { return getSearchEngine().searchMessages(filter, uids); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object[] searchMessages(Filter filter) throws Exception { return getSearchEngine().searchMessages(filter); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public void innerCopy(IMailbox destFolder, Object[] uids) throws Exception { for (int i = 0; i < uids.length; i++) { InputStream messageSourceStream = getMessageSourceStream(uids[i]); destFolder.addMessage(messageSourceStream); messageSourceStream.close(); } }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { Message message = MessageParser.parse( TempSourceFactory.createTempSource(in, -1)); Object newUid = generateNextUid(); LOG.info("new UID=" + newUid); ColumbaHeader h = new ColumbaHeader(message.getHeader()); if (attributes != null) { h.setAttributes((Attributes) attributes.clone()); } if ( flags != null ) { h.setFlags((Flags) flags.clone()); } h.getAttributes().put("columba.uid", newUid); headerList.add(h, newUid); messageList.put(newUid, new ColumbaMessage(h, message)); fireMessageAdded(newUid, getFlags(newUid)); return newUid; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object getAttribute(Object uid, String key) throws Exception { return ((ColumbaHeader) headerList.get(uid)).getAttributes().get(key); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Flags getFlags(Object uid) throws Exception { return ((ColumbaHeader) headerList.get(uid)).getFlags(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Attributes getAttributes(Object uid) throws Exception { if (getHeaderList().exists(uid)) { return getHeaderList().get(uid).getAttributes(); } else { return null; } }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Header getHeaderFields(Object uid, String[] keys) throws Exception { IColumbaHeader header = ((IColumbaMessage) messageList.get(uid)).getHeader(); Header subHeader = new Header(); String value; for (int i = 0; i < keys.length; i++) { value = (String) header.get(keys[i]); if (value != null) { subHeader.set(keys[i], value); } } return subHeader; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public InputStream getMessageSourceStream(Object uid) throws Exception { return new SourceInputStream(((IColumbaMessage) messageList.get(uid)).getSource()); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address) throws Exception { IColumbaMessage message = (IColumbaMessage) messageList.get(uid); LocalMimePart mimepart = (LocalMimePart) message.getMimePartTree() .getFromAddress(address); return mimepart.getInputStream(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address) throws Exception { IColumbaMessage message = (IColumbaMessage) messageList.get(uid); LocalMimePart mimepart = (LocalMimePart) message.getMimePartTree() .getFromAddress(address); return new SourceInputStream(mimepart.getSource()); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public void setAttribute(Object uid, String key, Object value) throws Exception { // get header with UID ColumbaHeader header = (ColumbaHeader) getHeaderList().get(uid); header.getAttributes().put(key, value); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object addMessage(InputStream in) throws Exception { return addMessage(in, null, null); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object addMessage(IColumbaMessage message) throws Exception { Object newUid = generateNextUid(); ColumbaHeader h = (ColumbaHeader) ((ColumbaHeader) message.getHeader()); h.getAttributes().put("columba.uid", newUid); headerList.add(h, newUid); messageList.put(newUid, message); return newUid; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public void removeFolder() throws Exception { //super.removeFolder(); // do nothing }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Header getAllHeaderFields(Object uid) throws Exception { IColumbaHeader header = ((IColumbaMessage) messageList.get(uid)).getHeader(); return header.getHeader(); }
// in java/org/columba/mail/smtp/command/SendAllMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message")); // get Outbox folder from reference outboxFolder = (OutboxFolder) r.getSourceFolder(); // get UID list of messages Object[] uids = outboxFolder.getUids(); // save every message in a list for (int i = 0; i < uids.length; i++) { if (outboxFolder.exists(uids[i]) == true) { SendableMessage message = outboxFolder .getSendableMessage(uids[i]); sendListManager.add(message); } } int actAccountUid = -1; List sentList = new Vector(); SMTPServer smtpServer = null; IMailbox sentFolder = null; // send all messages while (sendListManager.hasMoreMessages()) { SendableMessage message = sendListManager.getNextMessage(); // get account information from message if (message.getAccountUid() != actAccountUid) { actAccountUid = message.getAccountUid(); AccountItem accountItem = MailConfig.getInstance() .getAccountList().uidGet(actAccountUid); if (accountItem == null) { // use the default account accountItem = MailConfig.getInstance().getAccountList() .getDefaultAccount(); if (accountItem == null) continue; // skip message if there's no account // available to send it } // Sent folder sentFolder = (IMailbox) FolderTreeModel .getInstance() .getFolder( accountItem.getSpecialFoldersItem().get("sent")); // open connection to SMTP server smtpServer = new SMTPServer(accountItem); } smtpServer.sendMessage(message, worker); sentList.add(message.getHeader().get("columba.uid")); } // we are done - clear status text with a delay // (if this is not done, the initial text will stay in // case no messages were sent) worker.clearDisplayTextWithDelay(); // move all successfully send messages to the Sent folder if (sentList.size() > 0) { moveToSentFolder(sentList, sentFolder); sentList.clear(); } }
// in java/org/columba/mail/smtp/command/SendAllMessagesCommand.java
public void updateGUI() throws Exception { if (action != null) action.setEnabled(true); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { ComposerCommandReference r = (ComposerCommandReference) getReference(); if (!validArguments(r)) return; // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message_compose")); // get composer controller // -> get all the account information from the controller composerController = r.getComposerController(); // close composer view if (composerController.getView().getFrame() != null) { composerController.getView().getFrame().setVisible(false); } sendMessageDialog = new SendMessageDialog(worker); ComposerModel model = ((ComposerModel) composerController.getModel()); AccountItem item = model.getAccountItem(); // sent folder IMailbox sentFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(item.getSpecialFoldersItem().get("sent")); // get the SendableMessage object SendableMessage message = null; try { // compose the message suitable for sending message = new MessageComposer(model).compose(worker, r .isAppendSignature()); } catch (JSCFException e1) { if (e1 instanceof CancelledException) { // user cancelled sending operation // open composer view showComposer = true; return; } else { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), e1.getMessage()); // open composer view showComposer = true; return; } } // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message_connect")); // open connection final SMTPServer server = new SMTPServer(item); // successfully connected and autenthenticated to SMTP server try { // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message")); IWorkerStatusChangeListener listener = new IWorkerStatusChangeListener() { public void workerStatusChanged(WorkerStatusChangedEvent e) { if (e.getSource().cancelled()) { try { server.dropConnection(); } catch (IOException e1) { } } } }; // important for cancel worker.addWorkerStatusChangeListener(listener); // send message server.sendMessage(message, worker); // not needed anymore worker.removeWorkerStatusChangeListener(listener); if (worker.cancelled()) { showComposer = true; return; } // mark as read Flags flags = new Flags(); flags.setSeen(true); message.getHeader().setFlags(flags); // save message in Sent folder ComposerCommandReference ref = new ComposerCommandReference( composerController, sentFolder); ref.setMessage(message); SaveMessageCommand c = new SaveMessageCommand(ref); CommandProcessor.getInstance().addOp(c); // -> get source reference of message // when replying this is the original sender's message // you selected and replied to IMailFolderCommandReference ref2 = model.getSourceReference(); if (ref2 != null && ((IMailbox) ref2.getSourceFolder()).exists(ref2 .getUids()[0])) { // mark message as answered ref2.setMarkVariant(MarkMessageCommand.MARK_AS_ANSWERED); MarkMessageCommand c1 = new MarkMessageCommand(ref2); CommandProcessor.getInstance().addOp(c1); } // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message_closing")); // close connection to server server.closeConnection(); // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message_success")); } /* * catch (SMTPException e) { JOptionPane.showMessageDialog(null, * e.getMessage(), "Error while sending", * JOptionPane.ERROR_MESSAGE); // open composer view showComposer = * true; } */catch (Exception e) { // e.printStackTrace(); // open composer view showComposer = true; throw e; } }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
public void updateGUI() throws Exception { // can no longer assume that sendMessageDialog has been displayed if (sendMessageDialog != null) { // close send message dialog sendMessageDialog.setVisible(false); } if (showComposer == true && composerController.getView().getFrame() != null) { // re-open composer view composerController.getView().getFrame().setVisible(true); composerController.getView().getFrame().requestFocus(); } else { // do not prompt user if composer should be really closed composerController.setPromptOnDialogClosing(false); // save composer window state composerController.fireClosed(); } }
// in java/org/columba/mail/composer/MessageComposer.java
public SendableMessage compose(IWorkerStatusController workerStatusController, boolean appendSignature) throws Exception { this.accountUid = model.getAccountItem().getUid(); workerStatusController.setDisplayText("Composing Message..."); MimeTreeRenderer renderer = MimeTreeRenderer.getInstance(); SendableMessage message = new SendableMessage(); SendableHeader header = initHeader(); MimePart root = null; /* * *20030921, karlpeder* The old code was (accidentially!?) modifying * the attachment list of the model. This affects the composing when * called a second time for saving the message after sending! */ //List mimeParts = model.getAttachments(); List attachments = model.getAttachments(); List mimeParts = new ArrayList(); Iterator ite = attachments.iterator(); while (ite.hasNext()) { mimeParts.add(ite.next()); } // *20030919, karlpeder* Added handling of html messages StreamableMimePart body; if (model.isHtml()) { // compose message body as multipart/alternative XmlElement composerOptions = MailConfig.getInstance() .getComposerOptionsConfig().getRoot() .getElement("/options"); XmlElement html = composerOptions.getElement("html"); if (html == null) { html = composerOptions.addSubElement("html"); } String multipart = html.getAttribute("send_as_multipart", "true"); if (multipart.equals("true")) { // send as multipart/alternative body = composeMultipartAlternativeMimePart(appendSignature); } else { // send as text/html body = composeHtmlMimePart(appendSignature); } } else { // compose message body as text/plain body = composeTextMimePart(appendSignature); } if (body != null) { mimeParts.add(0, body); } // Create Multipart/Mixed if necessary if (mimeParts.size() > 1) { root = new MimePart(new MimeHeader("multipart", "mixed")); for (int i = 0; i < mimeParts.size(); i++) { root.addChild((StreamableMimePart) mimeParts.get(i)); } } else { root = (MimePart) mimeParts.get(0); } if (model.isSignMessage()) { SecurityItem item = model.getAccountItem().getPGPItem(); String idStr = item.get("id"); // if the id not currently set (for example in the security panel in // the account-config if ((idStr == null) || (idStr.length() == 0)) { // Set id on from address item.setString("id", model.getAccountItem().getIdentity() .getAddress().getMailAddress()); } PGPMimePart signPart = new PGPMimePart(new MimeHeader("multipart", "signed"), item); signPart.addChild(root); root = signPart; } if (model.isEncryptMessage()) { SecurityItem item = model.getAccountItem().getPGPItem(); // Set recipients from the recipients vector List recipientList = model.getRCPTVector(); StringBuffer recipientBuf = new StringBuffer(); for (Iterator it = recipientList.iterator(); it.hasNext();) { recipientBuf.append((String) it.next()); } item.setString("recipients", recipientBuf.toString()); PGPMimePart signPart = new PGPMimePart(new MimeHeader("multipart", "encrypted"), item); signPart.addChild(root); root = signPart; } header.setRecipients(model.getRCPTVector()); List headerItemList; headerItemList = model.getToList(); if ( ( headerItemList != null ) && (headerItemList.size() > 0) ){ Address adr = null; try { adr = Address.parse((String) headerItemList.get(0)); header.getAttributes().put("columba.to", adr); } catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); } } headerItemList = model.getCcList(); if ( ( headerItemList != null ) && (headerItemList.size() > 0) ) { Address adr = null; try { adr = Address.parse((String) headerItemList.get(0)); header.getAttributes().put("columba.cc", adr); } catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); } } root.getHeader().getHeader().merge(header.getHeader()); InputStream in = renderer.renderMimePart(root); // size int size = in.available() / 1024; header.getAttributes().put("columba.size", new Integer(size)); message.setHeader(header); message.setAccountUid(accountUid); //Do not access the inputstream after this line! message.setSourceStream(in); return message; }
(Domain) FolderInconsistentException 2
              
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public Source getMessageSource(Object uid) throws Exception { if( ! exists(uid)) throw new FolderInconsistentException(); MboxMessage message = (MboxMessage) messages.get(uid); FileInputStream in = new FileInputStream(mboxFile); in.skip(message.getStart()); File tempFile = File.createTempFile("mbox_message", ".tmp"); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); StreamUtils.streamCopy(in, out, (int) message.getLength()); in.close(); out.close(); return new FileSource(tempFile); }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public Source getMessageSource(Object uid) throws Exception { File file = new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString()); try { return new FileSource(file); } catch (IOException e) { throw new FolderInconsistentException(); } }
1
              
// in java/org/columba/mail/folder/mh/MHDataStorage.java
catch (IOException e) { throw new FolderInconsistentException(); }
0
(Lib) SMTPException 2
              
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureAuthenticated() throws IOException, SMTPException, CommandCancelledException { String username; char[] password = new char[0]; boolean savePassword; // Init Values // user's email address fromAddress = identity.getAddress().getMailAddress(); usingSSL = smtpItem.getBoolean("enable_ssl"); int authMethod = getLoginMethod(); boolean authenticated = (authMethod == AuthenticationManager.NONE); if (authMethod == AuthenticationManager.POP_BEFORE_SMTP) { // no esmtp - use POP3-before-SMTP instead try { pop3Authentification(); } catch (POP3Exception e) { throw new SMTPException(e); } authenticated = true; } ensureConnected(); if (!authenticated) { username = smtpItem.get("user"); password = Blowfish.decrypt(smtpItem.getRoot().getAttribute("password", "")); savePassword = smtpItem.getBoolean("save_password"); if (username.length() == 0) { // there seems to be no username set in the smtp-options // -> use username from pop3 or imap options if (accountItem.isPopAccount()) { PopItem pop3Item = accountItem.getPopItem(); username = pop3Item.get("user"); } else { ImapItem imapItem = accountItem.getImapItem(); username = imapItem.get("user"); } } PasswordDialog passDialog = new PasswordDialog(); // ask password from user if (password.length == 0) { passDialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String(password), savePassword); if (passDialog.success()) { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } else { throw new CommandCancelledException(); } } // try to authenticate while (!authenticated) { try { try { protocol.auth(AuthenticationManager .getSaslName(authMethod), username, password); authenticated = true; } catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } } } catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } } } // authentication was successful // -> save name/password smtpItem.setString("user", username); smtpItem.setBoolean("save_password", savePassword); if (savePassword) { smtpItem.setString("password", Blowfish.encrypt(password)); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
public void sendMessage(SendableMessage message, IWorkerStatusController workerStatusController) throws SMTPException, IOException, CommandCancelledException { ensureAuthenticated(); // send from address and recipient list to SMTP server // ->all addresses have to be normalized protocol.mail(identity.getAddress()); Iterator recipients = message.getRecipients().iterator(); while (recipients.hasNext()) { try { protocol.rcpt(Address.parse((String) recipients.next())); } catch (ParserException e1) { throw new SMTPException(e1); } } // now send message source protocol.data(new ProgressObservedInputStream( message.getSourceStream(), workerStatusController)); }
2
              
// in java/org/columba/mail/smtp/SMTPServer.java
catch (POP3Exception e) { throw new SMTPException(e); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (ParserException e1) { throw new SMTPException(e1); }
7
              
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureConnected() throws IOException, SMTPException, CommandCancelledException { if (protocol.getState() == SMTPProtocol.NOT_CONNECTED) { // Start login procedure protocol.openPort(); initialize(); doSSL(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureAuthenticated() throws IOException, SMTPException, CommandCancelledException { String username; char[] password = new char[0]; boolean savePassword; // Init Values // user's email address fromAddress = identity.getAddress().getMailAddress(); usingSSL = smtpItem.getBoolean("enable_ssl"); int authMethod = getLoginMethod(); boolean authenticated = (authMethod == AuthenticationManager.NONE); if (authMethod == AuthenticationManager.POP_BEFORE_SMTP) { // no esmtp - use POP3-before-SMTP instead try { pop3Authentification(); } catch (POP3Exception e) { throw new SMTPException(e); } authenticated = true; } ensureConnected(); if (!authenticated) { username = smtpItem.get("user"); password = Blowfish.decrypt(smtpItem.getRoot().getAttribute("password", "")); savePassword = smtpItem.getBoolean("save_password"); if (username.length() == 0) { // there seems to be no username set in the smtp-options // -> use username from pop3 or imap options if (accountItem.isPopAccount()) { PopItem pop3Item = accountItem.getPopItem(); username = pop3Item.get("user"); } else { ImapItem imapItem = accountItem.getImapItem(); username = imapItem.get("user"); } } PasswordDialog passDialog = new PasswordDialog(); // ask password from user if (password.length == 0) { passDialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String(password), savePassword); if (passDialog.success()) { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } else { throw new CommandCancelledException(); } } // try to authenticate while (!authenticated) { try { try { protocol.auth(AuthenticationManager .getSaslName(authMethod), username, password); authenticated = true; } catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } } } catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } } } // authentication was successful // -> save name/password smtpItem.setString("user", username); smtpItem.setBoolean("save_password", savePassword); if (savePassword) { smtpItem.setString("password", Blowfish.encrypt(password)); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void doSSL() throws CommandCancelledException, IOException, SMTPException { if (smtpItem.getBoolean("enable_ssl")) { if (isSupported("STARTTLS")) { try { protocol.startTLS(); usingSSL = true; } catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); } } else { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader.getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(null, MailResourceLoader.getString("dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
public List checkSupportedAuthenticationMethods() throws IOException, SMTPException, CommandCancelledException { ensureConnected(); List supportedMechanisms = new ArrayList(); for (int i = 0; i < capas.length; i++) { if (capas[i].startsWith("AUTH")) { List authMechanisms = AuthenticationFactory.getInstance() .getSupportedMechanisms(capas[i]); Iterator it = authMechanisms.iterator(); while (it.hasNext()) { Integer saslCode = new Integer(AuthenticationManager .getSaslCode((String) it.next())); if (!saslCode.equals(-1)) supportedMechanisms.add(saslCode); } break; } } if( supportedMechanisms.size() == 0) { // Add a default PLAIN login as fallback supportedMechanisms.add(new Integer(AuthenticationManager.SASL_PLAIN)); } return supportedMechanisms; }
// in java/org/columba/mail/smtp/SMTPServer.java
private void initialize() throws IOException, SMTPException { try { capas = protocol.ehlo(InetAddress.getLocalHost()); } catch (SMTPException e1) { // EHLO not supported -> AUTH not supported if( protocol.getState() < SMTPProtocol.PLAIN ) { protocol.openPort(); } protocol.helo(InetAddress.getLocalHost()); capas = new String[] {}; } }
// in java/org/columba/mail/smtp/SMTPServer.java
private int getLoginMethod() throws IOException, SMTPException, CommandCancelledException { String authType = accountItem.getSmtpItem().get("login_method"); int method = 0; try { method = Integer.parseInt(authType); } catch (NumberFormatException e) { //Fallback to Securest Login method } if (method == 0) { List supported = checkSupportedAuthenticationMethods(); if (accountItem.isPopAccount()) { supported .add(new Integer(AuthenticationManager.POP_BEFORE_SMTP)); } if (supported.size() == 0) { // No Authentication available return AuthenticationManager.NONE; } if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. method = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); method = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return method; }
// in java/org/columba/mail/smtp/SMTPServer.java
public void sendMessage(SendableMessage message, IWorkerStatusController workerStatusController) throws SMTPException, IOException, CommandCancelledException { ensureAuthenticated(); // send from address and recipient list to SMTP server // ->all addresses have to be normalized protocol.mail(identity.getAddress()); Iterator recipients = message.getRecipients().iterator(); while (recipients.hasNext()) { try { protocol.rcpt(Address.parse((String) recipients.next())); } catch (ParserException e1) { throw new SMTPException(e1); } } // now send message source protocol.data(new ProgressObservedInputStream( message.getSourceStream(), workerStatusController)); }
(Lib) MailboxInfoInvalidException 1
              
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
private void sanityCheck() throws MailboxInfoInvalidException { if( !isSane() ) throw new MailboxInfoInvalidException(); }
0 7
              
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void incExists() throws MailboxInfoInvalidException { mailboxInfo.setExists(mailboxInfo.getExists()+1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void decExists() throws MailboxInfoInvalidException { mailboxInfo.setExists(mailboxInfo.getExists()-1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void incRecent() throws MailboxInfoInvalidException { mailboxInfo.setRecent(mailboxInfo.getRecent()+1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void decRecent() throws MailboxInfoInvalidException { mailboxInfo.setRecent(mailboxInfo.getRecent()-1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void incUnseen() throws MailboxInfoInvalidException { mailboxInfo.setUnseen(mailboxInfo.getUnseen()+1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void decUnseen() throws MailboxInfoInvalidException { mailboxInfo.setUnseen(mailboxInfo.getUnseen()-1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
private void sanityCheck() throws MailboxInfoInvalidException { if( !isSane() ) throw new MailboxInfoInvalidException(); }
(Domain) ProgramNotFoundException 1
              
// in java/org/columba/mail/pgp/JSCFController.java
public JSCFConnection getConnection(String userID) throws JSCFException { SecurityItem pgpItem = MailConfig.getInstance().getAccountList() .getDefaultAccount().getPGPItem(); JSCFConnection con = (JSCFConnection) connectionMap.get(userID); if (con == null) { LOG.fine("no connection for userID (" + userID + ") found. Creating a new Connection."); // let us hard coding the gpg for each connection. Later we should // support also other variants (like smime) con = JSCFDriverManager.getConnection("jscf:gpg:"); // getting the path to gpg IExtensionHandler handler = null; String path = null; try { LOG.fine("try to get the handler"); handler = PluginManager .getInstance().getExtensionHandler( "org.columba.core.externaltools"); LOG.fine("recived Handler ... getting path from it"); path = ExternalToolsManager.getInstance() .getLocationOfExternalTool("gpg").getPath(); LOG.fine("setting path: " + path); } catch (PluginHandlerNotFoundException e) { LOG.fine("PluginHandler not found" + e); if (Logging.DEBUG) { e.printStackTrace(); } } /* * if (path == null) { throw new ProgramNotFoundException("invalid * path"); } */ Properties props = con.getProperties(); if (path == null) { throw new ProgramNotFoundException("invalid path"); } props.put("PATH", path); if (handler != null) { IExtension extension = handler.getExtension("gpg"); LOG.fine("gpg userId: " + extension.getMetadata().getId()); } LOG.info("gpg path: " + props.get("PATH")); props.put("USERID", pgpItem.get("id")); LOG.info("current gpg userID: " + props.get("USERID")); con.setProperties(props); connectionMap.put(userID, con); } return con; }
0 0
(Domain) WrongPassphraseException 1
              
// in java/org/columba/mail/pgp/MultipartSignedRenderer.java
public InputStream render(MimePart part) throws Exception { Vector streams = new Vector((2 * 2) + 3); MimeHeader header = part.getHeader(); // Create boundary to separate the mime-parts String boundary = createUniqueBoundary().toString(); header.putContentParameter("boundary", boundary); byte[] startBoundary = ("\r\n--" + boundary + "\r\n").getBytes(); byte[] endBoundary = ("\r\n--" + boundary + "--\r\n").getBytes(); // Add pgp-specific content-parameters // we take as default hash-algo SHA1 header.putContentParameter("micalg", "pgp-sha1"); header.putContentParameter("protocol", "application/pgp-signature"); // Create the header and body of the multipart streams.add(header.getHeader().getInputStream()); // Add the MimePart that will be signed streams.add(new ByteArrayInputStream(startBoundary)); CloneStreamMaster signedPartCloneModel = new CloneStreamMaster( MimeTreeRenderer.getInstance().renderMimePart(part.getChild(0))); streams.add(signedPartCloneModel.getClone()); // Add the signature streams.add(new ByteArrayInputStream(startBoundary)); StreamableMimePart signatureMimePart; signatureMimePart = null; JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); PGPPassChecker passCheck = PGPPassChecker.getInstance(); boolean check = passCheck.checkPassphrase(con); if (!check) { throw new WrongPassphraseException("wrong passphrase"); } JSCFStatement stmt = con.createStatement(); JSCFResultSet res = stmt.executeSign(signedPartCloneModel.getClone()); signatureMimePart = new InputStreamMimePart(this.signatureHeader, res .getResultStream()); streams.add(MimeTreeRenderer.getInstance().renderMimePart( signatureMimePart)); // Create the closing boundary streams.add(new ByteArrayInputStream(endBoundary)); return new SequenceInputStream(streams); }
0 0
Explicit thrown (throw new...): 83/102
Explicit thrown ratio: 81.4%
Builder thrown ratio: 2.9%
Variable thrown ratio: 18.6%
Checked Runtime Total
Domain 8 0 8
Lib 2 35 37
Total 10 35

Caught Exceptions Summary

A (Domain) exception is defined in the application. A (Lib) exception is defined in the JDK or in a library. An exception can be caught, and it happens that the catch block contains a throw (e.g. for wrapping a low-level exception). Hovering over a number triggers showing code snippets from the application code.

Type Exception Caught
(directly)
Caught
with Thrown
(Lib) Exception 95
            
// in java/org/columba/mail/gui/message/MessageController.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (Exception e) { LOG .warning("Could not create temporary email from the attachment."); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { viewerPlugin = createHTMLViewerPluginInstance("Default"); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { matcher.appendReplacement(modifiedBody, "missing"); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { matcher.appendReplacement(modifiedBody, "missing"); }
// in java/org/columba/mail/gui/tree/action/CreateVirtualFolderAction.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/tree/comparator/UnreadFolderComparator.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/tree/TreeViewTransferHandler.java
catch (Exception e) { // UnsupportedFlavorException, IOException DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
catch (Exception ex) { success = false; throw ex; }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTransfer.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/ObjectArrayTransfer.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/ActionList.java
catch (Exception ex) { ex.printStackTrace(); // this probably means that the configuration // is wrong // -> change this to a sane default value action.setAction("Mark Message"); ((MailFilterAction) action).setMarkVariant("read"); row = null; }
// in java/org/columba/mail/gui/config/filter/FilterTransferHandler.java
catch (Exception e) { DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/config/filter/FilterTransferHandler.java
catch (Exception e) { DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/config/accountlist/AccountListDialog.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/accountlist/AccountListDialog.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/accountlist/AccountListDialog.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/search/SearchFrame.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/account/IdentityPanel.java
catch (Exception e) { }
// in java/org/columba/mail/gui/config/account/OutgoingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/accountwizard/AccountCreator.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/tagging/MailTagList.java
catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
// in java/org/columba/mail/gui/filtertoolbar/FilterToolbar.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerSpellCheck.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/action/SendLaterAction.java
catch (Exception e) { }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/table/TableViewTransferHandler.java
catch (Exception e) { // UnsupportedFlavorException, IOException DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/table/MessageReferencesTransfer.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/table/action/TagMessageMenu.java
catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); return false; }
// in java/org/columba/mail/gui/table/TableView.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } JOptionPane.showMessageDialog(this, "Error while loading column: " + name + "\n" + e.getMessage()); }
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; }
// in java/org/columba/mail/pop3/POP3ServerCollection.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; }
// in java/org/columba/mail/imap/IMAPServer.java
catch (Exception e) { // don't care }
// in java/org/columba/mail/shutdown/ClearRecentFlagPlugin.java
catch (Exception e1) { }
// in java/org/columba/mail/filter/FilterCompoundCommand.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/filter/plugins/AddressbookFilter.java
catch (Exception ex) { return false; }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } // TODO (@author fdietz): i18n int value = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), "An error occured while saving the spam database.\n" + "Try again?", "Error saving database", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (value == JOptionPane.YES_OPTION) { save(); } }
// in java/org/columba/mail/spam/command/LearnMessageAsSpamCommand.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/command/LearnMessageAsHamCommand.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinPlugin.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/spam/spamassassin/ExternalToolsHelper.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { e.printStackTrace(System.err); exitStatus = 1; }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (Exception e) { LOG.severe("Error substituting special characters: " + e.getMessage()); return null; // error }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (Exception e) { LOG.severe("Error substituting special characters: " + e.getMessage()); return null; // error }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/folder/imap/IMAPCache.java
catch (Exception e) { return null; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
catch (Exception e1) { // don't care }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/headercache/SyncHeaderList.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (Exception e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/mailboximport/AbstractMailboxImporter.java
catch (Exception ex) { //TODO (@author fdietz): i18n int result = JOptionPane.showConfirmDialog( FrameManager.getInstance().getActiveFrame(), "An error occured while importing a message. Try again?", "Retry message import?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (result == JOptionPane.YES_OPTION) { i--; } else if (result == JOptionPane.CANCEL_OPTION) { worker.cancel(); } }
// in java/org/columba/mail/folder/outbox/OutboxFolder.java
catch (Exception e) { }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception ex) { ex.printStackTrace(); return; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e1) { }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception ex) { }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception ex) { }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error while trying to load filter plugin =" + type); ex.printStackTrace(); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { LOG.severe(e.getMessage()); e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); try { reset(); } catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); } }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { LOG.severe("Creation of Lucene Index failed :" + e.getLocalizedMessage()); // show neat error dialog here }
// in java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java
catch (Exception e) { LOG.warning("Error creating new virtual folder: " + e.getMessage()); return null; }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception e) { LOG.severe("Error parsing body: " + e.getMessage()); body = "<em>Error parsing body!!!</em>"; }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception e) { LOG.severe("Error parsing header value: " + e.getMessage()); }
// in java/org/columba/mail/folder/command/TagMessageCommand.java
catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/folder/AbstractFolder.java
catch (Exception e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (Exception e) { nextMessageUid = 0; }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (Exception e) { // e.printStackTrace(); // open composer view showComposer = true; throw e; }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (Exception e) { // TODO (@author fdietz): add error dialog e.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (Exception e1) { // TODO (@author fdietz): add error dialog e1.printStackTrace(); }
14
            
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
catch (Exception ex) { success = false; throw ex; }
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (Exception e) { // e.printStackTrace(); // open composer view showComposer = true; throw e; }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
(Lib) IOException 64
            
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
catch (IOException ioe) { ioe.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/gui/tree/TreeController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/ConfigFrame.java
catch (IOException ioe) { DialogFacade.showExceptionDialog(ioe); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/AttachmentController.java
catch (IOException e) { LOG.warning("Could not add the file '" + file + "' to the attachment list, due to:" + e); }
// in java/org/columba/mail/gui/composer/ComposerModel.java
catch (IOException e) { LOG.warning("Could not add the file '" + file + "' to the attachment list, due to:" + e); }
// in java/org/columba/mail/gui/composer/action/ExternalEditorAction.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerAttachmentTransferHandler.java
catch (IOException e) { LOG.warning("The data that was DnD into the attachment was no longer available."); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (ChangedCharSetException ccse) { // try again, but ignore charset specification in the html try { loadHtmlIntoView(text, true); } catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); } }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (IOException e) { // other IOExceptions than ChangedCharsetException LOG.severe("Error setting view content: " + e.getMessage()); }
// in java/org/columba/mail/gui/composer/SignatureView.java
catch (IOException ex) { textPane.setText(""); }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor."); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor:\n" + ex.getMessage()); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(null, "Error: Cannot read from temp file used " + "by external editor."); return ""; }
// in java/org/columba/mail/gui/table/TableController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/messageframe/MessageFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/messageframe/MessageFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (IOException e1) { }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { // Now the state of the procotol is more certain correct }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
catch (IOException ioe) { ioe.printStackTrace(); }
// in java/org/columba/mail/spellcheck/ASpellInterface.java
catch (IOException e) { String msg = "Cannot check selection.\nError (Interface) is: " + e.getMessage(); LOG.info(msg); checkedBuffer = null; }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot create aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/config/AccountList.java
catch (IOException e) { //Do nothing }
// in java/org/columba/mail/folder/imap/IMAPCache.java
catch (IOException e) { cache.clear(); }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); throw new RuntimeException("Mailbox is corrupted!"); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { JOptionPane.showMessageDialog(null, e.getLocalizedMessage(), "Error while creating Lucene Index", JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { // Remove of lock didn't work -> delete by hand File commitLock = new File(indexDir, "commit.lock"); if (commitLock.exists()) { commitLock.delete(); } File writeLock = new File(indexDir, "write.lock"); if (writeLock.exists()) { writeLock.delete(); } }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); try { reset(); } catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); } }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
catch (IOException e) { throw new FolderInconsistentException(); }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe_) { }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString( "statusbar", "message", "err_export_messages_msg"), MailResourceLoader.getString("statusbar", "messages", "err_export_messages_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
catch (IOException ioe) { String[] options = new String[] { MailResourceLoader.getString("statusbar", "message", errorRetryMessage), MailResourceLoader.getString("statusbar", "message", errorIgnoreMessage), MailResourceLoader .getString("", "global", "cancel") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("statusbar", "message", errorCopyMessage), MailResourceLoader.getString("statusbar", "message", errorTitle), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]); switch (result) { case JOptionPane.YES_OPTION: //retry copy j--; break; case JOptionPane.CANCEL_OPTION: worker.cancel(); default: continue; } }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving message to file: " + ioe.getMessage()); }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving msg source to file: " + ioe.getMessage()); JOptionPane.showMessageDialog(null, MailResourceLoader.getString("dialog", "saveas", "err_save_msg"), MailResourceLoader.getString("dialog", "saveas", "err_save_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (IOException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (IOException e1) { }
// in java/org/columba/mail/composer/MessageComposer.java
catch (IOException ex) { ex.printStackTrace(); return ""; }
// in java/org/columba/mail/composer/SendableMessage.java
catch (IOException e) { e.printStackTrace(); }
7
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot create aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); throw new RuntimeException("Mailbox is corrupted!"); }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
catch (IOException e) { throw new FolderInconsistentException(); }
(Lib) PluginHandlerNotFoundException 18
            
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginHandlerNotFoundException e2) { LOG.severe("Error while loading plugin: " + e2.getMessage()); if (Logging.DEBUG) e2.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginHandlerNotFoundException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/plugins/DefaultActionRow.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/ActionList.java
catch (PluginHandlerNotFoundException ex) { if (Logging.DEBUG) { ex.printStackTrace(); } }
// in java/org/columba/mail/gui/config/filter/util/CriteriaComboBoxRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/util/ActionComboBoxRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/mailboximport/ImportWizardLauncher.java
catch (PluginHandlerNotFoundException ex) { throw new RuntimeException(ex); }
// in java/org/columba/mail/gui/config/mailboximport/PluginListCellRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/general/MailOptionsDialog.java
catch (PluginHandlerNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/action/ReceiveSendAction.java
catch (PluginHandlerNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (PluginHandlerNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/table/TableView.java
catch (PluginHandlerNotFoundException ex) { ex.printStackTrace(); }
// in java/org/columba/mail/pgp/JSCFController.java
catch (PluginHandlerNotFoundException e) { LOG.fine("PluginHandler not found" + e); if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginHandlerNotFoundException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (PluginHandlerNotFoundException phnfe) { throw new RuntimeException(phnfe); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (PluginHandlerNotFoundException e) { // TODO (@author fdietz): show error dialoghere e.printStackTrace(); }
2
            
// in java/org/columba/mail/gui/config/mailboximport/ImportWizardLauncher.java
catch (PluginHandlerNotFoundException ex) { throw new RuntimeException(ex); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (PluginHandlerNotFoundException phnfe) { throw new RuntimeException(phnfe); }
(Lib) ParserException 17
            
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/message/action/AddToAddressbookAction.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/config/account/IdentityPanel.java
catch (ParserException pe) {}
// in java/org/columba/mail/gui/config/account/IdentityPanel.java
catch (ParserException pe) { JOptionPane.showMessageDialog(this, MailResourceLoader.getString("dialog", "account", "invalidaddress")); return false; }
// in java/org/columba/mail/gui/config/accountwizard/IdentityStep.java
catch (ParserException pe) { return null; }
// in java/org/columba/mail/gui/composer/command/SaveMessageCommand.java
catch (ParserException e) { addresses[i] = addresses[i - 1]; }
// in java/org/columba/mail/main/MailMain.java
catch (ParserException e1) { LOG.warning(e1.getLocalizedMessage()); }
// in java/org/columba/mail/pop3/POP3Server.java
catch (ParserException e) { LOG .severe("Skipped message: Error parsing message. Message source:\n " + source); return null; }
// in java/org/columba/mail/config/AccountItem.java
catch (ParserException ex) { ex.printStackTrace(); }
// in java/org/columba/mail/parser/PassiveHeaderParserInputStream.java
catch (ParserException e) { //TODO (@author tstich): do something }
// in java/org/columba/mail/folder/headercache/DefaultHeaderBinding.java
catch (ParserException e) { }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (ParserException e1) { throw new SMTPException(e1); }
// in java/org/columba/mail/composer/MessageComposer.java
catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/composer/MessageComposer.java
catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); }
2
            
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (ParserException e1) { throw new SMTPException(e1); }
(Lib) DatabaseException 16
            
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.fine(e.getMessage()); return false; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); return 0; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return new Object[0]; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return new HashSet(); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return null; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
5
            
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
(Lib) ServiceNotFoundException 16
            
// in java/org/columba/mail/gui/message/action/AddToAddressbookAction.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return; }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/contact/list/ContactDNDListView.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/search/ResultList.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/search/ResultList.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/HeaderController.java
catch (ServiceNotFoundException e) { }
// in java/org/columba/mail/gui/composer/HeaderController.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/contact/SelectAddressDialog.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/contact/SelectAddressDialog.java
catch (ServiceNotFoundException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/composer/contact/FolderComboBox.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/filter/plugins/AddressbookFilter.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return false; }
// in java/org/columba/mail/parser/ListBuilder.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/parser/ListBuilder.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return; }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return; }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
0
(Lib) IMAPDisconnectedException 15
            
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e1) { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return protocol.list(reference, pattern); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMimeTree(uid, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMimePartBodyStream(uid, address, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getHeaders(uid, keys, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getAllHeaders(uid, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMimePartSourceStream(uid, address, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMessageSourceStream(uid, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { markMessage(uids, variant, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { setFlags(uids, flags, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getIndex(uid, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return search(key, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return search(filterRule, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return fetchSubscribedFolders(); }
0
(Lib) NumberFormatException 9
            
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (NumberFormatException e) { }
// in java/org/columba/mail/gui/config/account/OutgoingServerPanel.java
catch (NumberFormatException e) { }
// in java/org/columba/mail/pop3/POP3Store.java
catch (NumberFormatException e) { // Just use the default as fallback }
// in java/org/columba/mail/imap/IMAPServer.java
catch (NumberFormatException e) { // Just use the default as fallback }
// in java/org/columba/mail/filter/plugins/AccountFilter.java
catch (NumberFormatException e) { criteriaAccountUid = -1; }
// in java/org/columba/mail/filter/plugins/ColorFilter.java
catch (NumberFormatException e) { criteriaRGB = 0; }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (NumberFormatException e) { }
// in java/org/columba/mail/folder/AbstractFolder.java
catch (NumberFormatException ex) { node.setInteger("uid", nextUid++); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (NumberFormatException e) { //Fallback to Securest Login method }
0
(Lib) UnsupportedCharsetException 9
            
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
catch (UnsupportedCharsetException e) { charsetName = System.getProperty("file.encoding"); charset = Charset.forName(charsetName); }
// in java/org/columba/mail/gui/charset/CharacterEncodingSubMenu.java
catch (UnsupportedCharsetException e) { if (Logging.DEBUG) e.printStackTrace(); result[i] = null; }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (UnsupportedCharsetException ex) { // ignore this }
// in java/org/columba/mail/gui/composer/command/RedirectCommand.java
catch( UnsupportedCharsetException e ) { // Stick with the default charset }
// in java/org/columba/mail/gui/composer/command/OpenMessageWithComposerCommand.java
catch( UnsupportedCharsetException e ) { // Stick with the default charset }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
catch( UnsupportedCharsetException e ) { // Stick with the default charset }
// in java/org/columba/mail/gui/composer/command/ForwardInlineCommand.java
catch( UnsupportedCharsetException e ) { // Stick with the default charset }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (UnsupportedCharsetException e) { charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (UnsupportedCharsetException e) { charset = Charset.forName(System.getProperty("file.encoding")); }
0
(Lib) PluginException 8
            
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginException e1) { LOG.severe("Error while loading plugin: " + e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/config/mailboximport/PluginStep.java
catch (PluginException e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/gui/config/mailboximport/MailboxImporter.java
catch (PluginException e1) { if (Logging.DEBUG) e1.printStackTrace(); return; }
// in java/org/columba/mail/gui/action/ReceiveSendAction.java
catch (PluginException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (PluginException e1) { e1.printStackTrace(); }
0
(Lib) POP3Exception 7
            
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { // CAPA not supported capas = new String[] {}; }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { // APOP not supported }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (POP3Exception e) { throw new SMTPException(e); }
3
            
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (POP3Exception e) { throw new SMTPException(e); }
(Lib) MalformedURLException 6
            
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (MalformedURLException mue) { return null; }
// in java/org/columba/mail/gui/config/filter/ConfigFrame.java
catch (MalformedURLException mue) { DialogFacade.showExceptionDialog(mue); }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinExternalToolPlugin.java
catch (MalformedURLException mue) { }
// in java/org/columba/mail/spam/spamassassin/SpamcExternalToolPlugin.java
catch (MalformedURLException mue) { }
// in java/org/columba/mail/spam/spamassassin/SALearnExternalToolPlugin.java
catch (MalformedURLException mue) { }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (MalformedURLException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; }
0
(Lib) IMAPException 5
            
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { // CAPA not supported capabilities = new String[0]; }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { // Entry does not exist on server // -> add nothing }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; }
4
            
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; }
(Lib) NoSuchMethodException 5
            
// in java/org/columba/mail/gui/config/mailboximport/PluginStep.java
catch (NoSuchMethodException nsme) { }
// in java/org/columba/mail/gui/config/accountwizard/IdentityStep.java
catch (NoSuchMethodException nsme) {}
// in java/org/columba/mail/gui/config/accountwizard/IncomingServerStep.java
catch (NoSuchMethodException nsme) { }
// in java/org/columba/mail/gui/config/accountwizard/IncomingServerStep.java
catch (NoSuchMethodException nsme) { }
// in java/org/columba/mail/gui/config/accountwizard/OutgoingServerStep.java
catch (NoSuchMethodException nsme) { }
0
(Lib) StoreException 5
            
// in java/org/columba/mail/gui/message/action/AddToAddressbookAction.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/HeaderController.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (StoreException e) { e.printStackTrace(); }
0
(Lib) BadLocationException 4
            
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (BadLocationException e1) { url.setSender(""); }
// in java/org/columba/mail/gui/composer/EmailNameAutoCompleter.java
catch (BadLocationException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (BadLocationException e) { }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (BadLocationException e) { LOG.severe("Error deleting old view content: " + e.getMessage()); return; }
0
(Lib) JSCFException 4
            
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (JSCFException e) { e.printStackTrace(); LOG.severe(e.getMessage()); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = e.getMessage(); // just show the encrypted raw message decryptedStream = encryptedPart; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (JSCFException e) { if (Logging.DEBUG) e.printStackTrace(); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = e.getMessage(); // something really got wrong here -> show error dialog // JOptionPane.showMessageDialog(null, e.getMessage()); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; }
// in java/org/columba/mail/pgp/JSCFController.java
catch (JSCFException e) { e.printStackTrace(); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (JSCFException e1) { if (e1 instanceof CancelledException) { // user cancelled sending operation // open composer view showComposer = true; return; } else { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), e1.getMessage()); // open composer view showComposer = true; return; } }
0
(Lib) MailboxInfoInvalidException 4
            
// in java/org/columba/mail/folder/headercache/SyncHeaderList.java
catch (MailboxInfoInvalidException e) { // Can't happen }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); }
0
(Lib) AuthenticationException 3
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
6
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
(Lib) InterruptedException 3
            
// in java/org/columba/mail/gui/message/command/SaveAttachmentTemporaryCommand.java
catch (InterruptedException e) { LOG.warning("The thread waiting for the Save Attachment Temporary command was interrupted."); }
// in java/org/columba/mail/main/MailMain.java
catch (InterruptedException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/outbox/SendListManager.java
catch (InterruptedException e) { }
0
(Lib) ParseException 3
            
// in java/org/columba/mail/gui/config/filter/plugins/DateCriteriaRow.java
catch (ParseException e) { // Fall back to today date = new Date(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (java.text.ParseException ex) { // should never happen ex.printStackTrace(); }
// in java/org/columba/mail/filter/plugins/DateFilter.java
catch (java.text.ParseException ex) { // should never happen LOG.severe("Date unparsable: "+pattern); searchPattern = new Date(); }
0
(Lib) PluginLoadingFailedException 3
            
// in java/org/columba/mail/gui/tagging/MailTagList.java
catch (PluginLoadingFailedException e) { e.printStackTrace(); }
// in java/org/columba/mail/main/MailMain.java
catch (PluginLoadingFailedException e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (PluginLoadingFailedException e) { e.printStackTrace(); }
0
(Lib) RuntimeException 3
            
// in java/org/columba/mail/gui/tree/TreeView.java
catch (RuntimeException re) { e.dropComplete(false); }
// in java/org/columba/mail/main/MailMain.java
catch (RuntimeException e) { e.printStackTrace(); }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (RuntimeException e) { }
0
(Lib) SMTPException 3
            
// in java/org/columba/mail/gui/config/account/OutgoingServerPanel.java
catch (SMTPException e1) { LOG.severe("Server does not support the CAPA command"); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e1) { // EHLO not supported -> AUTH not supported if( protocol.getState() < SMTPProtocol.PLAIN ) { protocol.openPort(); } protocol.helo(InetAddress.getLocalHost()); capas = new String[] {}; }
1
            
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
(Lib) URISyntaxException 3
            
// in java/org/columba/mail/gui/composer/ComposerModel.java
catch (URISyntaxException e) { // if this is no URI addFileAttachment(new File(s)); }
// in java/org/columba/mail/search/SearchResultBuilder.java
catch (URISyntaxException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/TagMessageCommand.java
catch (URISyntaxException e) { e.printStackTrace(); }
0
(Lib) ClassCastException 2
            
// in java/org/columba/mail/gui/config/accountlist/StringAccountRenderer.java
catch (ClassCastException ex) { LOG.info(" filter renderer: " + ex.getMessage()); //$NON-NLS-1$ str = ""; }
// in java/org/columba/mail/gui/table/plugins/BasicRenderer.java
catch (ClassCastException ex) { LOG.info("headertablecommonrenderer: " + ex.getMessage()); //$NON-NLS-1$ str = ""; }
0
(Lib) CommandCancelledException 2
            
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (CommandCancelledException e) { server.logout(); // clear statusbar message server.getObservable().clearMessage(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (CommandCancelledException e) { }
0
(Lib) FileNotFoundException 2
            
// in java/org/columba/mail/gui/config/filter/ConfigFrame.java
catch (FileNotFoundException fnfe) { DialogFacade.showExceptionDialog(fnfe); }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.FileNotFoundException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot read from temp file used " + "by external editor."); return ""; }
0
(Domain) FolderCreationException 2
            
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/gui/config/accountwizard/AccountCreator.java
catch (FolderCreationException e1) { e1.printStackTrace(); }
0
(Domain) FolderInconsistentException 2
            
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (FolderInconsistentException e) { super.removeMessage(uid); throw e; }
2
            
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (FolderInconsistentException e) { super.removeMessage(uid); throw e; }
(Lib) IllegalArgumentException 2
            
// in java/org/columba/mail/gui/table/TableView.java
catch (IllegalArgumentException e) { }
// in java/org/columba/mail/folder/headercache/DefaultHeaderBinding.java
catch (IllegalArgumentException e) { }
0
(Lib) IndexOutOfBoundsException 2
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); }
// in java/org/columba/mail/folder/headercache/DefaultHeaderBinding.java
catch (IndexOutOfBoundsException e) { }
1
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); }
(Lib) NoSuchAlgorithmException 2
            
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (NoSuchAlgorithmException nsae) { }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (NoSuchAlgorithmException nsae) { }
0
(Lib) SSLException 2
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
2
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
(Lib) ChangedCharSetException 1
            
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (ChangedCharSetException ccse) { // try again, but ignore charset specification in the html try { loadHtmlIntoView(text, true); } catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); } }
0
(Lib) Error 1
            
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Error e) { viewerPlugin = createHTMLViewerPluginInstance("Default"); if (Logging.DEBUG) e.printStackTrace(); }
0
(Lib) IllegalCharsetNameException 1
            
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
catch (IllegalCharsetNameException e) { charsetName = System.getProperty("file.encoding"); charset = Charset.forName(charsetName); }
0
(Lib) MissingResourceException 1
            
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (MissingResourceException ex) { name = item.getString("property", "name"); }
0
(Lib) NullPointerException 1
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); }
1
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); }
(Lib) SocketException 1
            
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); }
2
            
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); }
(Domain) SpellException 1
            
// in java/org/columba/mail/spellcheck/ASpellInterface.java
catch (SpellException e) { String msg = "Cannot check selection.\nError (Aspell) is: " + e.getMessage(); LOG.info(msg); checkedBuffer = null; }
0
(Lib) UnsupportedEncodingException 1
            
// in java/org/columba/mail/shutdown/ClearRecentFlagPlugin.java
catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }
0
(Lib) UnsupportedFlavorException 1
            
// in java/org/columba/mail/gui/composer/ComposerAttachmentTransferHandler.java
catch (UnsupportedFlavorException e) { LOG.warning("A transferable with unsupported flavors tried to import data into the attachment gui."); }
0

Exception Recast Summary

There is a common practice of throwing exceptions from within a catch block (e.g. for wrapping a low-level exception). The following table summarizes the usage of this practice in the application. The last column gives the number of times it happens for a pair of exceptions. The graph below the table graphically renders the same information. For a given node, its color represents its origin (blue means library exception, orange means domain exception); the left-most number is the number of times it is thrown, the right-most is the number of times it is caught.

Catch Throw
(Lib) Exception
(Domain) SpellException
(Lib) RuntimeException
(Domain) FolderCreationException
(Lib) CommandCancelledException
Unknown
1
                    
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } }
2
                    
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
3
                    
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
1
                    
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
7
                    
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
catch (Exception ex) { success = false; throw ex; }
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (Exception e) { // e.printStackTrace(); // open composer view showComposer = true; throw e; }
(Domain) FolderInconsistentException
(Lib) CommandCancelledException
Unknown
1
                    
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
1
                    
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (FolderInconsistentException e) { super.removeMessage(uid); throw e; }
(Lib) ParserException
(Lib) SMTPException
Unknown
1
                    
// in java/org/columba/mail/smtp/SMTPServer.java
catch (ParserException e1) { throw new SMTPException(e1); }
1
                    
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; }
(Lib) IOException
(Lib) CommandCancelledException
(Domain) SpellException
(Lib) RuntimeException
(Domain) FolderInconsistentException
3
                    
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); }
2
                    
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot create aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); }
1
                    
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); throw new RuntimeException("Mailbox is corrupted!"); }
1
                    
// in java/org/columba/mail/folder/mh/MHDataStorage.java
catch (IOException e) { throw new FolderInconsistentException(); }
(Lib) PluginHandlerNotFoundException
(Lib) RuntimeException
2
                    
// in java/org/columba/mail/gui/config/mailboximport/ImportWizardLauncher.java
catch (PluginHandlerNotFoundException ex) { throw new RuntimeException(ex); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (PluginHandlerNotFoundException phnfe) { throw new RuntimeException(phnfe); }
(Lib) SMTPException
(Lib) CommandCancelledException
1
                    
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
(Lib) POP3Exception
(Lib) CommandCancelledException
(Lib) SMTPException
Unknown
1
                    
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
1
                    
// in java/org/columba/mail/smtp/SMTPServer.java
catch (POP3Exception e) { throw new SMTPException(e); }
1
                    
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
(Lib) SocketException
(Lib) CommandCancelledException
Unknown
1
                    
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); }
1
                    
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); }
(Lib) IndexOutOfBoundsException
(Lib) MessageNotOnServerException
1
                    
// in java/org/columba/mail/pop3/POP3Store.java
catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); }
(Lib) NullPointerException
(Lib) MessageNotOnServerException
1
                    
// in java/org/columba/mail/pop3/POP3Store.java
catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); }
(Lib) AuthenticationException
(Lib) CommandCancelledException
Unknown
3
                    
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
3
                    
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
(Lib) SSLException
(Lib) CommandCancelledException
2
                    
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
(Lib) IMAPException
(Lib) CommandCancelledException
Unknown
1
                    
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
3
                    
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; }
(Lib) DatabaseException
(Lib) RuntimeException
Unknown
3
                    
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
2
                    
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }

Caught / Thrown Exception

Not all exceptions are thrown AND caught in the same project. The following table gives the exceptions types with respect to this. The lower left hand side sell lists all exceptions thrown but not caught (prevalent for libraries), the upper right-hand side lists all exceptions caught but not thrown (usually coming from external dependencies).

Thrown Not Thrown
Caught
Type Name
(Lib) Exception
(Domain) SpellException
(Domain) FolderCreationException
(Domain) FolderInconsistentException
(Lib) CommandCancelledException
(Lib) IllegalArgumentException
(Lib) RuntimeException
(Lib) UnsupportedFlavorException
(Lib) SMTPException
(Lib) MailboxInfoInvalidException
Type Name
(Lib) JSCFException
(Lib) ParserException
(Lib) IOException
(Lib) ServiceNotFoundException
(Lib) StoreException
(Lib) PluginException
(Lib) PluginHandlerNotFoundException
(Lib) InterruptedException
(Lib) Error
(Lib) MalformedURLException
(Lib) BadLocationException
(Lib) UnsupportedCharsetException
(Lib) IllegalCharsetNameException
(Lib) MissingResourceException
(Lib) FileNotFoundException
(Lib) ParseException
(Lib) NoSuchMethodException
(Lib) ClassCastException
(Lib) NumberFormatException
(Lib) PluginLoadingFailedException
(Lib) URISyntaxException
(Lib) ChangedCharSetException
(Lib) POP3Exception
(Lib) SocketException
(Lib) IndexOutOfBoundsException
(Lib) NullPointerException
(Lib) AuthenticationException
(Lib) SSLException
(Lib) IMAPException
(Lib) IMAPDisconnectedException
(Lib) UnsupportedEncodingException
(Lib) NoSuchAlgorithmException
(Lib) DatabaseException
Not caught
Type Name
(Lib) MessageNotOnServerException
(Domain) WrongPassphraseException
(Domain) ProgramNotFoundException

Methods called in Catch and Finally Blocks

The following shows the methods that are called inside catch blocks (first column) and finally blocks (second column). For each method, we give the number of times it is called in a catch block (second sub-column), and the total number of calls (third sub-column). If the method name is red, it means that it is only called from catch/finally blocks. Hovering over a number triggers showing code snippets from the application code.

Catch Finally
Method Nbr Nbr total
printStackTrace 129
                  
// in java/org/columba/mail/gui/message/MessageController.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (JSCFException e) { e.printStackTrace(); LOG.severe(e.getMessage()); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = e.getMessage(); // just show the encrypted raw message decryptedStream = encryptedPart; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (JSCFException e) { if (Logging.DEBUG) e.printStackTrace(); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = e.getMessage(); // something really got wrong here -> show error dialog // JOptionPane.showMessageDialog(null, e.getMessage()); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; }
// in java/org/columba/mail/gui/message/action/AddToAddressbookAction.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return; }
// in java/org/columba/mail/gui/message/action/AddToAddressbookAction.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/message/action/AddToAddressbookAction.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginException e1) { LOG.severe("Error while loading plugin: " + e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginHandlerNotFoundException e2) { LOG.severe("Error while loading plugin: " + e2.getMessage()); if (Logging.DEBUG) e2.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
catch (IOException ioe) { ioe.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { viewerPlugin = createHTMLViewerPluginInstance("Default"); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Error e) { viewerPlugin = createHTMLViewerPluginInstance("Default"); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginHandlerNotFoundException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/tree/action/CreateVirtualFolderAction.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/tree/comparator/UnreadFolderComparator.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/tree/TreeController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTransfer.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/charset/CharacterEncodingSubMenu.java
catch (UnsupportedCharsetException e) { if (Logging.DEBUG) e.printStackTrace(); result[i] = null; }
// in java/org/columba/mail/gui/config/filter/ObjectArrayTransfer.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/ActionList.java
catch (PluginHandlerNotFoundException ex) { if (Logging.DEBUG) { ex.printStackTrace(); } }
// in java/org/columba/mail/gui/config/filter/ActionList.java
catch (Exception ex) { ex.printStackTrace(); // this probably means that the configuration // is wrong // -> change this to a sane default value action.setAction("Mark Message"); ((MailFilterAction) action).setMarkVariant("read"); row = null; }
// in java/org/columba/mail/gui/config/mailboximport/PluginStep.java
catch (PluginException e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/gui/config/mailboximport/MailboxImporter.java
catch (PluginException e1) { if (Logging.DEBUG) e1.printStackTrace(); return; }
// in java/org/columba/mail/gui/config/general/MailOptionsDialog.java
catch (PluginHandlerNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/config/accountlist/AccountListDialog.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/accountlist/AccountListDialog.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/accountlist/AccountListDialog.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/search/SearchFrame.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/accountwizard/AccountCreator.java
catch (FolderCreationException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/config/accountwizard/AccountCreator.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/action/ReceiveSendAction.java
catch (PluginHandlerNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/action/ReceiveSendAction.java
catch (PluginException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/contact/list/ContactDNDListView.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/search/ResultList.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/search/ResultList.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/tagging/MailTagList.java
catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
// in java/org/columba/mail/gui/tagging/MailTagList.java
catch (PluginLoadingFailedException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/filtertoolbar/FilterToolbar.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/HeaderController.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/HeaderController.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerSpellCheck.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/EmailNameAutoCompleter.java
catch (BadLocationException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/action/ExternalEditorAction.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/contact/SelectAddressDialog.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/contact/SelectAddressDialog.java
catch (ServiceNotFoundException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/composer/contact/FolderComboBox.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (PluginHandlerNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/table/TableController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/table/MessageReferencesTransfer.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/table/action/TagMessageMenu.java
catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); return false; }
// in java/org/columba/mail/gui/table/TableView.java
catch (PluginHandlerNotFoundException ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/table/TableView.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } JOptionPane.showMessageDialog(this, "Error while loading column: " + name + "\n" + e.getMessage()); }
// in java/org/columba/mail/gui/messageframe/MessageFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/messageframe/MessageFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/main/MailMain.java
catch (RuntimeException e) { e.printStackTrace(); }
// in java/org/columba/mail/pop3/POP3ServerCollection.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (java.text.ParseException ex) { // should never happen ex.printStackTrace(); }
// in java/org/columba/mail/shutdown/ClearRecentFlagPlugin.java
catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }
// in java/org/columba/mail/filter/FilterCompoundCommand.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/filter/plugins/AddressbookFilter.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return false; }
// in java/org/columba/mail/pgp/JSCFController.java
catch (JSCFException e) { e.printStackTrace(); }
// in java/org/columba/mail/pgp/JSCFController.java
catch (PluginHandlerNotFoundException e) { LOG.fine("PluginHandler not found" + e); if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginHandlerNotFoundException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } // TODO (@author fdietz): i18n int value = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), "An error occured while saving the spam database.\n" + "Try again?", "Error saving database", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (value == JOptionPane.YES_OPTION) { save(); } }
// in java/org/columba/mail/spam/command/LearnMessageAsSpamCommand.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/command/LearnMessageAsHamCommand.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinPlugin.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
catch (IOException ioe) { ioe.printStackTrace(); }
// in java/org/columba/mail/spam/spamassassin/ExternalToolsHelper.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { e.printStackTrace(System.err); exitStatus = 1; }
// in java/org/columba/mail/config/AccountItem.java
catch (ParserException ex) { ex.printStackTrace(); }
// in java/org/columba/mail/parser/ListBuilder.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/parser/ListBuilder.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/search/SearchResultBuilder.java
catch (URISyntaxException e) { e.printStackTrace(); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (PluginLoadingFailedException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/headercache/SyncHeaderList.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception ex) { ex.printStackTrace(); return; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error while trying to load filter plugin =" + type); ex.printStackTrace(); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { LOG.severe(e.getMessage()); e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/TagMessageCommand.java
catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); }
// in java/org/columba/mail/folder/command/TagMessageCommand.java
catch (URISyntaxException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return; }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return; }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (PluginHandlerNotFoundException e) { // TODO (@author fdietz): show error dialoghere e.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (Exception e) { // TODO (@author fdietz): add error dialog e.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (PluginException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (Exception e1) { // TODO (@author fdietz): add error dialog e1.printStackTrace(); }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/composer/MessageComposer.java
catch (IOException ex) { ex.printStackTrace(); return ""; }
// in java/org/columba/mail/composer/MessageComposer.java
catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/composer/MessageComposer.java
catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/composer/SendableMessage.java
catch (IOException e) { e.printStackTrace(); }
135
getMessage 66
                  
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (JSCFException e) { e.printStackTrace(); LOG.severe(e.getMessage()); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = e.getMessage(); // just show the encrypted raw message decryptedStream = encryptedPart; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (JSCFException e) { if (Logging.DEBUG) e.printStackTrace(); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = e.getMessage(); // something really got wrong here -> show error dialog // JOptionPane.showMessageDialog(null, e.getMessage()); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginException e1) { LOG.severe("Error while loading plugin: " + e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginHandlerNotFoundException e2) { LOG.severe("Error while loading plugin: " + e2.getMessage()); if (Logging.DEBUG) e2.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginHandlerNotFoundException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/plugins/DefaultActionRow.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/util/CriteriaComboBoxRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/util/ActionComboBoxRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/mailboximport/PluginListCellRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/accountlist/StringAccountRenderer.java
catch (ClassCastException ex) { LOG.info(" filter renderer: " + ex.getMessage()); //$NON-NLS-1$ str = ""; }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (ChangedCharSetException ccse) { // try again, but ignore charset specification in the html try { loadHtmlIntoView(text, true); } catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); } }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (IOException e) { // other IOExceptions than ChangedCharsetException LOG.severe("Error setting view content: " + e.getMessage()); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (BadLocationException e) { LOG.severe("Error deleting old view content: " + e.getMessage()); return; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor:\n" + ex.getMessage()); return null; }
// in java/org/columba/mail/gui/table/TableView.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } JOptionPane.showMessageDialog(this, "Error while loading column: " + name + "\n" + e.getMessage()); }
// in java/org/columba/mail/gui/table/plugins/BasicRenderer.java
catch (ClassCastException ex) { LOG.info("headertablecommonrenderer: " + ex.getMessage()); //$NON-NLS-1$ str = ""; }
// in java/org/columba/mail/main/MailMain.java
catch (InterruptedException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginHandlerNotFoundException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/spellcheck/ASpellInterface.java
catch (SpellException e) { String msg = "Cannot check selection.\nError (Aspell) is: " + e.getMessage(); LOG.info(msg); checkedBuffer = null; }
// in java/org/columba/mail/spellcheck/ASpellInterface.java
catch (IOException e) { String msg = "Cannot check selection.\nError (Interface) is: " + e.getMessage(); LOG.info(msg); checkedBuffer = null; }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (Exception e) { LOG.severe("Error substituting special characters: " + e.getMessage()); return null; // error }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (Exception e) { LOG.severe("Error substituting special characters: " + e.getMessage()); return null; // error }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.fine(e.getMessage()); return false; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); return 0; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return new Object[0]; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return new HashSet(); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return null; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { LOG.severe(e.getMessage()); e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java
catch (Exception e) { LOG.warning("Error creating new virtual folder: " + e.getMessage()); return null; }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception e) { LOG.severe("Error parsing body: " + e.getMessage()); body = "<em>Error parsing body!!!</em>"; }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving message to file: " + ioe.getMessage()); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception e) { LOG.severe("Error parsing header value: " + e.getMessage()); }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving msg source to file: " + ioe.getMessage()); JOptionPane.showMessageDialog(null, MailResourceLoader.getString("dialog", "saveas", "err_save_msg"), MailResourceLoader.getString("dialog", "saveas", "err_save_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (MalformedURLException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (IOException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; }
// in java/org/columba/mail/folder/AbstractFolder.java
catch (Exception e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (JSCFException e1) { if (e1 instanceof CancelledException) { // user cancelled sending operation // open composer view showComposer = true; return; } else { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), e1.getMessage()); // open composer view showComposer = true; return; } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
86
severe 51
                  
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (JSCFException e) { e.printStackTrace(); LOG.severe(e.getMessage()); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = e.getMessage(); // just show the encrypted raw message decryptedStream = encryptedPart; }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginException e1) { LOG.severe("Error while loading plugin: " + e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginHandlerNotFoundException e2) { LOG.severe("Error while loading plugin: " + e2.getMessage()); if (Logging.DEBUG) e2.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginHandlerNotFoundException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/config/account/OutgoingServerPanel.java
catch (SMTPException e1) { LOG.severe("Server does not support the CAPA command"); }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (ChangedCharSetException ccse) { // try again, but ignore charset specification in the html try { loadHtmlIntoView(text, true); } catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); } }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (IOException e) { // other IOExceptions than ChangedCharsetException LOG.severe("Error setting view content: " + e.getMessage()); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (BadLocationException e) { LOG.severe("Error deleting old view content: " + e.getMessage()); return; }
// in java/org/columba/mail/gui/table/action/TagMessageMenu.java
catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); return false; }
// in java/org/columba/mail/main/MailMain.java
catch (PluginLoadingFailedException e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/main/MailMain.java
catch (InterruptedException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/pop3/POP3Server.java
catch (ParserException e) { LOG .severe("Skipped message: Error parsing message. Message source:\n " + source); return null; }
// in java/org/columba/mail/filter/plugins/DateFilter.java
catch (java.text.ParseException ex) { // should never happen LOG.severe("Date unparsable: "+pattern); searchPattern = new Date(); }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginHandlerNotFoundException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (Exception e) { LOG.severe("Error substituting special characters: " + e.getMessage()); return null; // error }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (Exception e) { LOG.severe("Error substituting special characters: " + e.getMessage()); return null; // error }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); return 0; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return new Object[0]; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return new HashSet(); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return null; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (Exception e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); throw new RuntimeException("Mailbox is corrupted!"); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { LOG.severe(e.getMessage()); e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); try { reset(); } catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); } }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { LOG.severe("Creation of Lucene Index failed :" + e.getLocalizedMessage()); // show neat error dialog here }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception e) { LOG.severe("Error parsing body: " + e.getMessage()); body = "<em>Error parsing body!!!</em>"; }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving message to file: " + ioe.getMessage()); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception e) { LOG.severe("Error parsing header value: " + e.getMessage()); }
// in java/org/columba/mail/folder/command/TagMessageCommand.java
catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving msg source to file: " + ioe.getMessage()); JOptionPane.showMessageDialog(null, MailResourceLoader.getString("dialog", "saveas", "err_save_msg"), MailResourceLoader.getString("dialog", "saveas", "err_save_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/AbstractFolder.java
catch (Exception e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (IOException e) { LOG.severe(e.getMessage()); }
57
getString 40
                  
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (MissingResourceException ex) { name = item.getString("property", "name"); }
// in java/org/columba/mail/gui/config/account/IdentityPanel.java
catch (ParserException pe) { JOptionPane.showMessageDialog(this, MailResourceLoader.getString("dialog", "account", "invalidaddress")); return false; }
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString( "statusbar", "message", "err_export_messages_msg"), MailResourceLoader.getString("statusbar", "messages", "err_export_messages_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
catch (IOException ioe) { String[] options = new String[] { MailResourceLoader.getString("statusbar", "message", errorRetryMessage), MailResourceLoader.getString("statusbar", "message", errorIgnoreMessage), MailResourceLoader .getString("", "global", "cancel") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("statusbar", "message", errorCopyMessage), MailResourceLoader.getString("statusbar", "message", errorTitle), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]); switch (result) { case JOptionPane.YES_OPTION: //retry copy j--; break; case JOptionPane.CANCEL_OPTION: worker.cancel(); default: continue; } }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving msg source to file: " + ioe.getMessage()); JOptionPane.showMessageDialog(null, MailResourceLoader.getString("dialog", "saveas", "err_save_msg"), MailResourceLoader.getString("dialog", "saveas", "err_save_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
737
getActiveFrame 15
                  
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor."); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor:\n" + ex.getMessage()); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.FileNotFoundException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot read from temp file used " + "by external editor."); return ""; }
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } // TODO (@author fdietz): i18n int value = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), "An error occured while saving the spam database.\n" + "Try again?", "Error saving database", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (value == JOptionPane.YES_OPTION) { save(); } }
// in java/org/columba/mail/folder/mailboximport/AbstractMailboxImporter.java
catch (Exception ex) { //TODO (@author fdietz): i18n int result = JOptionPane.showConfirmDialog( FrameManager.getInstance().getActiveFrame(), "An error occured while importing a message. Try again?", "Retry message import?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (result == JOptionPane.YES_OPTION) { i--; } else if (result == JOptionPane.CANCEL_OPTION) { worker.cancel(); } }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString( "statusbar", "message", "err_export_messages_msg"), MailResourceLoader.getString("statusbar", "messages", "err_export_messages_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
catch (IOException ioe) { String[] options = new String[] { MailResourceLoader.getString("statusbar", "message", errorRetryMessage), MailResourceLoader.getString("statusbar", "message", errorIgnoreMessage), MailResourceLoader .getString("", "global", "cancel") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("statusbar", "message", errorCopyMessage), MailResourceLoader.getString("statusbar", "message", errorTitle), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]); switch (result) { case JOptionPane.YES_OPTION: //retry copy j--; break; case JOptionPane.CANCEL_OPTION: worker.cancel(); default: continue; } }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (JSCFException e1) { if (e1 instanceof CancelledException) { // user cancelled sending operation // open composer view showComposer = true; return; } else { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), e1.getMessage()); // open composer view showComposer = true; return; } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
34
getInstance 15
                  
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor."); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor:\n" + ex.getMessage()); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.FileNotFoundException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot read from temp file used " + "by external editor."); return ""; }
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } // TODO (@author fdietz): i18n int value = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), "An error occured while saving the spam database.\n" + "Try again?", "Error saving database", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (value == JOptionPane.YES_OPTION) { save(); } }
// in java/org/columba/mail/folder/mailboximport/AbstractMailboxImporter.java
catch (Exception ex) { //TODO (@author fdietz): i18n int result = JOptionPane.showConfirmDialog( FrameManager.getInstance().getActiveFrame(), "An error occured while importing a message. Try again?", "Retry message import?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (result == JOptionPane.YES_OPTION) { i--; } else if (result == JOptionPane.CANCEL_OPTION) { worker.cancel(); } }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString( "statusbar", "message", "err_export_messages_msg"), MailResourceLoader.getString("statusbar", "messages", "err_export_messages_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
catch (IOException ioe) { String[] options = new String[] { MailResourceLoader.getString("statusbar", "message", errorRetryMessage), MailResourceLoader.getString("statusbar", "message", errorIgnoreMessage), MailResourceLoader .getString("", "global", "cancel") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("statusbar", "message", errorCopyMessage), MailResourceLoader.getString("statusbar", "message", errorTitle), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]); switch (result) { case JOptionPane.YES_OPTION: //retry copy j--; break; case JOptionPane.CANCEL_OPTION: worker.cancel(); default: continue; } }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (JSCFException e1) { if (e1 instanceof CancelledException) { // user cancelled sending operation // open composer view showComposer = true; return; } else { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), e1.getMessage()); // open composer view showComposer = true; return; } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
514
warning 15
                  
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (Exception e) { LOG .warning("Could not create temporary email from the attachment."); }
// in java/org/columba/mail/gui/message/command/SaveAttachmentTemporaryCommand.java
catch (InterruptedException e) { LOG.warning("The thread waiting for the Save Attachment Temporary command was interrupted."); }
// in java/org/columba/mail/gui/composer/AttachmentController.java
catch (IOException e) { LOG.warning("Could not add the file '" + file + "' to the attachment list, due to:" + e); }
// in java/org/columba/mail/gui/composer/ComposerModel.java
catch (IOException e) { LOG.warning("Could not add the file '" + file + "' to the attachment list, due to:" + e); }
// in java/org/columba/mail/gui/composer/ComposerAttachmentTransferHandler.java
catch (UnsupportedFlavorException e) { LOG.warning("A transferable with unsupported flavors tried to import data into the attachment gui."); }
// in java/org/columba/mail/gui/composer/ComposerAttachmentTransferHandler.java
catch (IOException e) { LOG.warning("The data that was DnD into the attachment was no longer available."); }
// in java/org/columba/mail/main/MailMain.java
catch (ParserException e1) { LOG.warning(e1.getLocalizedMessage()); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); }
// in java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java
catch (Exception e) { LOG.warning("Error creating new virtual folder: " + e.getMessage()); return null; }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (MalformedURLException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (IOException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; }
24
getLocalizedMessage
14
                  
// in java/org/columba/mail/main/MailMain.java
catch (ParserException e1) { LOG.warning(e1.getLocalizedMessage()); }
// in java/org/columba/mail/main/MailMain.java
catch (PluginLoadingFailedException e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (Exception e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); throw new RuntimeException("Mailbox is corrupted!"); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { JOptionPane.showMessageDialog(null, e.getLocalizedMessage(), "Error while creating Lucene Index", JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); try { reset(); } catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); } }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { LOG.severe("Creation of Lucene Index failed :" + e.getLocalizedMessage()); // show neat error dialog here }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
14
showMessageDialog 14
                  
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/gui/config/account/IdentityPanel.java
catch (ParserException pe) { JOptionPane.showMessageDialog(this, MailResourceLoader.getString("dialog", "account", "invalidaddress")); return false; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor."); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor:\n" + ex.getMessage()); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.FileNotFoundException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot read from temp file used " + "by external editor."); return ""; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(null, "Error: Cannot read from temp file used " + "by external editor."); return ""; }
// in java/org/columba/mail/gui/table/TableView.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } JOptionPane.showMessageDialog(this, "Error while loading column: " + name + "\n" + e.getMessage()); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error while trying to load filter plugin =" + type); ex.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { JOptionPane.showMessageDialog(null, e.getLocalizedMessage(), "Error while creating Lucene Index", JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString( "statusbar", "message", "err_export_messages_msg"), MailResourceLoader.getString("statusbar", "messages", "err_export_messages_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving msg source to file: " + ioe.getMessage()); JOptionPane.showMessageDialog(null, MailResourceLoader.getString("dialog", "saveas", "err_save_msg"), MailResourceLoader.getString("dialog", "saveas", "err_save_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (JSCFException e1) { if (e1 instanceof CancelledException) { // user cancelled sending operation // open composer view showComposer = true; return; } else { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), e1.getMessage()); // open composer view showComposer = true; return; } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
40
getCause
7
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
7
setBoolean 7
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
55
showExceptionDialog
7
                  
// in java/org/columba/mail/gui/tree/TreeViewTransferHandler.java
catch (Exception e) { // UnsupportedFlavorException, IOException DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/config/filter/ConfigFrame.java
catch (FileNotFoundException fnfe) { DialogFacade.showExceptionDialog(fnfe); }
// in java/org/columba/mail/gui/config/filter/ConfigFrame.java
catch (IOException ioe) { DialogFacade.showExceptionDialog(ioe); }
// in java/org/columba/mail/gui/config/filter/ConfigFrame.java
catch (MalformedURLException mue) { DialogFacade.showExceptionDialog(mue); }
// in java/org/columba/mail/gui/config/filter/FilterTransferHandler.java
catch (Exception e) { DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/config/filter/FilterTransferHandler.java
catch (Exception e) { DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/table/TableViewTransferHandler.java
catch (Exception e) { // UnsupportedFlavorException, IOException DialogFacade.showExceptionDialog(e); }
7
Integer 6
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); }
136
createDialog
6
                  
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/plugins/DefaultActionRow.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/util/CriteriaComboBoxRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/util/ActionComboBoxRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/mailboximport/PluginListCellRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
6
forName 6
                  
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
catch (UnsupportedCharsetException e) { charsetName = System.getProperty("file.encoding"); charset = Charset.forName(charsetName); }
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
catch (IllegalCharsetNameException e) { charsetName = System.getProperty("file.encoding"); charset = Charset.forName(charsetName); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (UnsupportedCharsetException e) { charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (UnsupportedCharsetException e) { charset = Charset.forName(System.getProperty("file.encoding")); }
26
getProperty 6
                  
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
catch (UnsupportedCharsetException e) { charsetName = System.getProperty("file.encoding"); charset = Charset.forName(charsetName); }
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
catch (IllegalCharsetNameException e) { charsetName = System.getProperty("file.encoding"); charset = Charset.forName(charsetName); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (UnsupportedCharsetException e) { charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (UnsupportedCharsetException e) { charset = Charset.forName(System.getProperty("file.encoding")); }
14
openPort 6
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e1) { // EHLO not supported -> AUTH not supported if( protocol.getState() < SMTPProtocol.PLAIN ) { protocol.openPort(); } protocol.helo(InetAddress.getLocalHost()); capas = new String[] {}; }
9
showErrorDialog 6
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
8
toString 6
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
216
fireHeaderListCorrupted
5
                  
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); return 0; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
5
setString 5
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
95
showConfirmDialog 5
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } // TODO (@author fdietz): i18n int value = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), "An error occured while saving the spam database.\n" + "Try again?", "Error saving database", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (value == JOptionPane.YES_OPTION) { save(); } }
// in java/org/columba/mail/folder/mailboximport/AbstractMailboxImporter.java
catch (Exception ex) { //TODO (@author fdietz): i18n int result = JOptionPane.showConfirmDialog( FrameManager.getInstance().getActiveFrame(), "An error occured while importing a message. Try again?", "Retry message import?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (result == JOptionPane.YES_OPTION) { i--; } else if (result == JOptionPane.CANCEL_OPTION) { worker.cancel(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
13
MultiLineLabel 4
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
16
getResponse
4
                  
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; }
4
info 4
                  
// in java/org/columba/mail/gui/config/accountlist/StringAccountRenderer.java
catch (ClassCastException ex) { LOG.info(" filter renderer: " + ex.getMessage()); //$NON-NLS-1$ str = ""; }
// in java/org/columba/mail/gui/table/plugins/BasicRenderer.java
catch (ClassCastException ex) { LOG.info("headertablecommonrenderer: " + ex.getMessage()); //$NON-NLS-1$ str = ""; }
// in java/org/columba/mail/spellcheck/ASpellInterface.java
catch (SpellException e) { String msg = "Cannot check selection.\nError (Aspell) is: " + e.getMessage(); LOG.info(msg); checkedBuffer = null; }
// in java/org/columba/mail/spellcheck/ASpellInterface.java
catch (IOException e) { String msg = "Cannot check selection.\nError (Interface) is: " + e.getMessage(); LOG.info(msg); checkedBuffer = null; }
131
ExceptionHandler
3
                  
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/account/OutgoingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
3
File 3
                  
// in java/org/columba/mail/gui/composer/ComposerModel.java
catch (URISyntaxException e) { // if this is no URI addFileAttachment(new File(s)); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { // Remove of lock didn't work -> delete by hand File commitLock = new File(indexDir, "commit.lock"); if (commitLock.exists()) { commitLock.delete(); } File writeLock = new File(indexDir, "write.lock"); if (writeLock.exists()) { writeLock.delete(); } }
54
cancel 3
                  
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); }
// in java/org/columba/mail/folder/mailboximport/AbstractMailboxImporter.java
catch (Exception ex) { //TODO (@author fdietz): i18n int result = JOptionPane.showConfirmDialog( FrameManager.getInstance().getActiveFrame(), "An error occured while importing a message. Try again?", "Retry message import?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (result == JOptionPane.YES_OPTION) { i--; } else if (result == JOptionPane.CANCEL_OPTION) { worker.cancel(); } }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
catch (IOException ioe) { String[] options = new String[] { MailResourceLoader.getString("statusbar", "message", errorRetryMessage), MailResourceLoader.getString("statusbar", "message", errorIgnoreMessage), MailResourceLoader .getString("", "global", "cancel") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("statusbar", "message", errorCopyMessage), MailResourceLoader.getString("statusbar", "message", errorTitle), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]); switch (result) { case JOptionPane.YES_OPTION: //retry copy j--; break; case JOptionPane.CANCEL_OPTION: worker.cancel(); default: continue; } }
4
fine 3
                  
// in java/org/columba/mail/pgp/JSCFController.java
catch (PluginHandlerNotFoundException e) { LOG.fine("PluginHandler not found" + e); if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.fine(e.getMessage()); return false; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; }
51
get 3
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
479
processException
3
                  
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/account/OutgoingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
3
recreateMessageFolderInfo 3
                  
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); }
5
replaceAll 3
                  
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
104
setInteger 3
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/folder/AbstractFolder.java
catch (NumberFormatException ex) { node.setInteger("uid", nextUid++); }
16
showOptionDialog 3
                  
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
catch (IOException ioe) { String[] options = new String[] { MailResourceLoader.getString("statusbar", "message", errorRetryMessage), MailResourceLoader.getString("statusbar", "message", errorIgnoreMessage), MailResourceLoader .getString("", "global", "cancel") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("statusbar", "message", errorCopyMessage), MailResourceLoader.getString("statusbar", "message", errorTitle), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]); switch (result) { case JOptionPane.YES_OPTION: //retry copy j--; break; case JOptionPane.CANCEL_OPTION: worker.cancel(); default: continue; } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
6
Date 2
                  
// in java/org/columba/mail/gui/config/filter/plugins/DateCriteriaRow.java
catch (ParseException e) { // Fall back to today date = new Date(); }
// in java/org/columba/mail/filter/plugins/DateFilter.java
catch (java.text.ParseException ex) { // should never happen LOG.severe("Date unparsable: "+pattern); searchPattern = new Date(); }
9
appendReplacement 2
                  
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { matcher.appendReplacement(modifiedBody, "missing"); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { matcher.appendReplacement(modifiedBody, "missing"); }
7
clearMessage
2
                  
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (CommandCancelledException e) { server.logout(); // clear statusbar message server.getObservable().clearMessage(); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; }
2
createHTMLViewerPluginInstance 2
                  
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { viewerPlugin = createHTMLViewerPluginInstance("Default"); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Error e) { viewerPlugin = createHTMLViewerPluginInstance("Default"); if (Logging.DEBUG) e.printStackTrace(); }
4
delete 2
                  
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { // Remove of lock didn't work -> delete by hand File commitLock = new File(indexDir, "commit.lock"); if (commitLock.exists()) { commitLock.delete(); } File writeLock = new File(indexDir, "write.lock"); if (writeLock.exists()) { writeLock.delete(); } }
11
exists 2
                  
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { // Remove of lock didn't work -> delete by hand File commitLock = new File(indexDir, "commit.lock"); if (commitLock.exists()) { commitLock.delete(); } File writeLock = new File(indexDir, "write.lock"); if (writeLock.exists()) { writeLock.delete(); } }
41
format 2
                  
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
34
getHeaderList 2
                  
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
60
getObservable 2
                  
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (CommandCancelledException e) { server.logout(); // clear statusbar message server.getObservable().clearMessage(); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; }
72
isNO
2
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; }
2
list 2
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e1) { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return protocol.list(reference, pattern); }
169
search 2
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return search(key, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return search(filterRule, folder); }
17
ClearHeaderlistAction 1
                  
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; }
2
FilterRule 1
                  
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); }
4
HashSet 1
                  
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return new HashSet(); }
2
String 1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
15
actionPerformed 1
                  
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; }
29
addFileAttachment 1
                  
// in java/org/columba/mail/gui/composer/ComposerModel.java
catch (URISyntaxException e) { // if this is no URI addFileAttachment(new File(s)); }
6
cancelled 1
                  
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); }
24
clear 1
                  
// in java/org/columba/mail/folder/imap/IMAPCache.java
catch (IOException e) { cache.clear(); }
51
dropComplete 1
                  
// in java/org/columba/mail/gui/tree/TreeView.java
catch (RuntimeException re) { e.dropComplete(false); }
3
equals 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; }
376
fetchSubscribedFolders 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return fetchSubscribedFolders(); }
3
getAllHeaders 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getAllHeaders(uid, folder); }
2
getCode
1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
1
getDelimiter 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e1) { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); }
19
getFilterRule 1
                  
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); }
25
getHeaders 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getHeaders(uid, keys, folder); }
2
getIndex 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getIndex(uid, folder); }
21
getLocalHost 1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e1) { // EHLO not supported -> AUTH not supported if( protocol.getState() < SMTPProtocol.PLAIN ) { protocol.openPort(); } protocol.helo(InetAddress.getLocalHost()); capas = new String[] {}; }
2
getMessageSourceStream 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMessageSourceStream(uid, folder); }
17
getMimePartBodyStream 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMimePartBodyStream(uid, address, folder); }
20
getMimePartSourceStream 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMimePartSourceStream(uid, address, folder); }
4
getMimeTree 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMimeTree(uid, folder); }
3
getName 1
                  
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); }
112
getPassword 1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
8
getSave 1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
6
getSource 1
                  
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; }
63
getState 1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e1) { // EHLO not supported -> AUTH not supported if( protocol.getState() < SMTPProtocol.PLAIN ) { protocol.openPort(); } protocol.helo(InetAddress.getLocalHost()); capas = new String[] {}; }
18
helo
1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e1) { // EHLO not supported -> AUTH not supported if( protocol.getState() < SMTPProtocol.PLAIN ) { protocol.openPort(); } protocol.helo(InetAddress.getLocalHost()); capas = new String[] {}; }
1
initialize 1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
2
isERR
1
                  
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
1
loadHtmlIntoView 1
                  
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (ChangedCharSetException ccse) { // try again, but ignore charset specification in the html try { loadHtmlIntoView(text, true); } catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); } }
2
logout 1
                  
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (CommandCancelledException e) { server.logout(); // clear statusbar message server.getObservable().clearMessage(); }
8
markMessage 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { markMessage(uids, variant, folder); }
9
remove 1
                  
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
77
removeMessage 1
                  
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (FolderInconsistentException e) { super.removeMessage(uid); throw e; }
6
reset 1
                  
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); try { reset(); } catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); } }
15
save 1
                  
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } // TODO (@author fdietz): i18n int value = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), "An error occured while saving the spam database.\n" + "Try again?", "Error saving database", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (value == JOptionPane.YES_OPTION) { save(); } }
15
setAction 1
                  
// in java/org/columba/mail/gui/config/filter/ActionList.java
catch (Exception ex) { ex.printStackTrace(); // this probably means that the configuration // is wrong // -> change this to a sane default value action.setAction("Mark Message"); ((MailFilterAction) action).setMarkVariant("read"); row = null; }
3
setCacheChanged 1
                  
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
4
setFlags 1
                  
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { setFlags(uids, flags, folder); }
17
setMailboxSyncEnabled 1
                  
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); }
3
setMarkVariant 1
                  
// in java/org/columba/mail/gui/config/filter/ActionList.java
catch (Exception ex) { ex.printStackTrace(); // this probably means that the configuration // is wrong // -> change this to a sane default value action.setAction("Mark Message"); ((MailFilterAction) action).setMarkVariant("read"); row = null; }
31
setSender 1
                  
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (BadLocationException e1) { url.setSender(""); }
2
setText 1
                  
// in java/org/columba/mail/gui/composer/SignatureView.java
catch (IOException ex) { textPane.setText(""); }
150
setTreeSelection 1
                  
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; }
6
showDialog 1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
8
stop 1
                  
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } }
5
success 1
                  
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
22
sync 1
                  
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
7
userPass 1
                  
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. }
2
Method Nbr Nbr total
close 5
                  
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
finally { if (in != null) { try { in.close(); } catch (IOException ioe) { } } if (out != null) { try { out.close(); } catch (IOException ioe) { } } }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
finally { try { // close output stream if (os != null) { os.close(); } } catch (IOException ioe) { } }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
finally { try { in.close(); } catch (IOException ioe) { } try { if (out != null) { out.close(); } } catch (IOException ioe) { } }
91

Reference Table

This table concatenates the results of the previous tables.

Checked/Runtime Type Exception Thrown Thrown from Catch Declared Caught directly Caught
with Thrown
Caught
with Thrown Runtime
unknown (Lib) AuthenticationException 0 0 0 3
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
6
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
0
unknown (Lib) BadLocationException 0 0 0 4
            
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (BadLocationException e1) { url.setSender(""); }
// in java/org/columba/mail/gui/composer/EmailNameAutoCompleter.java
catch (BadLocationException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (BadLocationException e) { }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (BadLocationException e) { LOG.severe("Error deleting old view content: " + e.getMessage()); return; }
0 0
unknown (Domain) CancelledException
public class CancelledException extends JSCFException {

    /**
     * @param arg0
     */
    public CancelledException(String arg0) {
        super(arg0);
       
    }

}
0 0 0 0 0 0
unknown (Lib) ChangedCharSetException 0 0 0 1
            
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (ChangedCharSetException ccse) { // try again, but ignore charset specification in the html try { loadHtmlIntoView(text, true); } catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); } }
0 0
unknown (Lib) ClassCastException 0 0 0 2
            
// in java/org/columba/mail/gui/config/accountlist/StringAccountRenderer.java
catch (ClassCastException ex) { LOG.info(" filter renderer: " + ex.getMessage()); //$NON-NLS-1$ str = ""; }
// in java/org/columba/mail/gui/table/plugins/BasicRenderer.java
catch (ClassCastException ex) { LOG.info("headertablecommonrenderer: " + ex.getMessage()); //$NON-NLS-1$ str = ""; }
0 0
unknown (Lib) CommandCancelledException 26
            
// in java/org/columba/mail/gui/message/MessageController.java
public void showMessage(IMailbox folder, Object uid) throws Exception { this.folder = folder; this.uid = uid; // if necessary decrypt/verify message IMailFolderCommandReference newRefs = filterMessage(folder, uid); // map to new reference if (newRefs != null) { folder = (IMailbox) newRefs.getSourceFolder(); uid = newRefs.getUids()[0]; } MimeTree mimePartTree = folder.getMimePartTree(uid); if (mimePartTree == null) throw new CommandCancelledException( "Message does not exist anymore."); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be shown? (html/plain) String preferedSubtype; if ((Boolean.valueOf(html.getAttribute("prefer")).booleanValue())) { preferedSubtype = "html"; } else { preferedSubtype = "plain"; } List parts = mimePartTree.getInlineParts(mimePartTree.getRootMimeNode(), "text", preferedSubtype); bodytextViewer.view(folder, uid, parts, this .getFrameController()); spamStatusViewer.view(folder, uid, this.getFrameController()); securityStatusViewer.view(folder, uid, this.getFrameController()); headerController.view(folder, uid, this.getFrameController()); // notify all interested listeners fireMessageSelectionChangedEvent(folder, uid.toString()); }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
public void execute(IWorkerStatusController wsc) throws Exception { if (!updateGui) return; // get command reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get selected folder srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(wsc); // get selected message UID uid = r.getUids()[0]; if (!srcFolder.exists(uid)) { return; } try { // get flags flags = srcFolder.getFlags(uid); // get messagecontroller of frame IMessageController messageController = ((MessageViewOwner) mediator) .getMessageController(); messageController.showMessage(srcFolder, uid); restartMarkAsReadTimer(flags, messageController, r); // fill semantic context prepareContextData(); } catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); } }
// in java/org/columba/mail/gui/composer/command/ReplyWithTemplateCommand.java
private String getTemplateBody() throws Exception, CommandCancelledException, IOException { // template folder has uid=107 IMailbox templateFolder = (IMailbox) FolderTreeModel .getInstance().getFolder("107"); // retrieve headerlist of tempate folder IHeaderList list = templateFolder.getHeaderList(); // choose template ChooseTemplateDialog d = new ChooseTemplateDialog(mediator.getView() .getFrame(), list); Object uid = null; if (d.isResult()) { // user pressed OK uid = d.getUid(); } else { throw new CommandCancelledException(); } // get bodytext of template message MimeTree tree = templateFolder.getMimePartTree(uid); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = tree.getFirstTextPart("html"); } else { bodyPart = tree.getFirstTextPart("plain"); } InputStream bodyStream = templateFolder.getMimePartBodyStream(uid, bodyPart .getAddress()); boolean wasHtml; if (bodyPart.getHeader().getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String body; if (model.isHtml()) { if (wasHtml) { body = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream(bodyStream) .toString())); } else { body = HtmlParser.substituteSpecialCharacters( StreamUtils.readCharacterStream(bodyStream).toString()); } } else { if (wasHtml) { body = HtmlParser.htmlToText(StreamUtils.readCharacterStream(bodyStream). toString()); } else { body = StreamUtils.readCharacterStream(bodyStream).toString(); } } bodyStream.close(); return body; }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { POP3CommandReference r = (POP3CommandReference) getReference(); server = r.getServer(); // register interest on status bar information ((StatusObservableImpl) server.getObservable()).setWorker(worker); log(MailResourceLoader.getString("statusbar", "message", "authenticating")); try { // login and get # of messages on server totalMessageCount = server.getMessageCount(); if (worker.cancelled()) throw new CommandCancelledException(); // synchronize local UID list with server UID list List newMessagesUidList = synchronize(); if (worker.cancelled()) throw new CommandCancelledException(); if (Logging.DEBUG) { LOG.fine(newMessagesUidList.toString()); } if (worker.cancelled()) throw new CommandCancelledException(); // only download new messages downloadNewMessages(newMessagesUidList, worker); // Delete old message from server if the feature is enabled server.cleanUpServer(); // logout cleanly logout(); // display downloaded message count in statusbar if (newMessageCount == 0) { log(MailResourceLoader.getString("statusbar", "message", "no_new_messages")); } else { log(MessageFormat.format(MailResourceLoader.getString( "statusbar", "message", "fetched_count"), new Object[] { new Integer(newMessageCount) })); // get inbox-folder from pop3-server preferences IMailbox inboxFolder = server.getFolder(); // notify listeners IMailFolderCommandReference ref = new MailFolderCommandReference(inboxFolder, newMessagesUidList.toArray()); MailCheckingManager.getInstance().fireNewMessageArrived(ref); } } catch (CommandCancelledException e) { server.logout(); // clear statusbar message server.getObservable().clearMessage(); } catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; } /* * catch (IOException e) { String name = e.getClass().getName(); * JOptionPane.showMessageDialog(null, e.getLocalizedMessage(), * name.substring(name.lastIndexOf(".")), JOptionPane.ERROR_MESSAGE); // * clear statusbar message server.getObservable().clearMessage(); } */ finally { /* * // always enable the menuitem again * r[0].getPOP3ServerController().enableActions(true); */ } }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void downloadMessage(Object serverUID, IWorkerStatusController worker) throws Exception { // server message numbers start with 1 // whereas List numbers start with 0 // -> always increase fetch number IWorkerStatusChangeListener listener = new IWorkerStatusChangeListener() { public void workerStatusChanged(WorkerStatusChangedEvent e) { if (e.getSource().cancelled()) { try { server.dropConnection(); } catch (IOException e1) { } } } }; // important for cancel worker.addWorkerStatusChangeListener(listener); // download message ColumbaMessage message; try { message = server.getMessage(serverUID, worker); } catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); } // not needed anymore worker.removeWorkerStatusChangeListener(listener); if (message == null) { LOG.severe("Message with UID=" + serverUID + " isn't on the server."); return; } message.getHeader().getFlags().setSeen(false); // get inbox-folder from pop3-server preferences IMailbox inboxFolder = server.getFolder(); // start command which adds message to folder // and calls apply-filter on this specific message IMailFolderCommandReference r = new MailFolderCommandReference( inboxFolder, message); CommandProcessor.getInstance().addOp(new AddPOP3MessageCommand(r)); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void downloadNewMessages(List newMessagesUIDList, IWorkerStatusController worker) throws Exception { LOG.fine("need to fetch " + newMessagesUIDList.size() + " messages."); int totalSize = calculateTotalSize(newMessagesUIDList); worker.setProgressBarMaximum(totalSize); worker.setProgressBarValue(0); newMessageCount = newMessagesUIDList.size(); for (int i = 0; i < newMessageCount; i++) { if (worker.cancelled()) throw new CommandCancelledException(); // which UID should be downloaded next Object serverUID = newMessagesUIDList.get(i); LOG.fine("fetch message with UID=" + serverUID); log(MessageFormat.format(MailResourceLoader.getString("statusbar", "message", "fetch_messages"), new Object[] { new Integer(i + 1), new Integer(newMessageCount) })); int size = server.getMessageSize(serverUID); if (server.getAccountItem().getPopItem().getBoolean("enable_limit")) { // check if message isn't too big to download int maxSize = server.getAccountItem().getPopItem().getInteger( "limit"); // if message-size is bigger skip download of this message if (size > maxSize) { LOG.fine("skipping download of message, too big"); continue; } } // now download the message downloadMessage(serverUID, worker); if (!server.getAccountItem().getPopItem().getBoolean( "leave_messages_on_server")) { // delete message from server server.deleteMessage(serverUID); LOG.fine("deleted message with uid=" + serverUID); } } }
// in java/org/columba/mail/pop3/POP3Store.java
protected void login() throws IOException, POP3Exception, CommandCancelledException { PasswordDialog dialog; boolean login = false; char[] password = new char[0]; boolean save = false; int loginMethod = getLoginMethod(); while (!login) { if ((password = Blowfish.decrypt(popItem.getRoot().getAttribute( "password", ""))).length == 0) { dialog = new PasswordDialog(); dialog.showDialog(MessageFormat .format(MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { popItem.get("user"), popItem.get("host") }), popItem.get("password"), popItem .getBoolean("save_password")); if (dialog.success()) { // ok pressed password = dialog.getPassword(); save = dialog.getSave(); } else { throw new CommandCancelledException(); } } else { save = popItem.getBoolean("save_password"); } try { if (loginMethod == AuthenticationManager.USER) { protocol.userPass(popItem.get("user"), password); login = true; } else if (loginMethod == AuthenticationManager.APOP) { try { protocol.apop(popItem.get("user"), password); } catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. } login = true; } else { try { // AUTH protocol.auth(AuthenticationManager .getSaslName(loginMethod), popItem.get("user"), password); login = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); } LOG.info("login=" + login); } popItem.setBoolean("save_password", save); if (save) { popItem.setString("password", Blowfish.encrypt(password)); } }
// in java/org/columba/mail/pop3/POP3Store.java
private void openConnection() throws IOException, POP3Exception, CommandCancelledException { int sslType = popItem.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = popItem.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || capas.length == 0) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/imap/IMAPServer.java
private void openConnection() throws IOException, IMAPException, CommandCancelledException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "connecting")); int sslType = item.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = item.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || isSupported("STARTTLS") || (capabilities.length == 0)) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/imap/IMAPServer.java
private void login() throws IOException, IMAPException, CommandCancelledException { PasswordDialog dialog = new PasswordDialog(); ensureConnectedState(); boolean authenticated = false; boolean first = true; char[] password = new char[0]; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "authenticating")); int loginMethod = getLoginMethod(); // Try to get Password from Configuration if (item.get("password").length() != 0) { password = Blowfish.decrypt(item.get("password")); } // Login loop until authenticated while (!authenticated) { // On the first try check if we need to show the password dialog // -> not necessary when password was stored if (!first || password.length == 0) { // Show the password dialog dialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { item.get("user"), item.get("host") }), new String(password), item.getBoolean("save_password")); if (dialog.success()) { // User pressed OK password = dialog.getPassword(); // Save or Clear the password in the configuration item.setBoolean("save_password", dialog.getSave()); if (dialog.getSave()) { item.setString("password", Blowfish.encrypt(password)); } else { item.setString("password", ""); } } else { // User cancelled authentication throw new CommandCancelledException(); } } // From this point we have a username and password // from configuration of from the dialog try { if (loginMethod == AuthenticationManager.LOGIN) { protocol.login(item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } else { try { // AUTH protocol.authenticate(AuthenticationManager .getSaslName(loginMethod), item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } } first = false; } // Sync subscribed folders if this is the first login // in this session if (firstLogin) { if( firstLoginAction != null) { firstLoginAction.actionPerformed(); } } firstLogin = false; }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // register for status events ((StatusObservableImpl) imapFolder.getObservable()).setWorker(worker); // Find old numbers int total = imapFolder.getMessageFolderInfo().getExists(); // check for new headers Object[] uids = new Object[0]; try { uids = imapFolder.synchronizeHeaderlist(); } catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); } // Get the new numbers int newTotal = imapFolder.getMessageFolderInfo().getExists(); // fire new message event to interested listeners if (triggerNotification && (newTotal != total) ) { if( ((IMAPRootFolder)imapFolder.getRootFolder()).getAccountItem().getImapItem().getBoolean("enable_sound")) { // create reference of newly arrived messages IMailFolderCommandReference ref = new MailFolderCommandReference(imapFolder, uids); // fire event MailCheckingManager.getInstance().fireNewMessageArrived(ref); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureAuthenticated() throws IOException, SMTPException, CommandCancelledException { String username; char[] password = new char[0]; boolean savePassword; // Init Values // user's email address fromAddress = identity.getAddress().getMailAddress(); usingSSL = smtpItem.getBoolean("enable_ssl"); int authMethod = getLoginMethod(); boolean authenticated = (authMethod == AuthenticationManager.NONE); if (authMethod == AuthenticationManager.POP_BEFORE_SMTP) { // no esmtp - use POP3-before-SMTP instead try { pop3Authentification(); } catch (POP3Exception e) { throw new SMTPException(e); } authenticated = true; } ensureConnected(); if (!authenticated) { username = smtpItem.get("user"); password = Blowfish.decrypt(smtpItem.getRoot().getAttribute("password", "")); savePassword = smtpItem.getBoolean("save_password"); if (username.length() == 0) { // there seems to be no username set in the smtp-options // -> use username from pop3 or imap options if (accountItem.isPopAccount()) { PopItem pop3Item = accountItem.getPopItem(); username = pop3Item.get("user"); } else { ImapItem imapItem = accountItem.getImapItem(); username = imapItem.get("user"); } } PasswordDialog passDialog = new PasswordDialog(); // ask password from user if (password.length == 0) { passDialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String(password), savePassword); if (passDialog.success()) { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } else { throw new CommandCancelledException(); } } // try to authenticate while (!authenticated) { try { try { protocol.auth(AuthenticationManager .getSaslName(authMethod), username, password); authenticated = true; } catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } } } catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } } } // authentication was successful // -> save name/password smtpItem.setString("user", username); smtpItem.setBoolean("save_password", savePassword); if (savePassword) { smtpItem.setString("password", Blowfish.encrypt(password)); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void doSSL() throws CommandCancelledException, IOException, SMTPException { if (smtpItem.getBoolean("enable_ssl")) { if (isSupported("STARTTLS")) { try { protocol.startTLS(); usingSSL = true; } catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); } } else { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader.getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(null, MailResourceLoader.getString("dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); } } }
14
            
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
70
            
// in java/org/columba/mail/gui/composer/command/ReplyWithTemplateCommand.java
private String getTemplateBody() throws Exception, CommandCancelledException, IOException { // template folder has uid=107 IMailbox templateFolder = (IMailbox) FolderTreeModel .getInstance().getFolder("107"); // retrieve headerlist of tempate folder IHeaderList list = templateFolder.getHeaderList(); // choose template ChooseTemplateDialog d = new ChooseTemplateDialog(mediator.getView() .getFrame(), list); Object uid = null; if (d.isResult()) { // user pressed OK uid = d.getUid(); } else { throw new CommandCancelledException(); } // get bodytext of template message MimeTree tree = templateFolder.getMimePartTree(uid); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = tree.getFirstTextPart("html"); } else { bodyPart = tree.getFirstTextPart("plain"); } InputStream bodyStream = templateFolder.getMimePartBodyStream(uid, bodyPart .getAddress()); boolean wasHtml; if (bodyPart.getHeader().getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String body; if (model.isHtml()) { if (wasHtml) { body = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream(bodyStream) .toString())); } else { body = HtmlParser.substituteSpecialCharacters( StreamUtils.readCharacterStream(bodyStream).toString()); } } else { if (wasHtml) { body = HtmlParser.htmlToText(StreamUtils.readCharacterStream(bodyStream). toString()); } else { body = StreamUtils.readCharacterStream(bodyStream).toString(); } } bodyStream.close(); return body; }
// in java/org/columba/mail/pop3/POP3Server.java
public void deleteMessage(Object uid) throws IOException, POP3Exception, CommandCancelledException { try { store.deleteMessage(uid); getHeaderList().remove(uid); // set dirty flag setCacheChanged(true); } catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; } }
// in java/org/columba/mail/pop3/POP3Server.java
public void deleteMessagesOlderThan(Date date) throws IOException, POP3Exception, CommandCancelledException { LOG.info("Removing message older than " + date); IHeaderList headerList = getHeaderList(); ICloseableIterator it = headerList.headerIterator(); while (it.hasNext()) { IColumbaHeader header = (IColumbaHeader) it.next(); if (((Date) header.get("columba.date")).before(date)) { deleteMessage(header.get("columba.uid")); } } it.close(); }
// in java/org/columba/mail/pop3/POP3Server.java
public void cleanUpServer() throws IOException, POP3Exception, CommandCancelledException { PopItem item = getAccountItem().getPopItem(); if (item.getBooleanWithDefault("leave_messages_on_server", false) && item.getBooleanWithDefault("remove_old_from_server", false)) { int days = item.getInteger("older_than"); long date = new Date().getTime(); date -= days * DAY_IN_MS; deleteMessagesOlderThan(new Date(date)); } else if (!item.getBooleanWithDefault("leave_messages_on_server", false)) { removeAllDownloadedMessages(); } }
// in java/org/columba/mail/pop3/POP3Server.java
private void removeAllDownloadedMessages() throws IOException, CommandCancelledException, POP3Exception { IHeaderList headerList = getHeaderList(); ICloseableIterator it = headerList.keyIterator(); while (it.hasNext()) { deleteMessage(it.next()); } it.close(); }
// in java/org/columba/mail/pop3/POP3Server.java
public ColumbaMessage getMessage(Object uid, IWorkerStatusController worker) throws IOException, POP3Exception, CommandCancelledException, ParserException { InputStream messageStream = new ProgressObservedInputStream(getStore() .fetchMessage(store.getIndex(uid)), worker, true); // Store the complete stream in a source so that we can parse it Source source = TempSourceFactory.createTempSource(messageStream, -1); // pipe through preprocessing filter // if (popItem.getBoolean("enable_pop3preprocessingfilter", false)) // rawString = modifyMessage(rawString); // UPDATE! @author fdietz // was: // Activate PreProcessor again with Source instead of String // new goal: // completely remove preprocessor -> we never change the message source! ColumbaMessage m; try { Header header = HeaderParser.parse(source); m = new ColumbaMessage(header); ColumbaHeader h = (ColumbaHeader) m.getHeader(); m.setSource(source); h.getAttributes().put("columba.pop3uid", uid); // message size should be at least 1 KB int size = Math.max(source.length() / 1024, 1); h.getAttributes().put("columba.size", new Integer(size)); // set the attachment flag h.getAttributes().put("columba.attachment", h.hasAttachments()); h.getAttributes().put("columba.fetchstate", Boolean.TRUE); h.getAttributes().put("columba.accountuid", new Integer(accountItem.getInteger("uid"))); getHeaderList().add(h, uid); } catch (ParserException e) { LOG .severe("Skipped message: Error parsing message. Message source:\n " + source); return null; } // set headercache dirty flag setCacheChanged(true); return m; }
// in java/org/columba/mail/pop3/POP3Store.java
public int getSize(int index) throws IOException, POP3Exception, CommandCancelledException { try { return ((Integer) getSizeList().get(index)).intValue(); } catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); } catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); } }
// in java/org/columba/mail/pop3/POP3Store.java
private List getSizeList() throws IOException, POP3Exception, CommandCancelledException { if (sizeList == null) { ensureTransaction(); ScanListEntry[] sizes = protocol.list(); sizeList = new ArrayList(sizes.length + 1); // since the indices on the pop server start with 1 we add // a dummy null for the 0 element in the list sizeList.add(null); for (int i = 0; i < sizes.length; i++) { if (sizes[i].getIndex() > sizeList.size() - 1) { // fill with nulls for (int nextIndex = sizeList.size() - 1; nextIndex < sizes[i] .getIndex(); nextIndex++) { sizeList.add(null); } } // put size at the specified place sizeList.set(sizes[i].getIndex(), new Integer(sizes[i] .getSize())); } } return sizeList; }
// in java/org/columba/mail/pop3/POP3Store.java
public int getMessageCount() throws IOException, POP3Exception, CommandCancelledException { if (messageCount == -1) { ensureTransaction(); int[] stat = protocol.stat(); messageCount = stat[0]; } return messageCount; }
// in java/org/columba/mail/pop3/POP3Store.java
public boolean deleteMessage(Object uid) throws CommandCancelledException, IOException, POP3Exception { ensureTransaction(); return protocol.dele(getIndex(uid)); }
// in java/org/columba/mail/pop3/POP3Store.java
protected int getIndex(Object uid) throws IOException, POP3Exception, CommandCancelledException { if (getUidMap().containsKey(uid)) { return ((Integer) getUidMap().get(uid)).intValue(); } else { throw new MessageNotOnServerException(uid); } }
// in java/org/columba/mail/pop3/POP3Store.java
public InputStream fetchMessage(int index) throws IOException, POP3Exception, CommandCancelledException { ensureTransaction(); return protocol.retr(index, getSize(index)); }
// in java/org/columba/mail/pop3/POP3Store.java
protected void login() throws IOException, POP3Exception, CommandCancelledException { PasswordDialog dialog; boolean login = false; char[] password = new char[0]; boolean save = false; int loginMethod = getLoginMethod(); while (!login) { if ((password = Blowfish.decrypt(popItem.getRoot().getAttribute( "password", ""))).length == 0) { dialog = new PasswordDialog(); dialog.showDialog(MessageFormat .format(MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { popItem.get("user"), popItem.get("host") }), popItem.get("password"), popItem .getBoolean("save_password")); if (dialog.success()) { // ok pressed password = dialog.getPassword(); save = dialog.getSave(); } else { throw new CommandCancelledException(); } } else { save = popItem.getBoolean("save_password"); } try { if (loginMethod == AuthenticationManager.USER) { protocol.userPass(popItem.get("user"), password); login = true; } else if (loginMethod == AuthenticationManager.APOP) { try { protocol.apop(popItem.get("user"), password); } catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. } login = true; } else { try { // AUTH protocol.auth(AuthenticationManager .getSaslName(loginMethod), popItem.get("user"), password); login = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); } LOG.info("login=" + login); } popItem.setBoolean("save_password", save); if (save) { popItem.setString("password", Blowfish.encrypt(password)); } }
// in java/org/columba/mail/pop3/POP3Store.java
public List checkSupportedAuthenticationMethods() throws CommandCancelledException, IOException { ArrayList supportedMechanisms = new ArrayList(); // USER/PASS is always supported supportedMechanisms.add(new Integer(AuthenticationManager.USER)); try { ensureAuthorization(); // APOP? if (protocol.isApopSupported()) { supportedMechanisms .add(new Integer(AuthenticationManager.APOP)); } } catch (POP3Exception e) { // APOP not supported } try { String serverSaslMechansims = getCapa("SASL"); // AUTH? if (serverSaslMechansims != null) { List authMechanisms = AuthenticationFactory.getInstance() .getSupportedMechanisms(serverSaslMechansims); Iterator it = authMechanisms.iterator(); while (it.hasNext()) { supportedMechanisms.add(new Integer(AuthenticationManager .getSaslCode((String) it.next()))); } } } catch (IOException e) { e.printStackTrace(); } return supportedMechanisms; }
// in java/org/columba/mail/pop3/POP3Store.java
private int getLoginMethod() throws CommandCancelledException, IOException { String loginMethod = popItem.get("login_method"); int result = 0; try { result = Integer.parseInt(loginMethod); } catch (NumberFormatException e) { // Just use the default as fallback } if (result == 0) { List supported = checkSupportedAuthenticationMethods(); if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. result = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); result = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return result; }
// in java/org/columba/mail/pop3/POP3Store.java
public static void doPOPbeforeSMTP(PopItem popItem) throws IOException, POP3Exception, CommandCancelledException { POP3Store store = new POP3Store(popItem); store.ensureTransaction(); store.logout(); }
// in java/org/columba/mail/pop3/POP3Store.java
protected void ensureTransaction() throws IOException, POP3Exception, CommandCancelledException { ensureAuthorization(); if (protocol.getState() < POP3Protocol.TRANSACTION) { login(); } }
// in java/org/columba/mail/pop3/POP3Store.java
protected void ensureAuthorization() throws IOException, POP3Exception, CommandCancelledException { if (protocol.getState() < POP3Protocol.AUTHORIZATION) { openConnection(); } }
// in java/org/columba/mail/pop3/POP3Store.java
private void openConnection() throws IOException, POP3Exception, CommandCancelledException { int sslType = popItem.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = popItem.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || capas.length == 0) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/pop3/POP3Store.java
private Map getUidMap() throws CommandCancelledException, IOException, POP3Exception { if (uidMap == null) { if (getMessageCount() != 0) { ensureTransaction(); UidListEntry[] uidList = protocol.uidl(); uidMap = new Hashtable(); for (int i = 0; i < uidList.length; i++) { uidMap.put(uidList[i].getUid(), new Integer(uidList[i] .getIndex())); } } else { uidMap = new Hashtable(0); } } return uidMap; }
// in java/org/columba/mail/imap/IMAPServer.java
public String getDelimiter() throws IOException, IMAPException, CommandCancelledException { if (delimiter == null) { // try to determine delimiter delimiter = fetchDelimiter(); } return delimiter; }
// in java/org/columba/mail/imap/IMAPServer.java
private void openConnection() throws IOException, IMAPException, CommandCancelledException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "connecting")); int sslType = item.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = item.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || isSupported("STARTTLS") || (capabilities.length == 0)) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/imap/IMAPServer.java
private int getLoginMethod() throws CommandCancelledException, IOException { String loginMethod = item.get("login_method"); int result = 0; try { result = Integer.parseInt(loginMethod); } catch (NumberFormatException e) { // Just use the default as fallback } if (result == 0) { List supported = checkSupportedAuthenticationMethods(); if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. result = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); result = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return result; }
// in java/org/columba/mail/imap/IMAPServer.java
private void login() throws IOException, IMAPException, CommandCancelledException { PasswordDialog dialog = new PasswordDialog(); ensureConnectedState(); boolean authenticated = false; boolean first = true; char[] password = new char[0]; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "authenticating")); int loginMethod = getLoginMethod(); // Try to get Password from Configuration if (item.get("password").length() != 0) { password = Blowfish.decrypt(item.get("password")); } // Login loop until authenticated while (!authenticated) { // On the first try check if we need to show the password dialog // -> not necessary when password was stored if (!first || password.length == 0) { // Show the password dialog dialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { item.get("user"), item.get("host") }), new String(password), item.getBoolean("save_password")); if (dialog.success()) { // User pressed OK password = dialog.getPassword(); // Save or Clear the password in the configuration item.setBoolean("save_password", dialog.getSave()); if (dialog.getSave()) { item.setString("password", Blowfish.encrypt(password)); } else { item.setString("password", ""); } } else { // User cancelled authentication throw new CommandCancelledException(); } } // From this point we have a username and password // from configuration of from the dialog try { if (loginMethod == AuthenticationManager.LOGIN) { protocol.login(item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } else { try { // AUTH protocol.authenticate(AuthenticationManager .getSaslName(loginMethod), item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } } first = false; } // Sync subscribed folders if this is the first login // in this session if (firstLogin) { if( firstLoginAction != null) { firstLoginAction.actionPerformed(); } } firstLogin = false; }
// in java/org/columba/mail/imap/IMAPServer.java
public void ensureSelectedState(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { // ensure that we are logged in already ensureLoginState(); String path = folder.getImapPath(); // if mailbox is not already selected select it if (protocol.getState() != IMAPProtocol.SELECTED || !protocol.getSelectedMailbox().equals(path)) { printStatusMessage(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", "select"), new Object[] { folder.getName() })); // Here we get the new mailboxinfo for the folder messageFolderInfo = protocol.select(path); // Set the readOnly flag folder.setReadOnly(!messageFolderInfo.isWriteAccess()); // Convert to a MailboxStatus selectedStatus = new MailboxStatus(messageFolderInfo); statusDirty = false; selectedFolder = folder; // delete any cached information aktMimeTree = null; aktMessageUid = null; } }
// in java/org/columba/mail/imap/IMAPServer.java
public int getLargestRemoteUid(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { MailboxStatus status = getStatus(folder); return getLargestRemoteUid(folder, status); }
// in java/org/columba/mail/imap/IMAPServer.java
public int getLargestRemoteUid(IMAPFolder folder, MailboxStatus status) throws IOException, IMAPException, CommandCancelledException { if(status.getUidNext() < 0 && status.getMessages() > 0 ) { return fetchUid(new SequenceSet(status.getMessages()), folder); } else { return (int)(status.getUidNext() -1); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MailboxStatus getStatus(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); if (selectedFolder != null && selectedFolder.equals(folder) && !statusDirty) { // We don't need to issue a additional NOOP // here since the ensureLogin() call above // ensures also the correct Status in a // MIN_IDLE interval timeframe. return selectedStatus; } if( selectedFolder == null || protocol.getState() < IMAPProtocol.SELECTED) { // if none selected select this folder instead of getting the status ensureSelectedState(folder); return selectedStatus; } printStatusMessage(MessageFormat.format(MailResourceLoader.getString( "statusbar", "message", "status"), new Object[] { folder .getName() })); MailboxStatus result = protocol.status(folder.getImapPath(), new String[] { "MESSAGES", "UIDNEXT", "RECENT", "UNSEEN", "UIDVALIDITY" }); // No response means zero! if( result.getUnseen() == -1) result.setUnseen(0); if( result.getRecent() == -1) result.setRecent(0); statusDirty = false; return result; }
// in java/org/columba/mail/imap/IMAPServer.java
protected String fetchDelimiter() throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); try { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); } catch (IMAPDisconnectedException e1) { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void createMailbox(String mailboxName, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { // make sure we are logged in ensureLoginState(); // concate the full name of the new mailbox String fullName; String path = (folder == null ? "" : folder.getImapPath()); if (path.length() > 0) fullName = path + getDelimiter() + mailboxName; else fullName = mailboxName; // check if the mailbox already exists -> subscribe only if (protocol.list("", fullName).length == 0) { // create the mailbox on the server protocol.create(fullName); } // subscribe to the new mailbox protocol.subscribe(fullName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void renameFolder(String oldMailboxName, String newMailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.rename(oldMailboxName, newMailboxName); protocol.unsubscribe(oldMailboxName); protocol.subscribe(newMailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void subscribeFolder(String mailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.subscribe(mailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void unsubscribeFolder(String mailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.unsubscribe(mailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void expunge(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); updatesEnabled = false; protocol.expunge(); updatesEnabled = true; statusDirty = true; }
// in java/org/columba/mail/imap/IMAPServer.java
public int fetchUid( SequenceSet set, IMAPFolder folder ) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); Integer[] result = protocol.fetchUid(set); if( result.length == 1) return result[0].intValue(); else return -1; }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] fetchUids(SequenceSet set, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { IStatusObservable observable = getObservable(); printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_uid_list")); ensureSelectedState(folder); if (messageFolderInfo.getExists() > 0) { SequenceSet[] packs = divide(set); Integer[] result = new Integer[set.getLength(messageFolderInfo .getExists())]; // update the progress if (observable != null) { observable.setCurrent(0); observable.setMax(result.length); } int pos = 0; for (int i = 0; i < packs.length; i++) { int packLength = packs[i].getLength(messageFolderInfo .getExists()); System.arraycopy(protocol.fetchUid(packs[i]), 0, result, pos, packLength); pos += packLength; // update the progress if (observable != null) { observable.setCurrent(pos); } } return result; } else { return new Integer[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public IMAPFlags[] fetchFlagsListStartFrom(int startIdx, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { IStatusObservable observable = getObservable(); ensureSelectedState(folder); if (selectedStatus.getMessages() - startIdx >= 0) { SequenceSet set = new SequenceSet(); set.addOpenRange(startIdx); SequenceSet[] packs = divide(set); // update the progress if (observable != null) { observable.setCurrent(0); observable.setMax(set.getLength(selectedStatus.getMessages())); } List allResults = new ArrayList(packs.length); int pos = 0; // store the intermediate results in a list for (int i = 0; i < packs.length; i++) { try { IMAPFlags[] r = protocol.fetchFlags(packs[i]); pos += r.length; allResults.add(r); } catch (IMAPException e) { // Entry does not exist on server // -> add nothing } // update the progress if (observable != null) { observable.setCurrent(pos); } } // Combine the results in one array IMAPFlags[] result = new IMAPFlags[pos]; Iterator it = allResults.iterator(); pos = 0; while (it.hasNext()) { IMAPFlags[] r = (IMAPFlags[]) it.next(); System.arraycopy(r, 0, result, pos, r.length); pos += r.length; } return result; } else { return new IMAPFlags[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public IMAPFlags[] fetchFlagsListStartFrom2(int startIdx, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); if (selectedStatus.getMessages() - startIdx >= 0) { SequenceSet set = new SequenceSet(); set.add(startIdx, Math.min(startIdx + 9, selectedStatus.getMessages())); IMAPFlags[] result = protocol.fetchFlags(set); return result; } else { return new IMAPFlags[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public NamespaceCollection fetchNamespaces() throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); return protocol.namespace(); }
// in java/org/columba/mail/imap/IMAPServer.java
protected synchronized void ensureConnectedState() throws CommandCancelledException, IOException, IMAPException { if (Math.abs(System.currentTimeMillis() - lastCommunication) > MIN_IDLE) { try { protocol.noop(); } catch (IOException e) { // Now the state of the procotol is more certain correct } catch (IMAPDisconnectedException e) { } } if (protocol.getState() < IMAPProtocol.NON_AUTHENTICATED) { printStatusMessage(MailResourceLoader .getString("statusbar", "message", "connecting")); openConnection(); } // update this point of time as last communication // since every functio calls this before communicating with // the server lastCommunication = System.currentTimeMillis(); }
// in java/org/columba/mail/imap/IMAPServer.java
protected void ensureLoginState() throws IOException, IMAPException, CommandCancelledException { ensureConnectedState(); if (protocol.getState() < IMAPProtocol.AUTHENTICATED) { printStatusMessage(MailResourceLoader .getString("statusbar", "message", "authenticating")); login(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MimeTree getMimeTree(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); // Use a caching mechanism for this if (aktMimeTree == null || !aktMessageUid.equals(uid)) { aktMimeTree = protocol.uidFetchBodystructure(((Integer) uid) .intValue()); aktMessageUid = uid; } return aktMimeTree; } catch (IMAPDisconnectedException e) { return getMimeTree(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidFetchBody(((Integer) uid).intValue(), address); } catch (IMAPDisconnectedException e) { return getMimePartBodyStream(uid, address, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Header getHeaders(Object uid, String[] keys, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); IMAPHeader[] headers = protocol.uidFetchHeaderFields( new SequenceSet(((Integer) uid).intValue()), keys); return headers[0].getHeader(); } catch (IMAPDisconnectedException e) { return getHeaders(uid, keys, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Header getAllHeaders(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); IMAPHeader[] headers = protocol.uidFetchHeader(new SequenceSet( ((Integer) uid).intValue())); return headers[0].getHeader(); } catch (IMAPDisconnectedException e) { return getAllHeaders(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); InputStream headerSource = protocol.uidFetchMimeHeaderSource( ((Integer) uid).intValue(), address); InputStream bodySource = protocol.uidFetchBody(((Integer) uid) .intValue(), address); return new SequenceInputStream(headerSource, bodySource); } catch (IMAPDisconnectedException e) { return getMimePartSourceStream(uid, address, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMessageSourceStream(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidFetchMessage(((Integer) uid).intValue()); } catch (IMAPDisconnectedException e) { return getMessageSourceStream(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void markMessage(Object[] uids, int variant, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { if (uids == null || uids.length == 0) return; try { ensureSelectedState(folder); SequenceSet uidSet = new SequenceSet(Arrays.asList(uids)); protocol.uidStore(uidSet, variant > 0, convertToFlags(variant)); statusDirty = true; } catch (IMAPDisconnectedException e) { markMessage(uids, variant, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void setFlags(Object[] uids, IMAPFlags flags, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SequenceSet uidSet = new SequenceSet(Arrays.asList(uids)); protocol.uidStore(uidSet, true, flags); } catch (IMAPDisconnectedException e) { setFlags(uids, flags, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public int getIndex(Integer uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SearchKey key = new SearchKey(SearchKey.UID, uid); Integer[] index = protocol.search(new SearchKey[] { key }); if (index.length > 0) { return index[0].intValue(); } else { return -1; } } catch (IMAPDisconnectedException e) { return getIndex(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] search(SearchKey key, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidSearch(new SearchKey[] { key }); } catch (IMAPDisconnectedException e) { return search(key, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public List search(IFilterRule filterRule, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SearchKey[] searchRequest; searchRequest = createSearchKey(filterRule); Integer[] result = null; Charset charset = UTF8; while (result == null) { try { result = protocol.uidSearch(charset, searchRequest); } catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; } } return Arrays.asList(result); } catch (IMAPDisconnectedException e) { return search(filterRule, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MailboxInfo getMessageFolderInfo(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); return messageFolderInfo; }
// in java/org/columba/mail/imap/IMAPServer.java
public ListInfo[] fetchSubscribedFolders() throws IOException, IMAPException, CommandCancelledException { try { ensureLoginState(); ListInfo[] lsub = protocol.lsub("", "*"); // Also set the delimiter if (lsub.length > 0) { delimiter = lsub[0].getDelimiter(); } return lsub; } catch (IMAPDisconnectedException e) { return fetchSubscribedFolders(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public boolean isSelected(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); return (protocol.getState() == IMAPProtocol.SELECTED && protocol .getSelectedMailbox().equals(folder.getImapPath())); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
Object[] synchronizeHeaderlist() throws Exception, IOException, CommandCancelledException, IMAPException { Object[] result = new Object[0]; // do not sync folders which have a Noselect flag if (!getConfiguration().getBooleanWithDefault("selectable", true)) return result; // Check if the mailbox has changed MailboxStatus status = getServer().getStatus(this); if (status.getMessages() == 0) { purgeHeaderList(); syncMailboxInfo(status); return result; } if (!firstSync && status.getMessages() == this.getMessageFolderInfo() .getExists()) { return result; } List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); int largestLocalUid = localUids.size() > 0 ? ((Integer) localUids .get(localUids.size() - 1)).intValue() : -1; int largestRemoteUid = getServer().getLargestRemoteUid(this, status); if (localUids.size() == status.getMessages() && largestRemoteUid == largestLocalUid) { // Seems to be no change! if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } return result; } printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); largestRemoteUid = getServer().fetchUid( new SequenceSet(SequenceEntry.STAR), this); if (largestRemoteUid == -1) { largestRemoteUid = getServer().fetchUid( new SequenceSet(status.getMessages()), this); } int largestLocalUidIndex = findLargestLocalUidIndex(localUids); int newMessages = status.getMessages() - largestLocalUidIndex; /* * // Somehow there are new messages that // have a lower index -> out * of sync if (localUids.size() - status.getMessages() + newMessages < * 0) { * * LOG.severe("Folder " + getName() + " is out of sync -> recreating the * cache!"); purgeHeaderList(); // all messages are new newMessages = * status.getMessages(); // Set the index of the largest Uid to 0 // -> * ensure it works with the fetch of new // messages part below * largestLocalUidIndex = 0; largestLocalUid = -1; * * localUids.clear(); } */ LOG.fine("Found " + newMessages + " new Messages"); // If we have new messages add them to the headerlist if (newMessages > 0) { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_new_headers")); // Ensure sizes are correct getMessageFolderInfo().setExists(localUids.size()); getMessageFolderInfo().setUnseen( Math.min(getMessageFolderInfo().getUnseen(), localUids .size())); getMessageFolderInfo().setRecent(0); List newUids = fetchNewMessages(largestLocalUidIndex); localUids.addAll(newUids); if (newUids.size() < newMessages) { // There are still more messages to update // -> issue another fetch messages command CommandProcessor.getInstance().addOp( new FetchMessagesCommand( new MailFolderCommandReference(this), newMessages, largestLocalUidIndex, newUids .size())); } else { fetchDone(); } result = newUids.toArray(new Object[0]); } else { // Number of deleted messages is computed from exists on imap and // local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } } return result; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private int findLargestLocalUidIndex(List localUids) throws IOException, IMAPException, CommandCancelledException { int largestLocalUidIndex = -1; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); // Compute the number of new messages if (localUids.size() > 0) { // Find the index of the largest local Uid int position = localUids.size() - 1; while (largestLocalUidIndex == -1 && position >= localUids.size() - 10 && position >= 0) { largestLocalUidIndex = getServer().getIndex( (Integer) localUids.get(position--), this); } // Still not found -> do a binary search if (largestLocalUidIndex == -1) { int a, b, c; int index; a = 0; b = position; while (b > a && b - a > 1) { c = Math.round((b - a) * 0.5f) + a; index = getServer().getIndex((Integer) localUids.get(c), this); if (index == -1) { b = c; } else { a = c; largestLocalUidIndex = index; } } // removedLocalUids = localUids.size() - 1 - position; } else { // -2 because of the decrement in line 317 // removedLocalUids = localUids.size() - 2 - position; } // Check if all local uids have been deleted if (largestLocalUidIndex == -1) { // all messages are new largestLocalUidIndex = 0; } } else { // all messages are new largestLocalUidIndex = 0; } return largestLocalUidIndex; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void findRemovedMessages(MailboxStatus status, List localUids) throws Exception, IOException, IMAPException, CommandCancelledException { int largestRemoteUid = getServer().getLargestRemoteUid(this); int deletedMessages = localUids.size() - status.getMessages(); LOG.fine("Found " + deletedMessages + " deleted Messages"); // Find the messages that have been deleted if (deletedMessages > 0) { int found = 0; // First deleted all local uids that // are larger than the largest remote uid while (localUids.size() > 0 && found != deletedMessages && ((Integer) localUids.get(localUids.size() - 1)) .intValue() > largestRemoteUid) { Flags flags = getHeaderList().remove( localUids.get(localUids.size() - 1)).getFlags(); fireMessageRemoved(localUids.remove(localUids.size() - 1), flags); found++; } // Search in packs beginning from newest to oldest // -> in most cases this should save us a lot of uid fetchings to // find the deleted messages // Pack size is min 10, max 200 else mailboxsize / 10 int packSize = Math.min(Math.max(deletedMessages, status .getMessages() / 10), 200); int upper = status.getMessages(); int localPointer = localUids.size() - 1; // Fetch Pack outer loop while (upper >= 1 && found != deletedMessages) { SequenceSet set = new SequenceSet(); set.add(Math.max(upper - packSize + 1, 1), upper); // Fetch these uids and compare them to the // local list Integer[] actUids = getServer().fetchUids(set, this); // Compare inner loop for (int i = actUids.length - 1; i >= 0 && found != deletedMessages; i--) { // Find missing uids loop while (found != deletedMessages && localPointer >= 0 && !localUids.get(localPointer).equals(actUids[i])) { // We found the uid of a deleted message // -> remove it from the headerlist getHeaderList().remove(localUids.get(localPointer)); found++; localPointer--; } // next position in the local uid list localPointer--; } upper = upper - packSize; } // All the other local mails are deleted while (found < deletedMessages && localPointer >= 0) { getHeaderList().remove(localUids.get(localPointer--)); found++; } if (found != deletedMessages) { LOG.severe("Assertion failed : found only " + found + " of " + deletedMessages); } } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
List fetchNewMessages(int startIndex) throws IOException, IMAPException, CommandCancelledException, Exception { IMAPFlags[] newFlags = getServer().fetchFlagsListStartFrom2( startIndex + 1, this); List newUids = new ArrayList(newFlags.length); // Build a list of the new uids for (int i = 0; i < newFlags.length; i++) { // Update the list of new and local uids newUids.add(newFlags[i].getUid()); } // Fetch the headers of the new messages ... getServer().fetchHeaderList(getHeaderList(), newUids, this); // .. and set the flags setFlags(newFlags); // fire message added updates for (int i = 0; i < newFlags.length; i++) { fireMessageAdded(newFlags[i].getUid(), newFlags[i]); } return newUids; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void synchronizeFlags(MailboxStatus status) throws Exception, IOException, CommandCancelledException, IMAPException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_flags")); MailboxStatus flagStatus = new MailboxStatus(); flagStatus.setMessages(status.getMessages()); // Build the remote lists of messages that are UNSEEN, FLAGGED, DELETED, // JUNK SearchKey unseenKey = new SearchKey(SearchKey.UNSEEN); List remoteUnseenUids = Arrays.asList(getServer().search(unseenKey, this)); flagStatus.setUnseen(remoteUnseenUids.size()); SearchKey flaggedKey = new SearchKey(SearchKey.FLAGGED); List remoteFlaggedUids = Arrays.asList(getServer().search(flaggedKey, this)); SearchKey deletedKey = new SearchKey(SearchKey.DELETED); List remoteDeletedUids = Arrays.asList(getServer().search(deletedKey, this)); SearchKey recentKey = new SearchKey(SearchKey.RECENT); List remoteRecentUids = Arrays.asList(getServer().search(recentKey, this)); flagStatus.setRecent(remoteRecentUids.size()); SearchKey junkKey = new SearchKey(SearchKey.KEYWORD, "JUNK"); List remoteJunkUids = Arrays.asList(getServer().search(junkKey, this)); SearchKey answeredKey = new SearchKey(SearchKey.ANSWERED); List remoteAnsweredUids = Arrays.asList(getServer().search(answeredKey, this)); SearchKey draftKey = new SearchKey(SearchKey.DRAFT); List remoteDraftUids = Arrays.asList(getServer().search(draftKey, this)); // update the local flags and ensure that the MailboxInfo is correct ICloseableIterator headerIterator = getHeaderList().headerIterator(); int unseen = 0; int flagged = 0; int recent = 0; int deleted = 0; int junk = 0; int answered = 0; int draft = 0; while (headerIterator.hasNext()) { IColumbaHeader header = (IColumbaHeader) headerIterator.next(); Object uid = header.get("columba.uid"); Flags flag = header.getFlags(); Flags oldFlag = (Flags) flag.clone(); int index; index = Collections.binarySearch(remoteUnseenUids, uid); flag.setSeen(index < 0); if (!flag.getSeen()) { unseen++; } index = Collections.binarySearch(remoteDeletedUids, uid); flag.setDeleted(index >= 0); if (flag.getDeleted()) { deleted++; } index = Collections.binarySearch(remoteFlaggedUids, uid); flag.setFlagged(index >= 0); if (flag.getFlagged()) { flagged++; } index = Collections.binarySearch(remoteRecentUids, uid); flag.setRecent(index >= 0); if (flag.getRecent()) { recent++; } index = Collections.binarySearch(remoteJunkUids, uid); header.getAttributes().put("columba.spam", new Boolean(index >= 0)); if (index >= 0) { junk++; } index = Collections.binarySearch(remoteAnsweredUids, uid); flag.setAnswered(index >= 0); if (flag.getAnswered()) { answered++; } index = Collections.binarySearch(remoteDraftUids, uid); flag.setDraft(index >= 0); if (flag.getDraft()) { draft++; } if (!flag.equals(oldFlag)) { getHeaderList().update(uid, header); fireMessageFlagChanged(uid, oldFlag, 0); } } headerIterator.close(); if (remoteJunkUids.size() != junk || remoteRecentUids.size() != recent || remoteFlaggedUids.size() != flagged || remoteDeletedUids.size() != deleted || remoteUnseenUids.size() != unseen || remoteAnsweredUids.size() != answered || remoteDraftUids.size() != draft) { // Something is wrong // Sync again synchronizeHeaderlist(); return; } syncMailboxInfo(flagStatus); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public String getImapPath() throws IOException, IMAPException, CommandCancelledException { StringBuffer path = new StringBuffer(); path.append(getName()); IMailFolder child = this; while (true) { child = (IMailFolder) child.getParent(); if (child instanceof IMAPRootFolder) { break; } String n = ((IMAPFolder) child).getName(); path.insert(0, n + getServer().getDelimiter()); } return path.toString(); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void updateFlag(IMAPFlags flag) throws Exception, CommandCancelledException { if (getServer().isSelected(this)) { Integer uid = new Integer(getServer().fetchUid( new SequenceSet(flag.getIndex()), this)); flag.setUid(uid); setFlags(new Flags[] { flag }); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
void fetchDone() throws IOException, CommandCancelledException, IMAPException, Exception { MailboxStatus status = getServer().getStatus(this); List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); // Number of deleted messages is computed from exists on imap and local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } // Apply filter if enabled ImapItem item = getServer().getItem(); boolean applyFilter = item.getBooleanWithDefault( "automatically_apply_filter", false); // if "automatically apply filter" is selected & there // are // new // messages if (applyFilter) { CommandProcessor.getInstance() .addOp( new ApplyFilterCommand( new MailFolderCommandReference(this))); } // Reenable Updating the mailbox mailboxSyncEnabled = true; }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureConnected() throws IOException, SMTPException, CommandCancelledException { if (protocol.getState() == SMTPProtocol.NOT_CONNECTED) { // Start login procedure protocol.openPort(); initialize(); doSSL(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureAuthenticated() throws IOException, SMTPException, CommandCancelledException { String username; char[] password = new char[0]; boolean savePassword; // Init Values // user's email address fromAddress = identity.getAddress().getMailAddress(); usingSSL = smtpItem.getBoolean("enable_ssl"); int authMethod = getLoginMethod(); boolean authenticated = (authMethod == AuthenticationManager.NONE); if (authMethod == AuthenticationManager.POP_BEFORE_SMTP) { // no esmtp - use POP3-before-SMTP instead try { pop3Authentification(); } catch (POP3Exception e) { throw new SMTPException(e); } authenticated = true; } ensureConnected(); if (!authenticated) { username = smtpItem.get("user"); password = Blowfish.decrypt(smtpItem.getRoot().getAttribute("password", "")); savePassword = smtpItem.getBoolean("save_password"); if (username.length() == 0) { // there seems to be no username set in the smtp-options // -> use username from pop3 or imap options if (accountItem.isPopAccount()) { PopItem pop3Item = accountItem.getPopItem(); username = pop3Item.get("user"); } else { ImapItem imapItem = accountItem.getImapItem(); username = imapItem.get("user"); } } PasswordDialog passDialog = new PasswordDialog(); // ask password from user if (password.length == 0) { passDialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String(password), savePassword); if (passDialog.success()) { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } else { throw new CommandCancelledException(); } } // try to authenticate while (!authenticated) { try { try { protocol.auth(AuthenticationManager .getSaslName(authMethod), username, password); authenticated = true; } catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } } } catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } } } // authentication was successful // -> save name/password smtpItem.setString("user", username); smtpItem.setBoolean("save_password", savePassword); if (savePassword) { smtpItem.setString("password", Blowfish.encrypt(password)); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void doSSL() throws CommandCancelledException, IOException, SMTPException { if (smtpItem.getBoolean("enable_ssl")) { if (isSupported("STARTTLS")) { try { protocol.startTLS(); usingSSL = true; } catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); } } else { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader.getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(null, MailResourceLoader.getString("dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
public List checkSupportedAuthenticationMethods() throws IOException, SMTPException, CommandCancelledException { ensureConnected(); List supportedMechanisms = new ArrayList(); for (int i = 0; i < capas.length; i++) { if (capas[i].startsWith("AUTH")) { List authMechanisms = AuthenticationFactory.getInstance() .getSupportedMechanisms(capas[i]); Iterator it = authMechanisms.iterator(); while (it.hasNext()) { Integer saslCode = new Integer(AuthenticationManager .getSaslCode((String) it.next())); if (!saslCode.equals(-1)) supportedMechanisms.add(saslCode); } break; } } if( supportedMechanisms.size() == 0) { // Add a default PLAIN login as fallback supportedMechanisms.add(new Integer(AuthenticationManager.SASL_PLAIN)); } return supportedMechanisms; }
// in java/org/columba/mail/smtp/SMTPServer.java
private int getLoginMethod() throws IOException, SMTPException, CommandCancelledException { String authType = accountItem.getSmtpItem().get("login_method"); int method = 0; try { method = Integer.parseInt(authType); } catch (NumberFormatException e) { //Fallback to Securest Login method } if (method == 0) { List supported = checkSupportedAuthenticationMethods(); if (accountItem.isPopAccount()) { supported .add(new Integer(AuthenticationManager.POP_BEFORE_SMTP)); } if (supported.size() == 0) { // No Authentication available return AuthenticationManager.NONE; } if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. method = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); method = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return method; }
// in java/org/columba/mail/smtp/SMTPServer.java
protected void pop3Authentification() throws IOException, POP3Exception, CommandCancelledException { POP3Store.doPOPbeforeSMTP(accountItem.getPopItem()); }
// in java/org/columba/mail/smtp/SMTPServer.java
public void sendMessage(SendableMessage message, IWorkerStatusController workerStatusController) throws SMTPException, IOException, CommandCancelledException { ensureAuthenticated(); // send from address and recipient list to SMTP server // ->all addresses have to be normalized protocol.mail(identity.getAddress()); Iterator recipients = message.getRecipients().iterator(); while (recipients.hasNext()) { try { protocol.rcpt(Address.parse((String) recipients.next())); } catch (ParserException e1) { throw new SMTPException(e1); } } // now send message source protocol.data(new ProgressObservedInputStream( message.getSourceStream(), workerStatusController)); }
2
            
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (CommandCancelledException e) { server.logout(); // clear statusbar message server.getObservable().clearMessage(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (CommandCancelledException e) { }
0 0
unknown (Lib) DatabaseException 0 0 2
            
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
private synchronized void openEnvironment() throws DatabaseException { if( environment != null) return; if( !headercacheDirectory.exists()) headercacheDirectory.mkdir(); EnvironmentConfig environmentConfig = new EnvironmentConfig(); environmentConfig.setAllowCreate(true); environmentConfig.setCachePercent(80); // perform other environment configurations try { environment = new Environment(headercacheDirectory, environmentConfig); } catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; } }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
private synchronized void openDatabase() throws DatabaseException{ if( db != null ) return; openEnvironment(); try { databaseConfig = new DatabaseConfig(); databaseConfig.setAllowCreate(true); // perform other database configurations db = environment.openDatabase(null, name , databaseConfig); openDatabases++; } catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; } }
16
            
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.warning(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.fine(e.getMessage()); return false; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); return 0; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return new Object[0]; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return new HashSet(); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); return null; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); }
5
            
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); throw e; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
3
runtime (Lib) Error 0 0 0 1
            
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Error e) { viewerPlugin = createHTMLViewerPluginInstance("Default"); if (Logging.DEBUG) e.printStackTrace(); }
0 0
checked (Lib) Exception 2
            
// in java/org/columba/mail/filter/plugins/CopyMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { String uid = filterAction.getUid(); IMailbox destFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(uid); if (destFolder == null) { JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), "Unable to find destination folder, please correct the destination folder path for this filter"); throw new Exception("File not found"); } MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, destFolder, uids); CopyMessageCommand c = new CopyMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/MoveMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { String uid = filterAction.getUid(); IMailbox destFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(uid); if (destFolder == null) { JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), "Unable to find destination folder, please correct the destination folder path for this filter"); throw new Exception("File not found"); } MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, destFolder, uids); MoveMessageCommand c = new MoveMessageCommand(r); return c; }
0 361
            
// in java/org/columba/mail/gui/message/MessageController.java
public IMailFolderCommandReference filterMessage(IMailbox folder, Object uid) throws Exception { return pgpFilter.filter(folder, uid); }
// in java/org/columba/mail/gui/message/MessageController.java
public void showMessage(IMailbox folder, Object uid) throws Exception { this.folder = folder; this.uid = uid; // if necessary decrypt/verify message IMailFolderCommandReference newRefs = filterMessage(folder, uid); // map to new reference if (newRefs != null) { folder = (IMailbox) newRefs.getSourceFolder(); uid = newRefs.getUids()[0]; } MimeTree mimePartTree = folder.getMimePartTree(uid); if (mimePartTree == null) throw new CommandCancelledException( "Message does not exist anymore."); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be shown? (html/plain) String preferedSubtype; if ((Boolean.valueOf(html.getAttribute("prefer")).booleanValue())) { preferedSubtype = "html"; } else { preferedSubtype = "plain"; } List parts = mimePartTree.getInlineParts(mimePartTree.getRootMimeNode(), "text", preferedSubtype); bodytextViewer.view(folder, uid, parts, this .getFrameController()); spamStatusViewer.view(folder, uid, this.getFrameController()); securityStatusViewer.view(folder, uid, this.getFrameController()); headerController.view(folder, uid, this.getFrameController()); // notify all interested listeners fireMessageSelectionChangedEvent(folder, uid.toString()); }
// in java/org/columba/mail/gui/message/MessageController.java
public void updateGUI() throws Exception { bodytextViewer.updateGUI(); spamStatusViewer.updateGUI(); securityStatusViewer.updateGUI(); headerController.updateGUI(); }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
public IMailFolderCommandReference filter(IMailbox folder, Object uid) throws Exception { mimePartTree = folder.getMimePartTree(uid); // Check if the message still exists // or has been moved by e.g. a filter if (mimePartTree == null) return null; // TODO (@author waffel): encrypt AND sign dosN#t work. The message is // always only // encrypted. We need a function that knows, here // is an encrypted AND signed Message. Thus first encyrpt and then // verifySign the message // if this message is signed/encrypted we have to use // GnuPG to extract the decrypted bodypart // - multipart/encrypted // - multipart/signed MimeType firstPartMimeType = mimePartTree.getRootMimeNode().getHeader() .getMimeType(); AccountItem defAccount = MailConfig.getInstance().getAccountList() .getDefaultAccount(); boolean pgpActive = false; if (defAccount != null) { SecurityItem pgpItem = defAccount.getPGPItem(); LOG.fine("pgp activated: " + pgpItem.get("enabled")); pgpActive = new Boolean((pgpItem.get("enabled"))).booleanValue(); } IMailFolderCommandReference result = null; LOG.fine("pgp is true"); if (firstPartMimeType.getSubtype().equals("signed")) { result = verify(folder, uid, pgpActive); } else if (firstPartMimeType.getSubtype().equals("encrypted")) { LOG.fine("Mimepart type encrypted found"); result = decrypt(folder, uid, pgpActive); } else { pgpMode = SecurityStatusViewer.NOOP; } // notify listeners fireSecurityStatusEvent(new SecurityStatusEvent(this, pgpMessage, pgpMode)); return result; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
private IMailFolderCommandReference decrypt(IMailbox folder, Object uid, boolean pgpActive) throws Exception, IOException { InputStream decryptedStream = null; LOG.fine("start decrypting"); if (!pgpActive) { pgpMessage = ""; pgpMode = SecurityStatusViewer.NO_KEY; } else { MimePart encryptedMultipart = mimePartTree.getRootMimeNode(); // the second child must be the encrypted message InputStream encryptedPart = folder.getMimePartBodyStream(uid, encryptedMultipart.getChild(1).getAddress()); try { JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); LOG.fine("new JSCConnection"); JSCFStatement stmt = con.createStatement(); LOG.fine("new Statement"); PGPPassChecker passCheck = PGPPassChecker.getInstance(); boolean check = passCheck.checkPassphrase(con); LOG.fine("after pass check, check is " + check); if (!check) { pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; // TODO (@author fdietz): make i18n! pgpMessage = "wrong passphrase"; return null; } LOG.fine("encrypted is != null?: " + (encryptedPart != null)); JSCFResultSet res = stmt.executeDecrypt(encryptedPart); LOG.fine("after calling decrypting"); if (res.isError()) { LOG.fine("the result set contains errors "); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = StreamUtils.readCharacterStream( res.getErrorStream()).toString(); LOG.fine("error message: " + pgpMessage); decryptedStream = res.getResultStream(); // return null; } else { decryptedStream = res.getResultStream(); pgpMode = SecurityStatusViewer.DECRYPTION_SUCCESS; } } catch (JSCFException e) { e.printStackTrace(); LOG.severe(e.getMessage()); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = e.getMessage(); // just show the encrypted raw message decryptedStream = encryptedPart; } } try { LOG.fine("decrypted Stream is: " + decryptedStream); CharSequence decryptedBodyPart = ""; // if the pgp mode is active we should get the decrypted part if (pgpActive) { // TODO (@author fdietz): should be removed if we only use // Streams! decryptedBodyPart = StreamUtils .readCharacterStream(decryptedStream); // check if the returned String is has a length != 0 if (decryptedBodyPart.length() == 0) { LOG .fine("decrypted body part has a 0 length ... fixing it"); decryptedBodyPart = new StringBuffer( "Content-Type: text/plain; charset=\"ISO-8859-15\"\n\n"); } } // else we set the body to the i18n String else { decryptedBodyPart = new StringBuffer( "Content-Type: text/plain; charset=\"ISO-8859-15\"\n\n" + MailResourceLoader.getString("menu", "mainframe", "security_decrypt_encrypted") + "\n"); } LOG.fine("the decrypted Body part: " + decryptedBodyPart); // construct new Message from decrypted string message = new ColumbaMessage(folder.getAllHeaderFields(uid)); Source decryptedSource = new CharSequenceSource(decryptedBodyPart); MimeHeader mimeHeader = new MimeHeader(HeaderParser .parse(decryptedSource)); mimePartTree = new MimeTree(BodyParser.parseMimePart(mimeHeader, decryptedSource)); message.setMimePartTree(mimePartTree); InputStream messageSourceStream = folder .getMessageSourceStream(uid); message.setSource(new CharSequenceSource(StreamUtils .readCharacterStream(messageSourceStream))); messageSourceStream.close(); // call AbstractFilter to do the tricky part return filter(folder, uid, message); // header = (ColumbaHeader) message.getHeaderInterface(); } catch (ParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } /* * controlPart.close(); encryptedPart.close(); if (decryptedStream != * null) { decryptedStream.close(); } */ return null; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
private MailFolderCommandReference verify(IMailbox folder, Object uid, boolean pgpActive) throws Exception, IOException { if (!pgpActive) { pgpMessage = ""; pgpMode = SecurityStatusViewer.NO_KEY; return null; } MimePart signedMultipart = mimePartTree.getRootMimeNode(); // the first child must be the signed part InputStream signedPart = folder.getMimePartSourceStream(uid, signedMultipart.getChild(0).getAddress()); // the second child must be the pgp-signature InputStream signature = folder.getMimePartBodyStream(uid, signedMultipart.getChild(1).getAddress()); try { JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); JSCFStatement stmt = con.createStatement(); String micalg = signedMultipart.getHeader().getContentParameter( "micalg").substring(4); JSCFResultSet res = stmt.executeVerify(signedPart, signature, micalg); if (res.isError()) { pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = StreamUtils.readCharacterStream( res.getErrorStream()).toString(); } else { pgpMode = SecurityStatusViewer.VERIFICATION_SUCCESS; pgpMessage = StreamUtils.readCharacterStream( res.getResultStream()).toString(); } } catch (JSCFException e) { if (Logging.DEBUG) e.printStackTrace(); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = e.getMessage(); // something really got wrong here -> show error dialog // JOptionPane.showMessageDialog(null, e.getMessage()); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; } signedPart.close(); signature.close(); return null; }
// in java/org/columba/mail/gui/message/filter/AbstractFilter.java
public IMailFolderCommandReference filter(IMailbox folder, Object uid, IColumbaMessage message) throws Exception { // map selection to this temporary message TempFolder tempFolder = FolderTreeModel.getInstance().getTempFolder(); // add message to temporary folder uid = tempFolder.addMessage(message); // create reference to this message MailFolderCommandReference local = new MailFolderCommandReference(tempFolder, new Object[] {uid}); // if we don't use this here - actions like reply would only work // on the // the encrypted message TableSelectionHandler h1 = ((TableSelectionHandler) mediator .getSelectionManager().getHandler(TableSelectionHandler.HANDLER_ID)); h1.setLocalReference(local); // this is needed to be able to open attachments of the decrypted // message // TODO check if we have to manually set the folder/uid in // message controller to make this work //messageController.setAttachmentSelectionReference(local); return local; }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
public void updateGUI() throws Exception { ((MailFrameMediator) mediator).removeTableSelectionListener(this); // Update only if the selection did not change if (updateGui) { IMessageController messageController = ((MessageViewOwner) mediator) .getMessageController(); // display changes messageController.updateGUI(); fillContext(); } }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
public void execute(IWorkerStatusController wsc) throws Exception { if (!updateGui) return; // get command reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get selected folder srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(wsc); // get selected message UID uid = r.getUids()[0]; if (!srcFolder.exists(uid)) { return; } try { // get flags flags = srcFolder.getFlags(uid); // get messagecontroller of frame IMessageController messageController = ((MessageViewOwner) mediator) .getMessageController(); messageController.showMessage(srcFolder, uid); restartMarkAsReadTimer(flags, messageController, r); // fill semantic context prepareContextData(); } catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); } }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
private void prepareContextData() throws Exception { // create empty value value = mediator.getSemanticContext().createValue(); // from email address Object fromObj = srcFolder.getAttribute(uid, "columba.from"); if (fromObj instanceof Address) { name = NameParser.getInstance().parseDisplayName(((Address)fromObj).getDisplayName()); from = (Address) fromObj; } else if ( fromObj instanceof String){ name = NameParser.getInstance().parseDisplayName((String) fromObj); } subject = (String) srcFolder.getAttribute(uid, "columba.subject"); date = (Date) srcFolder.getAttribute(uid, "columba.date"); }
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
private void restartMarkAsReadTimer(Flags flags, IMessageController messageController, IMailFolderCommandReference r) throws Exception { if (flags == null) return; // if the message it not yet seen if (!flags.getSeen() && !srcFolder.isReadOnly()) { MarkAsReadTimer.getInstance().start(messageController, r); } }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
public void updateGUI() throws Exception { if (header.getMimeType().getType().toLowerCase().indexOf("message") != -1) { MessageFrameController c = new MessageFrameController(); new DefaultContainer(c); Object[] uidList = new Object[1]; uidList[0] = tempMessageUid; IMailFolderCommandReference r = new MailFolderCommandReference( tempFolder, uidList); c.setTreeSelection(r); c.setTableSelection(r); CommandProcessor.getInstance().addOp(new ViewMessageCommand(c, r)); } else { boolean attachmentHandlerExecuted = false; try { IExtensionHandler handler = PluginManager .getInstance() .getExtensionHandler( IExtensionHandlerKeys.ORG_COLUMBA_ATTACHMENT_HANDLER); Enumeration<IExtension> e = handler.getExtensionEnumeration(); while (e.hasMoreElements()) { IExtension extension = e.nextElement(); try { IAttachmentHandler attachmentHandler = (IAttachmentHandler) extension .instanciateExtension(null); attachmentHandler.execute(new AttachmentContext( tempFile, header)); attachmentHandlerExecuted &= true; } catch (PluginException e1) { LOG.severe("Error while loading plugin: " + e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); } } } catch (PluginHandlerNotFoundException e2) { LOG.severe("Error while loading plugin: " + e2.getMessage()); if (Logging.DEBUG) e2.printStackTrace(); } // in case no attachment handler was executed correctly // -> fall back to default handler if (!attachmentHandlerExecuted) { boolean success = ColumbaDesktop.getInstance().open(tempFile); // if attachment can't be opened, save it only if (!success) { File saveToFile = getDestinationFile(header); if (saveToFile.exists()) saveToFile.delete(); tempFile.renameTo(saveToFile); } } } }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); IMailbox folder = (IMailbox) r.getSourceFolder(); Object[] uids = r.getUids(); Integer[] address = r.getAddress(); header = folder.getMimePartTree(uids[0]).getFromAddress(address) .getHeader(); worker.setDisplayText("Opening " + header.getFileName()); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); // wrap with observable stream for progress bar updates bodyStream = new ProgressObservedInputStream(bodyStream, worker); if (header.getMimeType().getType().equals("message")) { tempFolder = FolderTreeModel.getInstance().getTempFolder(); try { tempMessageUid = tempFolder.addMessage(bodyStream); } catch (Exception e) { LOG .warning("Could not create temporary email from the attachment."); } } else { String filename = header.getFileName(); if (filename != null) { tempFile = TempFileStore.createTempFile(filename); } else { tempFile = TempFileStore.createTempFile(); } int encoding = header.getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; case MimeHeader.BASE64: bodyStream = new Base64DecoderInputStream(bodyStream); break; default: } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Storing the attachment to :" + tempFile); } FileOutputStream fileStream = new FileOutputStream(tempFile); StreamUtils.streamCopy(bodyStream, fileStream); fileStream.close(); bodyStream.close(); } }
// in java/org/columba/mail/gui/message/command/SaveAttachmentTemporaryCommand.java
public void execute(IWorkerStatusController worker) throws Exception { super.execute(worker); commandSemaphore.release(); }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
public void updateGUI() throws Exception { ColumbaDesktop.getInstance().open(tempFile); }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); IMailbox folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); Object uid = uids[0]; InputStream in = null; OutputStream out = null; try { in = new BufferedInputStream(folder.getMessageSourceStream(uid)); tempFile = TempFileStore.createTempFileWithSuffix("txt"); out = new BufferedOutputStream(new FileOutputStream(tempFile)); byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer, 0, buffer.length)) > 0) { out.write(buffer, 0, read); } } catch (IOException ioe) { ioe.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException ioe) { } } if (out != null) { try { out.close(); } catch (IOException ioe) { } } } }
// in java/org/columba/mail/gui/message/command/SaveAttachmentCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); IMailbox folder = (IMailbox) r.getSourceFolder(); Object[] uids = r.getUids(); Integer[] address = r.getAddress(); MimeHeader header = folder.getMimePartTree(uids[0]).getFromAddress( address).getHeader(); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); // wrap with observable stream for progress bar updates bodyStream = new ProgressObservedInputStream(bodyStream, worker); File destFile = getDestinationFile(header); if ( destFile == null ) return; worker.setDisplayText("Saving " + destFile.getName()); // write to temporary file File tempFile = new File(destFile.getAbsoluteFile() + ".part"); if (tempFile == null) return; int encoding = header.getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; case MimeHeader.BASE64: bodyStream = new Base64DecoderInputStream(bodyStream); break; default: } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Storing the attachment to :" + tempFile); } FileOutputStream fileStream = new FileOutputStream(tempFile); StreamUtils.streamCopy(bodyStream, fileStream); fileStream.close(); bodyStream.close(); // rename "*.part" file to destination file tempFile.renameTo(destFile); // reset progress bar worker.setProgressBarValue(0); // We are done - clear the status message with a delay worker.clearDisplayTextWithDelay(); }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
public void view(IMailbox folder, Object uid, MailFrameMediator mediator) throws Exception { // add headerfields which are about to show up XmlElement headerviewerElement = MailConfig.getInstance() .get("options").getElement("/options/headerviewer"); IDefaultItem item = new DefaultItem(headerviewerElement); int style = item.getIntegerWithDefault("style", 0); map = new LinkedHashMap(); Header header = null; String[] headers = null; switch (style) { case 0: // default headers = new String[] { "Subject", "Date", "From", "To", "Cc" }; // get header from folder header = folder.getHeaderFields(uid, headers); // transform headers if necessary for (int i = 0; i < headers.length; i++) { String key = headers[i]; JComponent[] value = transformHeaderField(header, key); JButton trailingItem = new JButton("more..."); trailingItem = createLinkButton(trailingItem); trailingItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { showAddressListDialog(); } }); DynamicItemListPanel p = new DynamicItemListPanel(2, trailingItem, true); p.setOpaque(false); for (int j = 0; j < value.length; j++) { p.addItem(value[j]); } if (value.length > 0) map.put(key, p); } break; case 1: // custom headers String list = headerviewerElement.getAttribute("headerfields"); StringTokenizer tok = new StringTokenizer(list, " "); headers = new String[tok.countTokens()]; for (int i = 0; i < headers.length; i++) { headers[i] = tok.nextToken(); } // get header from folder header = folder.getHeaderFields(uid, headers); // transform headers if necessary for (int i = 0; i < headers.length; i++) { String key = headers[i]; JComponent[] value = transformHeaderField(header, key); if (value.length > 0) map.put(key, value); } break; case 2: // default headers = new String[] { "From" }; // get header from folder header = folder.getHeaderFields(uid, headers); // transform headers if necessary for (int i = 0; i < headers.length; i++) { String key = headers[i]; JComponent[] value = transformHeaderField(header, key); JButton trailingItem = new JButton("more..."); trailingItem = createLinkButton(trailingItem); trailingItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { showAddressListDialog(); } }); DynamicItemListPanel p = new DynamicItemListPanel(2, trailingItem, true); p.setOpaque(false); for (int j = 0; j < value.length; j++) { p.addItem(value[j]); } if (value.length > 0) map.put(key, p); } break; } hasAttachment = ((Boolean) folder.getAttribute(uid, "columba.attachment")).booleanValue(); if (hasAttachment) { JComponent[] value = createAttachmentComponentArray(folder, uid); // create a view more button, responsible for // opening the attachment viewer popup JButton moreButton = createAttachmentMoreButton(); DynamicItemListPanel p = new DynamicItemListPanel(2, null, true); p.setShowLastSeparator(false); p.setOpaque(false); for (int j = 0; j < value.length; j++) { p.addItem(value[j]); } p.addItem(moreButton); // TODO i18n "attachments" label if (value.length > 0) map.put("Attachments", p); } headerTextPane.setHeader(map); attachmentViewer.view(folder, uid, mediator); // hack to support dockable view title update // TODO replace with listener pattern if (mediator instanceof ThreePaneMailFrameController) { final ThreePaneMailFrameController c = (ThreePaneMailFrameController) mediator; // get header from folder final String title = (String) folder.getAttribute(uid, "columba.subject"); // awt-event-thread javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { c.getMessageViewerDockable().setTitle(title); } }); }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
private JComponent[] createAttachmentComponentArray(final IMailbox folder, final Object uid) throws Exception { Vector vector = new Vector(); MimeTree model = folder.getMimePartTree(uid); List displayedMimeParts = model.getAllLeafs(); // remove body part if already shown in text viewer removeBodyParts(model, displayedMimeParts); // Display resulting MimeParts for (int i = 0; i < displayedMimeParts.size(); i++) { final StreamableMimePart mp = (StreamableMimePart) displayedMimeParts .get(i); // create attachment component with text, icon // tooltip, context menu and double-click action JButton button = createAttachmentItem(mp); vector.add(button); } // // create a view more button, responsible for // // opening the attachment viewer popup // JButton moreButton = createAttachmentMoreButton(); // vector.add(moreButton); return (JComponent[]) vector.toArray(new JComponent[0]); }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
public void updateGUI() throws Exception { headerTextPane.updateGUI(); layoutComponents(); revalidate(); repaint(); attachmentViewer.updateGUI(); }
// in java/org/columba/mail/gui/message/viewer/SpamStatusViewer.java
public void view(IMailbox folder, Object uid, MailFrameMediator mediator) throws Exception { Boolean spam = (Boolean) folder.getAttribute(uid, "columba.spam"); visible = spam.booleanValue(); }
// in java/org/columba/mail/gui/message/viewer/SpamStatusViewer.java
public void updateGUI() throws Exception { setSpam(visible); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
public void view(IMailbox folder, Object uid, List bodyParts, MailFrameMediator mediator) throws Exception { this.folder = folder; this.uid = uid; InputStream bodyStream; MimeTree mimePartTree = folder.getMimePartTree(uid); if (bodyParts.size() == 0) { body = MessageParser.transformTextToHTML("<No Message-Text>", css, enableSmilies, true); } else { body = ""; for (int i = 0; i < bodyParts.size(); i++) { MimePart bodyPart = (MimePart) bodyParts.get(i); htmlMessage = bodyPart.getHeader().getMimeType().getSubtype() .equals("html"); bodyStream = folder.getMimePartBodyStream(uid, bodyPart .getAddress()); bodyStream = MessageParser.decodeBodyStream(bodyPart, bodyStream); // Which Charset shall we use ? Charset charset = ((CharsetOwnerInterface) mediator).getCharset(); charset = MessageParser.extractCharset(charset, bodyPart); bodyStream = new FallbackCharsetDecoderInputStream(bodyStream, charset); // Read Stream in String StringBuffer text = StreamUtils.readCharacterStream(bodyStream); // if HTML stripping is enabled if (isHTMLStrippingEnabled()) { // strip HTML message -> remove all HTML tags text = new StringBuffer(HtmlParser.stripHtmlTags(text.toString(), true)); htmlMessage = false; } if (htmlMessage) { // Download any CIDs in the html mail body += HtmlParser.getHtmlBody(downloadCIDParts(text.toString(), mimePartTree)); } else { body += MessageParser.transformTextToHTML(text.toString(), css, enableSmilies, false); } } body = MessageParser.transformToHTML(new StringBuffer(body), css); } }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
public void updateGUI() throws Exception { viewerPlugin.view(body); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
private void downloadMimePart(MimePart part, File destFile) throws Exception { MimeHeader header = part.getHeader(); InputStream bodyStream = folder.getMimePartBodyStream(uid, part .getAddress()); int encoding = header.getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; case MimeHeader.BASE64: bodyStream = new Base64DecoderInputStream(bodyStream); break; default: } FileOutputStream fileStream = new FileOutputStream(destFile); StreamUtils.streamCopy(bodyStream, fileStream); fileStream.close(); bodyStream.close(); }
// in java/org/columba/mail/gui/message/viewer/AttachmentsViewer.java
public void view(IMailbox folder, Object uid, MailFrameMediator mediator) throws Exception { setLocalReference(new MailFolderCommandReference(folder, new Object[] { uid })); mimePartTree = folder.getMimePartTree(uid); }
// in java/org/columba/mail/gui/message/viewer/AttachmentsViewer.java
public void updateGUI() throws Exception { if (mimePartTree == null) return; setMimePartTree(mimePartTree); }
// in java/org/columba/mail/gui/message/viewer/SecurityStatusViewer.java
public void view(IMailbox folder, Object uid, MailFrameMediator mediator) throws Exception { }
// in java/org/columba/mail/gui/message/viewer/SecurityStatusViewer.java
public void updateGUI() throws Exception { }
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
public static String transformTextToHTML(String bodyText, String css, boolean enableSmilies, boolean encapsulate) throws Exception { String body = null; // substitute special characters like: // <,>,&,\t,\n body = HtmlParser.substituteSpecialCharacters(bodyText); // parse for urls and substite with HTML-code body = HtmlParser.substituteURL(body); // parse for email addresses and substite with HTML-code body = HtmlParser.substituteEmailAddress(body); // parse for quotings and color the darkgray body = DocumentParser.markQuotings(body); // add smilies if (enableSmilies == true) { body = DocumentParser.addSmilies(body); } body = "<P>" + body + "</P>"; // encapsulate bodytext in html-code if (encapsulate) body = transformToHTML(new StringBuffer(body), css); return body; }
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
public static InputStream decodeBodyStream(MimePart bodyPart, InputStream bodyStream) throws Exception { // default encoding is plain int encoding = MimeHeader.PLAIN; if (bodyPart != null) { encoding = bodyPart.getHeader().getContentTransferEncoding(); } switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64: { bodyStream = new Base64DecoderInputStream(bodyStream); break; } } return bodyStream; }
// in java/org/columba/mail/gui/message/util/DocumentParser.java
public static String markQuotings(String input) throws Exception { Matcher matcher = markQuotingsPattern.matcher(input); return matcher.replaceAll("\n<font class=\"quoting\">$1$3</font>"); }
// in java/org/columba/mail/gui/message/util/DocumentParser.java
public static String addSmilies(String input) throws Exception { Matcher matcher; for (int i = 0; i < smilyPattern.length; i++) { matcher = smilyPattern[i].matcher(input); input = matcher.replaceAll("&nbsp<IMG SRC=\"" + smilyImage[i] + "\">"); } return input; }
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { parentFolder = (IMailFolder) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); String name = ((IMailFolderCommandReference) getReference()) .getFolderName(); String type = ((IMailFolderCommandReference) getReference()) .getFolderType(); try { if (type == null) { FolderFactory.getInstance() .createDefaultChild(parentFolder, name); } else { FolderFactory.getInstance() .createChild(parentFolder, name, type); } } catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); } }
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
public void updateGUI() throws Exception { if (success) { /* * MailInterface.treeModel.nodeStructureChanged(parentFolder); */ // select node in JTree TreeNode[] nodes = childFolder.getPath(); tree.setSelectionPath(new TreePath(nodes)); } }
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { parentFolder = (IMailFolder) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); String name = ((IMailFolderCommandReference) getReference()) .getFolderName(); try { childFolder = FolderFactory.getInstance().createDefaultChild( parentFolder, name); // if folder creation failed // -> don't update tree ui if (childFolder == null) { success = false; } } catch (Exception ex) { success = false; throw ex; } }
// in java/org/columba/mail/gui/tree/command/MailboxSizeCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolder folder = (IMailFolder) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); total = 0; if (folder instanceof IMailbox) { IHeaderList headerList = ((IMailbox) folder).getHeaderList(); ICloseableIterator it = headerList.headerIterator(); while (it.hasNext()) { IColumbaHeader header = (IColumbaHeader) it.next(); Integer sizeInt = (Integer) header.getAttributes().get( "columba.size"); if (sizeInt != null) { total += sizeInt.intValue(); } } it.close(); } }
// in java/org/columba/mail/gui/tree/command/MailboxSizeCommand.java
public void updateGUI() throws Exception { dialog.setMailboxSize(total); }
// in java/org/columba/mail/gui/config/subscribe/UnsubscribeFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { SubscribeCommandReference subscribeReference = (SubscribeCommandReference) getReference(); root = (IMAPRootFolder) subscribeReference.getSourceFolder(); store = root.getServer(); store.unsubscribeFolder(subscribeReference.getMailbox()); }
// in java/org/columba/mail/gui/config/subscribe/UnsubscribeFolderCommand.java
public void updateGUI() throws Exception { SubscribeDialog dialog = ((SubscribeCommandReference) getReference()) .getDialog(); dialog.unsubscribeDone(); }
// in java/org/columba/mail/gui/config/subscribe/SynchronizeFolderListCommand.java
public void execute(IWorkerStatusController worker) throws Exception { root = (IMAPRootFolder) ((SubscribeCommandReference) getReference()) .getSourceFolder(); store = root.getServer(); node = createTreeStructure(); }
// in java/org/columba/mail/gui/config/subscribe/SynchronizeFolderListCommand.java
private List fetchUnsubscribedFolders(String reference) throws Exception { NamespaceCollection namespaces; // Does the server support the namespace extension? if (store.isSupported("NAMESPACE")) { namespaces = store.fetchNamespaces(); } else { // create default namespace namespaces = new NamespaceCollection(); namespaces.addPersonalNamespace(new Namespace("", "/")); } ArrayList result = new ArrayList(); Iterator it; // Process personal namespaces if (namespaces.getPersonalNamespaceSize() > 0) { it = namespaces.getPersonalIterator(); while (it.hasNext()) { Namespace pN = (Namespace) it.next(); ListInfo[] list = store.list("", pN.getPrefix() + '%'); result.addAll(Arrays.asList(list)); } } // Process other users namespaces if (namespaces.getOtherUserNamespaceSize() > 0) { it = namespaces.getOtherUserIterator(); while (it.hasNext()) { Namespace pN = (Namespace) it.next(); ListInfo[] list = store.list("", pN.getPrefix() + '%'); result.addAll(Arrays.asList(list)); } } // Process shared namespaces if (namespaces.getSharedNamespaceSize() > 0) { it = namespaces.getSharedIterator(); while (it.hasNext()) { Namespace pN = (Namespace) it.next(); ListInfo[] list = store.list("", pN.getPrefix() + '%'); result.addAll(Arrays.asList(list)); } } for(int i=0; i<result.size(); i++ ) { ListInfo info = (ListInfo) result.get(i); // Handle special case in which INBOX has a NIL delimiter // -> there might exist a pseudo hierarchy under INBOX+delimiter if (info.getName().equalsIgnoreCase("INBOX") && info.getDelimiter() == null) { result.addAll(Arrays.asList(store.list("", "INBOX" + store.getDelimiter() + '%'))); break; } // If this folder has children add them // TODO: In the future we should try to fetch additional children on demand // when the tree of the dialog is opened if (store.isSupported("CHILDREN")) { if( info.getParameter(ListInfo.HASCHILDREN)) { result.addAll(Arrays.asList(store.list("", info.getName() + store.getDelimiter() + '%'))); } } else { ListInfo[] childlist = store.list("", info.getName() + store.getDelimiter() + '%'); if (childlist.length > 0) result.addAll(Arrays.asList(childlist)); } } return result; }
// in java/org/columba/mail/gui/config/subscribe/SynchronizeFolderListCommand.java
private TreeNode createTreeStructure() throws Exception { ListInfo[] lsub = store.fetchSubscribedFolders(); // Create list of unsubscribed folders List subscribedFolders = new ArrayList(Arrays.asList(lsub)); // INBOX is always subscribed subscribedFolders.add(new ListInfo("INBOX", null, 0)); List unsubscribedFolders = fetchUnsubscribedFolders(""); ListTools.substract(unsubscribedFolders, subscribedFolders); // Now we have the subscribed folders in subscribedFolders // and the unsubscribed folders in unsubscribedFolders // Next step: Create a treestructure CheckableItemImpl rootNode = new CheckableItemImpl(root.getName()); Iterator it = unsubscribedFolders.iterator(); while (it.hasNext()) { ListInfoTreeNode node = insertTreeNode((ListInfo) it.next(), rootNode); node.setSelected(false); } it = subscribedFolders.iterator(); while (it.hasNext()) { ListInfoTreeNode node = insertTreeNode((ListInfo) it.next(), rootNode); node.setSelected(true); } return rootNode; }
// in java/org/columba/mail/gui/config/subscribe/SynchronizeFolderListCommand.java
public void updateGUI() throws Exception { SubscribeDialog dialog = ((SubscribeCommandReference) getReference()) .getDialog(); dialog.syncFolderListDone(new DefaultTreeModel(node)); }
// in java/org/columba/mail/gui/config/subscribe/SubscribeFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { SubscribeCommandReference subscribeReference = (SubscribeCommandReference) getReference(); root = (IMAPRootFolder) subscribeReference.getSourceFolder(); store = root.getServer(); store.subscribeFolder(subscribeReference.getMailbox()); }
// in java/org/columba/mail/gui/config/subscribe/SubscribeFolderCommand.java
public void updateGUI() throws Exception { SubscribeDialog dialog = ((SubscribeCommandReference) getReference()) .getDialog(); dialog.subscribeDone(); }
// in java/org/columba/mail/gui/contact/list/ContactListModel.java
public void setPatternString(String s) throws Exception { patternString = s; // manipulateModel(TableModelPlugin.STRUCTURE_CHANGE); }
// in java/org/columba/mail/gui/tagging/TagFolderFactory.java
public static VirtualFolder createTagFolder(ITag tag, IMailFolder folder) throws Exception { // get search folder VirtualFolder tagFolder = new VirtualFolder("Tag Folder", folder); // TODO: @author hubms check what is neccessary // remove old filters // searchFolder.getFilter().getFilterRule().removeAll(); // add filter criteria // searchFolder.getFilter().getFilterRule().add(c); // search in subfolders recursively tagFolder.getConfiguration().setString("property", "include_subfolders", "true"); String uid = folder.getId(); // set source folder UID tagFolder.getConfiguration().setString("property", "source_uid", uid); return tagFolder; }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
protected void initComponents() throws Exception { // CellConstraints cc = new CellConstraints(); // we generate most buttons using the actions already instanciated paragraphComboBox = new JComboBox(ParagraphMenu.STYLE_TAGS); paragraphComboBox.setRenderer(new ParagraphTagRenderer()); paragraphComboBox.setActionCommand("PARA"); paragraphComboBox.addActionListener(this); paragraphComboBox.setFocusable(false); LabelWithMnemonic sizeLabel = new LabelWithMnemonic(MailResourceLoader .getString("dialog", "composer", "size")); sizeComboBox = new JComboBox(FontSizeMenu.SIZES); sizeComboBox.setActionCommand("SIZE"); sizeComboBox.addActionListener(this); sizeComboBox.setSelectedIndex(2); sizeComboBox.setFocusable(false); // set initial enabled state of combo boxes // XmlElement optionsElement = MailConfig.getInstance().get( // "composer_options").getElement("/options"); // XmlElement htmlElement = optionsElement.getElement("html"); // String s = htmlElement.getAttribute("enable", "false"); // boolean enableHtml = Boolean.valueOf(s).booleanValue(); // paragraphComboBox.setEnabled(enableHtml); // TODO (@author javaprog):sizeComboBox can be enabled as // paragraphComboBox when implemented sizeComboBox.setEnabled(false); ToggleToolbarButton boldFormatButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("BoldFormatAction", getFrameController())); ToggleToolbarButton italicFormatButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("ItalicFormatAction", getFrameController())); ToggleToolbarButton underlineFormatButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("UnderlineFormatAction", getFrameController())); ToggleToolbarButton strikeoutFormatButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("StrikeoutFormatAction", getFrameController())); ToggleToolbarButton leftJustifyButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("LeftJustifyAction", getFrameController())); ToggleToolbarButton centerJustifyButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("CenterJustifyAction", getFrameController())); ToggleToolbarButton rightJustifyButton = new ToggleToolbarButton( (AbstractSelectableAction) getAction("RightJustifyAction", getFrameController())); // builder.add(paraLabel, cc.xy(1, 7)); add(paragraphComboBox); addSeparator(); add(sizeLabel); add(sizeComboBox); addSeparator(); add(boldFormatButton); add(italicFormatButton); add(underlineFormatButton); add(strikeoutFormatButton); addSeparator(); add(leftJustifyButton); add(centerJustifyButton); add(rightJustifyButton); add(Box.createHorizontalGlue()); // FormLayout layout = new FormLayout( // "default, 3dlu, default, 3dlu, default, 3dlu, " // + "default, 3dlu, default, 3dlu, default, 3dlu, " // + "default, 6dlu, default, 3dlu, default, 3dlu, " // + "default, 3dlu", "fill:default"); // PanelBuilder b = new PanelBuilder(this, layout); // // CellConstraints c = new CellConstraints(); // // b.add(paragraphComboBox, cc.xy(1, 1)); // b.add(sizeLabel, cc.xy(3, 1)); // b.add(sizeComboBox, cc.xy(5, 1)); // b.add(boldFormatButton, cc.xy(7, 1)); // b.add(italicFormatButton, cc.xy(9, 1)); // b.add(underlineFormatButton, cc.xy(11, 1)); // b.add(strikeoutFormatButton, cc.xy(13, 1)); // b.add(leftJustifyButton, cc.xy(15, 1)); // b.add(centerJustifyButton, cc.xy(17, 1)); // b.add(rightJustifyButton, cc.xy(19, 1)); // builder.add(panel, cc.xy(1, 7)); }
// in java/org/columba/mail/gui/composer/command/ReplyToMailingListCommand.java
protected void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], headerfields); BasicHeader rfcHeader = new BasicHeader(header); // set subject model.setSubject(MessageBuilderHelper.createReplySubject( rfcHeader.getSubject())); // Use reply-to field if given, else use from Address to = rfcHeader.getBeenThere(); if (to == null) { Address[] replyTo = rfcHeader.getReplyTo(); if (replyTo.length > 0) { to = replyTo[0]; } } if (to == null) { to = rfcHeader.getFrom(); } MessageBuilderHelper.addAddressesToAddressbook(new Address[] { to }); model.setTo(new Address[] { to }); // create In-Reply-To:, References: headerfields MessageBuilderHelper.createMailingListHeaderItems(header, model); // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper.getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/RedirectCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // get mimeparts MimeTree mimePartTree = folder.getMimePartTree(uids[0]); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be show? (html/plain) MimePart bodyPart = null; Integer[] bodyPartAddress = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart != null) { // setup charset and html initMimeHeader(bodyPart); bodyPartAddress = bodyPart.getAddress(); String quotedBodyText = createQuotedBody(bodyPart.getHeader(), folder, uids, bodyPartAddress); model.setBodyText(quotedBodyText); } // add all attachments MimeTree mt = folder.getMimePartTree(uids[0]); Iterator it = mt.getAllLeafs().iterator(); while (it.hasNext()) { MimePart mp = (MimePart) it.next(); Integer[] address = mp.getAddress(); // skip if bodypart (already added as quoted text) if (Arrays.equals(address, bodyPartAddress)) continue; // add attachment InputStream stream = folder.getMimePartBodyStream(uids[0], address); model.addMimePart(new InputStreamMimePart(mp.getHeader(), stream)); } // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/RedirectCommand.java
private void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], new String[] { "Subject", "To", "From" }); BasicHeader rfcHeader = new BasicHeader(header); // set subject ; mod:20040629 SWITT model.setSubject(rfcHeader.getSubject()); // set From for redirecting; new: 20040629 SWITT model.setHeaderField("From", rfcHeader.getFrom().toString() + " (by way of " + rfcHeader.get("To") + ")"); }
// in java/org/columba/mail/gui/composer/command/RedirectCommand.java
protected String createQuotedBody(MimeHeader header, IMailbox folder, Object[] uids, Integer[] address) throws IOException, Exception { InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); // Do decoding stuff switch( header.getContentTransferEncoding() ) { case MimeHeader.QUOTED_PRINTABLE : { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64 : { bodyStream = new Base64DecoderInputStream(bodyStream); } } String charset = header.getContentParameter("charset"); if( charset != null ) { try { bodyStream = new CharsetDecoderInputStream(bodyStream, Charset.forName(charset)); } catch( UnsupportedCharsetException e ) { // Stick with the default charset } } String quotedBody; // Quote original message - different methods for text and html if (model.isHtml()) { // Html: Insertion of text before and after original message // build message orginal ; mod:2004629 SWITT StringBuffer buf = new StringBuffer(); buf.append("<html><body>"); buf.append(HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream( bodyStream).toString()))); buf.append("</body></html>"); quotedBody = buf.toString(); } else { // Text: take org. message; mod:20040629 SWITT quotedBody = StreamUtils.readCharacterStream(bodyStream).toString(); } bodyStream.close(); return quotedBody; }
// in java/org/columba/mail/gui/composer/command/SaveMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { ComposerCommandReference r = (ComposerCommandReference) getReference(); ComposerController composerController = r.getComposerController(); SendableMessage message = (SendableMessage) r.getMessage(); if (message == null) { message = new MessageComposer(((ComposerModel) composerController .getModel())).compose(worker, r.isAppendSignature()); } folder = (IMailbox) r.getSourceFolder(); worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "save_message")); InputStream sourceStream = new ProgressObservedInputStream(message .getSourceStream(), worker); folder.addMessage(sourceStream, message.getHeader().getAttributes(), message.getHeader().getFlags()); sourceStream.close(); // Add all recipients to the collected addresses List recipients = message.getRecipients(); if (recipients != null && recipients.size() > 0) { Address[] addresses = new Address[recipients.size()]; for (int i = 0; i < recipients.size(); i++) { try { addresses[i] = AddressParser .parseAddress((String) recipients.get(i)); } catch (ParserException e) { addresses[i] = addresses[i - 1]; } } MessageBuilderHelper.addAddressesToAddressbook(addresses); } }
// in java/org/columba/mail/gui/composer/command/OpenMessageWithComposerCommand.java
public void updateGUI() throws Exception { // open composer frame controller = new ComposerController(); new DefaultContainer(controller); // apply model controller.setComposerModel(model); // model->view update controller.updateComponents(true); }
// in java/org/columba/mail/gui/composer/command/OpenMessageWithComposerCommand.java
public void execute(IWorkerStatusController worker) throws Exception { model = new ComposerModel(); // get selected folder folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get selected messages Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // we only need the first message uid = uids[0]; //TODO (@author fdietz): keep track of progress here InputStream messageSourceStream = folder.getMessageSourceStream(uid); Source tempSource = TempSourceFactory.createTempSource( messageSourceStream, -1); messageSourceStream.close(); Message message = MessageParser.parse(tempSource); initHeader(message); // get message flags Flags flags = folder.getFlags(uid); model.getMessage().getHeader().setFlags(flags); // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); boolean preferHtml = Boolean.valueOf(html.getAttribute("prefer")) .booleanValue(); initBody(message, preferHtml); // store reference to source message model.setSourceReference(new MailFolderCommandReference(folder, new Object[] {uid})); }
// in java/org/columba/mail/gui/composer/command/OpenMessageWithComposerCommand.java
private void initBody(Message message, boolean preferHtml) throws Exception { MimeTree mimeTree = message.getMimePartTree(); // Which Bodypart shall be shown? (html/plain) LocalMimePart bodyPart = null; if (preferHtml) { bodyPart = (LocalMimePart) mimeTree.getFirstTextPart("html"); } else { bodyPart = (LocalMimePart) mimeTree.getFirstTextPart("plain"); } if (bodyPart != null) { MimeHeader header = bodyPart.getHeader(); if (header.getMimeType().getSubtype().equals("html")) { // html model.setHtml(true); } else { model.setHtml(false); } InputStream bodyStream = folder.getMimePartBodyStream(uid, bodyPart.getAddress()); // Do decoding stuff switch( header.getContentTransferEncoding() ) { case MimeHeader.QUOTED_PRINTABLE : { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64 : { bodyStream = new Base64DecoderInputStream(bodyStream); } } String charset = header.getContentParameter("charset"); if (charset != null) { try { bodyStream = new CharsetDecoderInputStream(bodyStream, Charset.forName(charset)); model.setCharset(Charset.forName(charset)); } catch( UnsupportedCharsetException e ) { // Stick with the default charset } } model.setBodyText(StreamUtils.readCharacterStream( bodyStream) .toString()); } initAttachments(mimeTree, bodyPart); }
// in java/org/columba/mail/gui/composer/command/ReplyToAllCommand.java
protected void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], headerfields); // From which account is this mail? Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper.getAccountItem(accountUid); Address accountAddress = null; if ( accountItem != null) accountAddress = MailConfig.getInstance().getAccountList().uidGet(accountUid.intValue()).getIdentity().getAddress(); BasicHeader rfcHeader = new BasicHeader(header); // set subject model.setSubject(MessageBuilderHelper.createReplySubject( rfcHeader.getSubject())); LinkedList toList = new LinkedList(); toList.addAll(Arrays.asList(rfcHeader.getReplyTo())); toList.add(rfcHeader.getFrom()); toList.addAll(Arrays.asList(rfcHeader.getTo())); // bug #997560 (fdietz): CC: should be in Cc:, instead of To: //toList.addAll(Arrays.asList(rfcHeader.getCc())); // remove duplicates Collections.sort(toList); Iterator it = toList.iterator(); Address last = (Address) it.next(); while (it.hasNext()) { Address act = (Address) it.next(); // Remove duplicates or the mail address from the receiver account if (last.equals(act) || (accountAddress != null && accountAddress.equals(act)) ) { it.remove(); } else { last = act; } } Address[] to = (Address[]) toList.toArray(new Address[] { }); // Add addresses to the addressbook MessageBuilderHelper.addAddressesToAddressbook(to); model.setTo(to); // bug #997560 (fdietz): CC: should be in Cc:, instead of To: LinkedList ccList = new LinkedList(); ccList.addAll(Arrays.asList(rfcHeader.getCc())); it = ccList.iterator(); while (it.hasNext()) { Address act = (Address) it.next(); // Remove the mail address from the receiver account if (accountAddress != null && accountAddress.equals(act)) { it.remove(); } } Address[] cc = (Address[]) ccList.toArray(new Address[] { }); model.setCc(cc); // create In-Reply-To:, References: headerfields MessageBuilderHelper.createMailingListHeaderItems(header, model); // select the account this mail was received from model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
public void updateGUI() throws Exception { // open composer frame controller = new ComposerController(); new DefaultContainer(controller); // apply model controller.setComposerModel(model); // model->view update controller.updateComponents(true); // Set the focus to the editor pane and set cursor to the top controller.getCurrentEditor().getViewUIComponent().requestFocus(); controller.getCurrentEditor().getViewUIComponent().moveCaretPosition(0); controller.getCurrentEditor().getViewUIComponent().select(0,0); }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // get mimeparts MimeTree mimePartTree = folder.getMimePartTree(uids[0]); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart != null) { // setup charset and html initMimeHeader(bodyPart); Integer[] address = bodyPart.getAddress(); String quotedBodyText = createQuotedBody(bodyPart.getHeader(), folder, uids, address); // debug output LOG.fine("Quoted body text:\n" + quotedBodyText); model.setBodyText(quotedBodyText); } }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
protected void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], headerfields); BasicHeader rfcHeader = new BasicHeader(header); // set subject model.setSubject(MessageBuilderHelper.createReplySubject(rfcHeader .getSubject())); // Use reply-to field if given, else use from Address[] to = rfcHeader.getReplyTo(); if (to.length == 0) { to = new Address[] { rfcHeader.getFrom()}; } // Add addresses to the addressbook MessageBuilderHelper.addAddressesToAddressbook(to); model.setTo(to); // create In-Reply-To:, References: headerfields MessageBuilderHelper.createMailingListHeaderItems(header, model); // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
protected String createQuotedBody(MimeHeader header, IMailbox folder, Object[] uids, Integer[] address) throws IOException, Exception { MimeTree mimePartTree = folder.getMimePartTree(uids[0]); MimePart bodyPart = mimePartTree.getFromAddress(address); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); String bodyText = MessageBuilderHelper.createBodyText(bodyPart, bodyStream); boolean wasHtml; if (header.getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String quotedBody; // Quote original message - different methods for text and html if (model.isHtml()) { // Html: Insertion of text before and after original message // get necessary headerfields BasicHeader rfcHeader = new BasicHeader(folder.getHeaderFields( uids[0], headerfields)); String subject = rfcHeader.getSubject(); String date = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM).format(rfcHeader.getDate()); String from = AddressListRenderer.renderToHTMLWithLinks( new Address[] { rfcHeader.getFrom()}).toString(); String to = AddressListRenderer.renderToHTMLWithLinks( rfcHeader.getTo()).toString(); // build "quoted" message StringBuffer buf = new StringBuffer(); buf.append("<html><body><p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_start")); buf.append("<br>" + MailResourceLoader.getString("header", "header", "subject") + ": " + subject); buf.append("<br>" + MailResourceLoader.getString("header", "header", "date") + ": " + date); buf.append("<br>" + MailResourceLoader.getString("header", "header", "from") + ": " + from); buf.append("<br>" + MailResourceLoader.getString("header", "header", "to") + ": " + to); buf.append("</p>"); String htmlbody; if (wasHtml) { htmlbody = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(bodyText)); } else { htmlbody = HtmlParser.substituteSpecialCharacters(bodyText); } buf.append(htmlbody); buf.append("<p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_end")); buf.append("</p></body></html>"); quotedBody = buf.toString(); } else { if (wasHtml) { bodyText = HtmlParser.htmlToText(bodyText); } // Text: Addition of > before each line quotedBody = StreamUtils.readReader(new QuoteFilterReader( new StringReader(bodyText))).toString(); } return quotedBody; }
// in java/org/columba/mail/gui/composer/command/ReplyWithTemplateCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // get mimeparts MimeTree mimePartTree = folder.getMimePartTree(uids[0]); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart != null) { // setup charset and html initMimeHeader(bodyPart); Integer[] address = bodyPart.getAddress(); String quotedBodyText = createQuotedBody(bodyPart.getHeader(), folder, uids, address); // get answer from template String templateBody = getTemplateBody(); String bodytext; if (model.isHtml()) { bodytext = "<html><body>" + HtmlParser.getHtmlBody(quotedBodyText) + "<br>" + templateBody + "</body></html>"; } else { bodytext = quotedBodyText + "\n" + templateBody; } model.setBodyText(bodytext); } else { String bodytext = getTemplateBody(); if (model.isHtml()) bodytext = "<html><body>" + bodytext + "</body></html>"; model.setBodyText(bodytext); } }
// in java/org/columba/mail/gui/composer/command/ReplyWithTemplateCommand.java
private String getTemplateBody() throws Exception, CommandCancelledException, IOException { // template folder has uid=107 IMailbox templateFolder = (IMailbox) FolderTreeModel .getInstance().getFolder("107"); // retrieve headerlist of tempate folder IHeaderList list = templateFolder.getHeaderList(); // choose template ChooseTemplateDialog d = new ChooseTemplateDialog(mediator.getView() .getFrame(), list); Object uid = null; if (d.isResult()) { // user pressed OK uid = d.getUid(); } else { throw new CommandCancelledException(); } // get bodytext of template message MimeTree tree = templateFolder.getMimePartTree(uid); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = tree.getFirstTextPart("html"); } else { bodyPart = tree.getFirstTextPart("plain"); } InputStream bodyStream = templateFolder.getMimePartBodyStream(uid, bodyPart .getAddress()); boolean wasHtml; if (bodyPart.getHeader().getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String body; if (model.isHtml()) { if (wasHtml) { body = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream(bodyStream) .toString())); } else { body = HtmlParser.substituteSpecialCharacters( StreamUtils.readCharacterStream(bodyStream).toString()); } } else { if (wasHtml) { body = HtmlParser.htmlToText(StreamUtils.readCharacterStream(bodyStream). toString()); } else { body = StreamUtils.readCharacterStream(bodyStream).toString(); } } bodyStream.close(); return body; }
// in java/org/columba/mail/gui/composer/command/ForwardCommand.java
public void updateGUI() throws Exception { // open composer frame controller = new ComposerController(); new DefaultContainer(controller); // apply model controller.setComposerModel(model); // model->view update controller.updateComponents(true); }
// in java/org/columba/mail/gui/composer/command/ForwardCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // get headerfields Header header = folder.getHeaderFields(uids[0], new String[] { "Subject" }); // create composer model model = new ComposerModel(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // set subject model.setSubject(MessageBuilderHelper .createForwardSubject(new BasicHeader(header).getSubject())); // initialize MimeHeader as RFC822-compliant-message MimeHeader mimeHeader = new MimeHeader(); mimeHeader.setMimeType(new MimeType("message", "rfc822")); mimeHeader.setContentDescription((String)folder.getAttribute(uids[0],"columba.subject")); // add mimepart to model InputStream messageSourceStream = folder .getMessageSourceStream(uids[0]); model.addMimePart(new InputStreamMimePart(mimeHeader, messageSourceStream)); // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/ForwardInlineCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // get mimeparts MimeTree mimePartTree = folder.getMimePartTree(uids[0]); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; Integer[] bodyPartAddress = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart != null) { // setup charset and html initMimeHeader(bodyPart); bodyPartAddress = bodyPart.getAddress(); String quotedBodyText = createQuotedBody(bodyPart.getHeader(), folder, uids, bodyPartAddress); model.setBodyText(quotedBodyText); } // add all attachments MimeTree mt = folder.getMimePartTree(uids[0]); Iterator it = mt.getAllLeafs().iterator(); while (it.hasNext()) { MimePart mp = (MimePart) it.next(); Integer[] address = mp.getAddress(); // skip if bodypart (already added as quoted text) if (Arrays.equals(address, bodyPartAddress)) continue; // add attachment InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); int encoding = mp.getHeader().getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; case MimeHeader.BASE64: bodyStream = new Base64DecoderInputStream(bodyStream); break; default: } model.addMimePart(new InputStreamMimePart(mp.getHeader(), bodyStream)); } // select the account this mail was received from Integer accountUid = (Integer) folder.getAttribute(uids[0], "columba.accountuid"); AccountItem accountItem = MessageBuilderHelper .getAccountItem(accountUid); model.setAccountItem(accountItem); }
// in java/org/columba/mail/gui/composer/command/ForwardInlineCommand.java
private void initHeader(IMailbox folder, Object[] uids) throws Exception { // get headerfields Header header = folder.getHeaderFields(uids[0], new String[] { "Subject" }); BasicHeader rfcHeader = new BasicHeader(header); // set subject model.setSubject(MessageBuilderHelper.createForwardSubject(rfcHeader .getSubject())); }
// in java/org/columba/mail/gui/composer/command/ForwardInlineCommand.java
protected String createQuotedBody(MimeHeader header, IMailbox folder, Object[] uids, Integer[] address) throws IOException, Exception { MimeTree mimePartTree = folder.getMimePartTree(uids[0]); MimePart bodyPart = mimePartTree.getFromAddress(address); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); String bodyText = MessageBuilderHelper.createBodyText(bodyPart, bodyStream); boolean wasHtml; if (header.getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String quotedBody; // Quote original message - different methods for text and html if (model.isHtml()) { // Html: Insertion of text before and after original message // get necessary headerfields BasicHeader rfcHeader = new BasicHeader(folder.getHeaderFields( uids[0], headerfields)); String subject = rfcHeader.getSubject(); String date = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM).format(rfcHeader.getDate()); String from = AddressListRenderer.renderToHTMLWithLinks( new Address[] { rfcHeader.getFrom() }).toString(); String to = AddressListRenderer.renderToHTMLWithLinks( rfcHeader.getTo()).toString(); // build "quoted" message StringBuffer buf = new StringBuffer(); buf.append("<html><body><p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_start")); buf.append("<br>" + MailResourceLoader.getString("header", "header", "subject") + ": " + subject); buf.append("<br>" + MailResourceLoader.getString("header", "header", "date") + ": " + date); buf.append("<br>" + MailResourceLoader.getString("header", "header", "from") + ": " + from); buf.append("<br>" + MailResourceLoader.getString("header", "header", "to") + ": " + to); buf.append("</p>"); String htmlbody; if (wasHtml) { htmlbody = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(bodyText)); } else { htmlbody = HtmlParser.substituteSpecialCharacters(bodyText); } buf.append(htmlbody); buf.append("<p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_end")); buf.append("</p></body></html>"); quotedBody = buf.toString(); } else { BasicHeader rfcHeader = new BasicHeader(folder.getHeaderFields( uids[0], headerfields)); String date = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM).format(rfcHeader.getDate()); String from = rfcHeader.getFrom().toString(); if (wasHtml) { bodyText = HtmlParser.htmlToText(bodyText); } // Text: Addition of > before each line StringBuffer buf = StreamUtils.readReader(new QuoteFilterReader( new StringReader(bodyText))); buf.insert(0, ">\n"); buf.insert(0, "> Date: " + date + "\n"); buf.insert(0, "> From: " + from + "\n"); quotedBody = buf.toString(); } return quotedBody; }
// in java/org/columba/mail/gui/composer/command/ReplyAsAttachmentCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // create composer model model = new ComposerModel(); // get selected folder IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference()) .getSourceFolder(); // get first selected message Object[] uids = ((MailFolderCommandReference) getReference()).getUids(); // ->set source reference in composermodel // when replying this is the original sender's message // you selected and replied to MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids); model.setSourceReference(ref); // setup to, references and account initHeader(folder, uids); // initialize MimeHeader as RFC822-compliant-message MimeHeader mimeHeader = new MimeHeader(); mimeHeader.setMimeType(new MimeType("message", "rfc822")); mimeHeader.setContentDescription((String)folder.getAttribute(uids[0],"columba.subject")); // add mimepart to model InputStream messageSourceStream = folder .getMessageSourceStream(uids[0]); model.addMimePart(new InputStreamMimePart(mimeHeader, messageSourceStream)); messageSourceStream.close(); }
// in java/org/columba/mail/gui/util/WelcomeMessage.java
private static String createMessage(String to, String accountUid) throws Exception { StringBuffer buf = new StringBuffer(); buf.append("Subject: Welcome to Columba\r\n"); buf.append("From: columba-users@lists.sourceforge.net\r\n"); buf.append("To: "+to+"\r\n"); buf.append("\r\n"); InputStream is = DiskIO .getResourceStream("org/columba/mail/welcome_message_body.txt"); String body = StreamUtils.readCharacterStream(is).toString(); buf.append(body); return buf.toString(); }
// in java/org/columba/mail/gui/util/WelcomeMessage.java
public static void addWelcomeMessage(IMailFolder folder, String to, String accountUid) throws Exception { if ( folder == null) throw new IllegalArgumentException("folder == null"); if ( to == null || to.length() == 0) throw new IllegalArgumentException("to == nllu"); if ( accountUid == null ) throw new IllegalArgumentException("account uid == null"); // create message String message = createMessage(to, accountUid); // convert to inputstream InputStream is = new ByteArrayInputStream(message.getBytes("UTF-8")); // add to folder CommandProcessor.getInstance().addOp( new AddMessageCommand(new MailFolderCommandReference( folder), is)); }
// in java/org/columba/mail/gui/table/TableController.java
public void showHeaderList(IMailbox folder, IHeaderList headerList) throws Exception { // save previously selected folder options if (previouslySelectedFolder != null) { ((MailFrameMediator) getFrameController()).getFolderOptionsController().save(previouslySelectedFolder); } // load options of newly selected folder ((MailFrameMediator) getFrameController()).getFolderOptionsController().load(folder, FolderOptionsController.STATE_BEFORE); getHeaderTableModel().set(headerList); // load options of newly selected folder ((MailFrameMediator) getFrameController()).getFolderOptionsController().load(folder, FolderOptionsController.STATE_AFTER); // remember previously selected folder previouslySelectedFolder = folder; }
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
public void updateGUI() throws Exception { ((MailFrameMediator) mediator).removeTreeSelectionListener(this); // Update only if the selection did not change if (updateGui) { ((TableViewOwner) mediator).getTableController().showHeaderList( folder, headerList); } }
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // Register as SelectionListener to track the selection // of the tree if (!updateGui) return; IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); // fetch the headerlist try { headerList = (folder).getHeaderList(); } catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; } updateGui &= !worker.cancelled(); }
// in java/org/columba/mail/pop3/POP3Server.java
public void save() throws Exception { headerList.persist(); }
// in java/org/columba/mail/pop3/POP3Server.java
public void logout() throws Exception { getStore().logout(); }
// in java/org/columba/mail/pop3/POP3Server.java
public List synchronize() throws Exception { if (getHeaderList().count() == 0) { LOG.severe(accountItem.getName() + " - POP3 Headerlist is empty!"); } // Get the uids from the headercache LinkedList headerUids = new LinkedList(getHeaderList().keySet()); // Get the list of the uids on the server // Important: Use a clone of the List since // we must not change it! List newUids = store.getUIDList(); // substract the uids that we already downloaded -> // newUids contains all uids to fetch from the server ListTools.substract(newUids, headerUids); // substract the uids on the server from the downloaded uids -> // headerUids are the uids that have been removed from the server ListTools.substract(headerUids, store.getUIDList()); Iterator it = headerUids.iterator(); // update the cache while (it.hasNext()) { getHeaderList().remove(it.next()); cacheChanged = true; } // return the uids that are new return newUids; }
// in java/org/columba/mail/pop3/POP3Server.java
public int getMessageCount() throws Exception { return getStore().getMessageCount(); }
// in java/org/columba/mail/pop3/POP3Server.java
public int getMessageSize(Object uid) throws Exception { return store.getSize(store.getIndex(uid)); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { POP3CommandReference r = (POP3CommandReference) getReference(); server = r.getServer(); // register interest on status bar information ((StatusObservableImpl) server.getObservable()).setWorker(worker); log(MailResourceLoader.getString("statusbar", "message", "authenticating")); try { // login and get # of messages on server totalMessageCount = server.getMessageCount(); if (worker.cancelled()) throw new CommandCancelledException(); // synchronize local UID list with server UID list List newMessagesUidList = synchronize(); if (worker.cancelled()) throw new CommandCancelledException(); if (Logging.DEBUG) { LOG.fine(newMessagesUidList.toString()); } if (worker.cancelled()) throw new CommandCancelledException(); // only download new messages downloadNewMessages(newMessagesUidList, worker); // Delete old message from server if the feature is enabled server.cleanUpServer(); // logout cleanly logout(); // display downloaded message count in statusbar if (newMessageCount == 0) { log(MailResourceLoader.getString("statusbar", "message", "no_new_messages")); } else { log(MessageFormat.format(MailResourceLoader.getString( "statusbar", "message", "fetched_count"), new Object[] { new Integer(newMessageCount) })); // get inbox-folder from pop3-server preferences IMailbox inboxFolder = server.getFolder(); // notify listeners IMailFolderCommandReference ref = new MailFolderCommandReference(inboxFolder, newMessagesUidList.toArray()); MailCheckingManager.getInstance().fireNewMessageArrived(ref); } } catch (CommandCancelledException e) { server.logout(); // clear statusbar message server.getObservable().clearMessage(); } catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; } /* * catch (IOException e) { String name = e.getClass().getName(); * JOptionPane.showMessageDialog(null, e.getLocalizedMessage(), * name.substring(name.lastIndexOf(".")), JOptionPane.ERROR_MESSAGE); // * clear statusbar message server.getObservable().clearMessage(); } */ finally { /* * // always enable the menuitem again * r[0].getPOP3ServerController().enableActions(true); */ } }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void downloadMessage(Object serverUID, IWorkerStatusController worker) throws Exception { // server message numbers start with 1 // whereas List numbers start with 0 // -> always increase fetch number IWorkerStatusChangeListener listener = new IWorkerStatusChangeListener() { public void workerStatusChanged(WorkerStatusChangedEvent e) { if (e.getSource().cancelled()) { try { server.dropConnection(); } catch (IOException e1) { } } } }; // important for cancel worker.addWorkerStatusChangeListener(listener); // download message ColumbaMessage message; try { message = server.getMessage(serverUID, worker); } catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); } // not needed anymore worker.removeWorkerStatusChangeListener(listener); if (message == null) { LOG.severe("Message with UID=" + serverUID + " isn't on the server."); return; } message.getHeader().getFlags().setSeen(false); // get inbox-folder from pop3-server preferences IMailbox inboxFolder = server.getFolder(); // start command which adds message to folder // and calls apply-filter on this specific message IMailFolderCommandReference r = new MailFolderCommandReference( inboxFolder, message); CommandProcessor.getInstance().addOp(new AddPOP3MessageCommand(r)); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
protected int calculateTotalSize(List uidList) throws Exception { int totalSize = 0; Iterator it = uidList.iterator(); while (it.hasNext()) { totalSize += server.getMessageSize(it.next()); } return totalSize; }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void downloadNewMessages(List newMessagesUIDList, IWorkerStatusController worker) throws Exception { LOG.fine("need to fetch " + newMessagesUIDList.size() + " messages."); int totalSize = calculateTotalSize(newMessagesUIDList); worker.setProgressBarMaximum(totalSize); worker.setProgressBarValue(0); newMessageCount = newMessagesUIDList.size(); for (int i = 0; i < newMessageCount; i++) { if (worker.cancelled()) throw new CommandCancelledException(); // which UID should be downloaded next Object serverUID = newMessagesUIDList.get(i); LOG.fine("fetch message with UID=" + serverUID); log(MessageFormat.format(MailResourceLoader.getString("statusbar", "message", "fetch_messages"), new Object[] { new Integer(i + 1), new Integer(newMessageCount) })); int size = server.getMessageSize(serverUID); if (server.getAccountItem().getPopItem().getBoolean("enable_limit")) { // check if message isn't too big to download int maxSize = server.getAccountItem().getPopItem().getInteger( "limit"); // if message-size is bigger skip download of this message if (size > maxSize) { LOG.fine("skipping download of message, too big"); continue; } } // now download the message downloadMessage(serverUID, worker); if (!server.getAccountItem().getPopItem().getBoolean( "leave_messages_on_server")) { // delete message from server server.deleteMessage(serverUID); LOG.fine("deleted message with uid=" + serverUID); } } }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public List synchronize() throws Exception { log(MailResourceLoader.getString("statusbar", "message", "fetch_uid_list")); LOG.fine("synchronize local UID-list with remote UID-list"); // synchronize local UID-list with server List newMessagesUIDList = server.synchronize(); return newMessagesUIDList; }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void logout() throws Exception { server.logout(); LOG.fine("logout"); log(MailResourceLoader.getString("statusbar", "message", "logout")); if (newMessageCount == 0) { log(MailResourceLoader.getString("statusbar", "message", "no_new_messages")); } }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
public void updateGUI() throws Exception { if (action != null) { action.setEnabled(true); } }
// in java/org/columba/mail/pop3/command/AddPOP3MessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); inboxFolder = (IMailbox) r.getSourceFolder(); IColumbaMessage message = (IColumbaMessage) r.getMessage(); // add message to folder SourceInputStream messageStream = new SourceInputStream(message .getSource()); Object uid = inboxFolder.addMessage(messageStream, message.getHeader().getAttributes(), message.getHeader().getFlags()); messageStream.close(); // mark message as recent r.setSourceFolder(inboxFolder); r.setUids(new Object[] { uid }); r.setMarkVariant(MarkMessageCommand.MARK_AS_RECENT); new MarkMessageCommand(r).execute(worker); // apply spam filter boolean messageWasMoved = applySpamFilter(uid, worker); if (messageWasMoved == false) { // apply filter on message applyFilters(uid); } }
// in java/org/columba/mail/pop3/command/AddPOP3MessageCommand.java
private boolean applySpamFilter(Object uid, IWorkerStatusController worker) throws Exception { // message belongs to which account? AccountItem item = CommandHelper.retrieveAccountItem(inboxFolder, uid); if ( item == null ) return false; // if spam filter is not enabled -> return if (!item.getSpamItem().isEnabled()) { return false; } // create reference IMailFolderCommandReference r = new MailFolderCommandReference( inboxFolder, new Object[] { uid }); // score message and mark as "spam" or "not spam" new ScoreMessageCommand(r).execute(worker); // is message marked as spam boolean spam = ((Boolean) inboxFolder.getAttribute(uid, "columba.spam")) .booleanValue(); if (spam == false) return false; if (item.getSpamItem().isMoveIncomingJunkMessagesEnabled()) { if (item.getSpamItem().isIncomingTrashSelected()) { // move message to trash IMailbox trash = (IMailbox) ((RootFolder) inboxFolder .getRootFolder()).getTrashFolder(); // create reference MailFolderCommandReference ref2 = new MailFolderCommandReference( inboxFolder, trash, new Object[] { uid }); CommandProcessor.getInstance().addOp( new MoveMessageCommand(ref2)); } else { // move message to user-configured folder (generally "Junk" // folder) IMailbox destFolder = (IMailbox) FolderTreeModel .getInstance() .getFolder(item.getSpamItem().getIncomingCustomFolder()); // create reference MailFolderCommandReference ref2 = new MailFolderCommandReference( inboxFolder, destFolder, new Object[] { uid }); CommandProcessor.getInstance().addOp( new MoveMessageCommand(ref2)); } return true; } return false; }
// in java/org/columba/mail/pop3/command/AddPOP3MessageCommand.java
private void applyFilters(Object uid) throws Exception { IFilterList list = inboxFolder.getFilterList(); for (int j = 0; j < list.count(); j++) { IFilter filter = list.get(j); Object[] result = inboxFolder.searchMessages(filter, new Object[] { uid }); if (result.length != 0) { CompoundCommand command = new FilterCompoundCommand(filter, inboxFolder, result); CommandProcessor.getInstance().addOp(command); } } }
// in java/org/columba/mail/pop3/POP3Store.java
public List getUIDList() throws Exception { return new ArrayList(getUidMap().keySet()); }
// in java/org/columba/mail/imap/FetchSubFolderListCommand.java
public void execute(IWorkerStatusController worker) throws Exception { MailFolderCommandReference r = (MailFolderCommandReference) getReference(); if (r == null) { return; } if (r.getSourceFolder() instanceof IMAPRootFolder) { imapRoot = (IMAPRootFolder) r.getSourceFolder(); imapRoot.syncSubscribedFolders(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void logout() throws Exception { if (protocol.getState() != IMAPProtocol.NOT_CONNECTED) { try { protocol.logout(); } catch (Exception e) { // don't care } } }
// in java/org/columba/mail/imap/IMAPServer.java
public ListInfo[] list(String reference, String pattern) throws Exception { ensureLoginState(); try { return protocol.list(reference, pattern); } catch (IMAPDisconnectedException e) { return protocol.list(reference, pattern); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer append(InputStream messageSource, IMAPFlags flags, IMAPFolder folder) throws Exception { // make sure we are already logged in ensureLoginState(); // close the mailbox if it is selected if (protocol.getState() == IMAPProtocol.SELECTED && protocol.getSelectedMailbox().equals(folder)) { protocol.close(); } MailboxStatus status = protocol.status(folder.getImapPath(), new String[] { "UIDNEXT" }); if (flags != null) { protocol.append(folder.getImapPath(), messageSource, new Object[] { flags }); } else { protocol.append(folder.getImapPath(), messageSource); } return new Integer((int) status.getUidNext()); }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer append(InputStream messageSource, IMAPFolder folder) throws Exception { return append(messageSource, null, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
public void deleteFolder(String path) throws Exception { // make sure we are already logged in ensureLoginState(); if (protocol.getState() == IMAPProtocol.SELECTED && protocol.getSelectedMailbox().equals(path)) { protocol.close(); } protocol.unsubscribe(path); protocol.delete(path); }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] copy(IMAPFolder destFolder, Object[] uids, IMAPFolder folder) throws Exception { ensureSelectedState(folder); // We need to sort the uids in order // to have the correct association // between the new and old uid List sortedUids = Arrays.asList(uids); Collections.sort(sortedUids); MailboxStatus statusBefore = protocol.status(destFolder.getImapPath(), new String[] { "UIDNEXT" }); protocol.uidCopy(new SequenceSet(Arrays.asList(uids)), destFolder .getImapPath()); MailboxStatus statusAfter = protocol.status(destFolder.getImapPath(), new String[] { "UIDNEXT" }); // the UIDS start UIDNext till UIDNext + uids.length int copied = (int) (statusAfter.getUidNext() - statusBefore .getUidNext()); Integer[] destUids = new Integer[copied]; for (int i = 0; i < copied; i++) { destUids[i] = new Integer((int) (statusBefore.getUidNext() + i)); } return destUids; }
// in java/org/columba/mail/imap/IMAPServer.java
public void fetchHeaderList(IHeaderList headerList, List list, IMAPFolder folder) throws Exception { // make sure this mailbox is selected ensureSelectedState(folder); printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_header_list")); int count = list.size() / IMAPServer.STEP_SIZE; int rest = list.size() % IMAPServer.STEP_SIZE; getObservable().setCurrent(0); getObservable().setMax(count + 1); for (int i = 0; i < count; i++) { doFetchHeaderList(headerList, list.subList( i * IMAPServer.STEP_SIZE, (i + 1) * IMAPServer.STEP_SIZE)); getObservable().setCurrent(i); } if (rest > 0) { doFetchHeaderList(headerList, list .subList(count * IMAPServer.STEP_SIZE, count * IMAPServer.STEP_SIZE + rest)); } getObservable().setCurrent(count + 1); }
// in java/org/columba/mail/imap/IMAPServer.java
public List search(Object[] uids, IFilterRule filterRule, IMAPFolder folder) throws Exception { LinkedList result = new LinkedList(search(filterRule, folder)); ListTools.intersect(result, Arrays.asList(uids)); return result; }
// in java/org/columba/mail/filter/plugins/DeleteMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, uids); r.setMarkVariant(MarkMessageCommand.MARK_AS_EXPUNGED); MarkMessageCommand c = new MarkMessageCommand(r); CommandProcessor.getInstance().addOp(c); r = new MailFolderCommandReference(srcFolder); return new ExpungeFolderCommand(r); }
// in java/org/columba/mail/filter/plugins/DateFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { // transform string to Date representation Date date = transformDate(pattern); if (date == null) return false; boolean result = false; // get date Date d = (Date) ((IMailbox)folder).getAttribute(uid, "columba.date"); if (d == null) { LOG.fine("field date not found"); return false; } switch (condition) { case FilterCriteria.DATE_BEFORE: if (d.before(date)) { result = true; } break; case FilterCriteria.DATE_AFTER: if (d.after(date)) { result = true; } break; } return result; }
// in java/org/columba/mail/filter/plugins/BodyFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { // get message body InputStream messageSourceStream = ((IMailbox)folder).getMessageSourceStream(uid); StringBuffer body = StreamUtils.readCharacterStream(messageSourceStream); String bodyText = pattern; boolean result = false; switch (condition) { case FilterCriteria.CONTAINS: if (body.indexOf(bodyText) != -1) { result = true; } break; case FilterCriteria.CONTAINS_NOT: if (body.indexOf(bodyText) == -1) { result = true; } break; } return result; }
// in java/org/columba/mail/filter/plugins/PriorityFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { boolean result = false; String s = (String) searchPattern; Integer searchPatternInt = transformPriority(s); Integer priority = (Integer) ((IMailbox)folder).getAttribute(uid, "columba.priority"); if (priority == null) { return false; } switch (condition) { case FilterCriteria.IS: if (priority.compareTo(searchPatternInt) == 0) { result = true; } break; case FilterCriteria.IS_NOT: if (priority.compareTo(searchPatternInt) != 0) { result = true; } break; } return result; }
// in java/org/columba/mail/filter/plugins/FlagsFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { boolean result = false; String headerField = pattern; Flags flags = ((IMailbox)folder).getFlags(uid); if (headerField.equalsIgnoreCase("Answered")) { result = flags.get(Flags.ANSWERED); } else if (headerField.equalsIgnoreCase("Deleted")) { result = flags.get(Flags.DELETED); } else if (headerField.equalsIgnoreCase("Flagged")) { result = flags.get(Flags.FLAGGED); } else if (headerField.equalsIgnoreCase("Recent")) { result = flags.get(Flags.RECENT); } else if (headerField.equalsIgnoreCase("Draft")) { result = flags.get(Flags.DRAFT); } else if (headerField.equalsIgnoreCase("Seen")) { result = flags.get(Flags.SEEN); } else if (headerField.equalsIgnoreCase("Spam")) { result = ((Boolean) ((IMailbox)folder).getAttribute(uid, "columba.spam")) .booleanValue(); } if (condition == FilterCriteria.IS) { return result; } else { return !result; } }
// in java/org/columba/mail/filter/plugins/MarkMessageAsReadAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { MailFolderCommandReference r = new MailFolderCommandReference( srcFolder, uids); String variant = filterAction.get("markvariant"); if (variant.equals("read")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_READ); } else if (variant.equals("unread")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_UNREAD); } else if (variant.equals("flagged")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_FLAGGED); } else if (variant.equals("not_flagged")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_UNFLAGGED); } else if (variant.equals("expunged")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_EXPUNGED); } else if (variant.equals("not_expunged")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_UNEXPUNGED); } else if (variant.equals("answered")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_ANSWERED); } else if (variant.equals("spam")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_SPAM); } else if (variant.equals("no_spam")) { r.setMarkVariant(MarkMessageCommand.MARK_AS_NOTSPAM); } // if something goes wrong here, fall back to "mark as read" else { r.setMarkVariant(MarkMessageCommand.MARK_AS_READ); } MarkMessageCommand c = new MarkMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/AccountFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { boolean result = false; Integer messageAccountUid = (Integer) ((IMailbox) folder).getAttribute( uid, "columba.accountuid"); if ((messageAccountUid != null) && (criteriaAccountUid != -1)) { int id = messageAccountUid.intValue(); if ((criteriaCondition == FilterCriteria.IS) && (criteriaAccountUid == id)) { result = true; } else if ((criteriaCondition == FilterCriteria.IS_NOT) && (criteriaAccountUid != id)) { result = true; } } return result; }
// in java/org/columba/mail/filter/plugins/CopyMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { String uid = filterAction.getUid(); IMailbox destFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(uid); if (destFolder == null) { JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), "Unable to find destination folder, please correct the destination folder path for this filter"); throw new Exception("File not found"); } MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, destFolder, uids); CopyMessageCommand c = new CopyMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/MatchAllFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { // match all matches return true; }
// in java/org/columba/mail/filter/plugins/MoveMessageAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { String uid = filterAction.getUid(); IMailbox destFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(uid); if (destFolder == null) { JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), "Unable to find destination folder, please correct the destination folder path for this filter"); throw new Exception("File not found"); } MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, destFolder, uids); MoveMessageCommand c = new MoveMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/SizeFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { boolean result = false; Integer size = transformSize((String) pattern); Integer s = (Integer) ((IMailbox)folder).getAttribute(uid, "columba.size"); if (s == null) { return false; } switch (condition) { case FilterCriteria.SIZE_SMALLER: if (size.compareTo(s) > 0) { result = true; } break; case FilterCriteria.SIZE_BIGGER: if (size.compareTo(s) < 0) { result = true; } break; } return result; }
// in java/org/columba/mail/filter/plugins/HeaderfieldFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { // get message header Header header = ((IMailbox)folder).getHeaderFields(uid, new String[] { headerfield }); if (header == null) { return false; } String headerItem = (String) header.get(headerfield); // cancel if headerfield doesn't exist if (headerItem == null) return false; // decode headerfield headerItem = EncodedWord.decode(headerItem).toString(); // see if theirs a match boolean result = match(headerItem, condition, pattern); return result; }
// in java/org/columba/mail/filter/plugins/ColorMessageFilterAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { int rgb = filterAction.getIntegerWithDefault("rgb", Color.black.getRGB()); // create reference MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, uids); r.setColorValue(rgb); // create command return new ColorMessageCommand(r); }
// in java/org/columba/mail/filter/plugins/AddressbookFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { Header header = ((IMailbox) folder).getHeaderFields(uid, new String[] { "From" }); String from = header.get("From"); Address address = null; try { address = AddressParser.parseAddress(from); } catch (Exception ex) { return false; } IFolderFacade folderFacade = null; IContactFacade contactFacade = null; try { folderFacade = ServiceConnector.getFolderFacade(); contactFacade = ServiceConnector.getContactFacade(); } catch (ServiceNotFoundException e) { e.printStackTrace(); return false; } org.columba.addressbook.facade.IFolder contactFolder = folderFacade.getCollectedAddresses(); String contactId = contactFacade.findByEmailAddress(contactFolder.getId(), address.getMailAddress()); if ( contactId != null ) return true; return false; }
// in java/org/columba/mail/filter/plugins/ScoreMessageFilterAction.java
public ICommand getCommand(IFilterAction filterAction, IFolder srcFolder, Object[] uids) throws Exception { MailFolderCommandReference r = new MailFolderCommandReference(srcFolder, uids); ScoreMessageCommand c = new ScoreMessageCommand(r); return c; }
// in java/org/columba/mail/filter/plugins/ColorFilter.java
public boolean process(IFolder folder, Object uid) throws Exception { int messageRGB = defaultColorRGB; Color messageColor = (Color) ((IMailbox)folder).getAttribute(uid, "columba.color"); if (messageColor != null) { messageRGB = messageColor.getRGB(); } boolean result = false; if ((criteriaCondition == FilterCriteria.IS) && (messageRGB == criteriaRGB)) { result = true; } else if ((criteriaCondition == FilterCriteria.IS_NOT) && (messageRGB != criteriaRGB)) { result = true; } return result; }
// in java/org/columba/mail/pgp/MultipartSignedRenderer.java
public InputStream render(MimePart part) throws Exception { Vector streams = new Vector((2 * 2) + 3); MimeHeader header = part.getHeader(); // Create boundary to separate the mime-parts String boundary = createUniqueBoundary().toString(); header.putContentParameter("boundary", boundary); byte[] startBoundary = ("\r\n--" + boundary + "\r\n").getBytes(); byte[] endBoundary = ("\r\n--" + boundary + "--\r\n").getBytes(); // Add pgp-specific content-parameters // we take as default hash-algo SHA1 header.putContentParameter("micalg", "pgp-sha1"); header.putContentParameter("protocol", "application/pgp-signature"); // Create the header and body of the multipart streams.add(header.getHeader().getInputStream()); // Add the MimePart that will be signed streams.add(new ByteArrayInputStream(startBoundary)); CloneStreamMaster signedPartCloneModel = new CloneStreamMaster( MimeTreeRenderer.getInstance().renderMimePart(part.getChild(0))); streams.add(signedPartCloneModel.getClone()); // Add the signature streams.add(new ByteArrayInputStream(startBoundary)); StreamableMimePart signatureMimePart; signatureMimePart = null; JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); PGPPassChecker passCheck = PGPPassChecker.getInstance(); boolean check = passCheck.checkPassphrase(con); if (!check) { throw new WrongPassphraseException("wrong passphrase"); } JSCFStatement stmt = con.createStatement(); JSCFResultSet res = stmt.executeSign(signedPartCloneModel.getClone()); signatureMimePart = new InputStreamMimePart(this.signatureHeader, res .getResultStream()); streams.add(MimeTreeRenderer.getInstance().renderMimePart( signatureMimePart)); // Create the closing boundary streams.add(new ByteArrayInputStream(endBoundary)); return new SequenceInputStream(streams); }
// in java/org/columba/mail/pgp/MultipartEncryptedRenderer.java
public InputStream render(MimePart part) throws Exception { Vector streams = new Vector((2 * 2) + 3); MimeHeader header = part.getHeader(); // Create boundary to separate the mime-parts String boundary = createUniqueBoundary().toString(); header.putContentParameter("boundary", boundary); byte[] startBoundary = ("\r\n--" + boundary + "\r\n").getBytes(); byte[] endBoundary = ("\r\n--" + boundary + "--\r\n").getBytes(); // Add pgp-specific content-parameters header.putContentParameter("protocol", "application/pgp-encrypted"); // Create the header of the multipart streams.add(header.getHeader().getInputStream()); SecurityItem pgpItem = ((PGPMimePart) part).getPgpItem(); // Add the ControlMimePart streams.add(new ByteArrayInputStream(startBoundary)); streams.add(MimeTreeRenderer.getInstance().renderMimePart(controlPart)); // Add the encrypted MimePart streams.add(new ByteArrayInputStream(startBoundary)); StreamableMimePart encryptedPart; encryptedPart = null; /* JSCFDriverManager.registerJSCFDriver(new GPGDriver()); JSCFConnection con = JSCFDriverManager.getConnection("jscf:gpg:"+pgpItem.get("path")); */ JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); //con.getProperties().put("USERID", pgpItem.get("id")); JSCFStatement stmt = con.createStatement(); JSCFResultSet res = stmt.executeEncrypt(MimeTreeRenderer.getInstance() .renderMimePart(part.getChild( 0)), pgpItem.get("recipients")); if (res.isError()) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), StreamUtils.readCharacterStream(res.getErrorStream()).toString()); } encryptedPart = new InputStreamMimePart(encryptedHeader, res.getResultStream()); streams.add(MimeTreeRenderer.getInstance().renderMimePart(encryptedPart)); // Create the closing boundary streams.add(new ByteArrayInputStream(endBoundary)); return new SequenceInputStream(streams); }
// in java/org/columba/mail/spam/rules/MissingToHeaderRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[] { "To"}); String from = header.get("To"); if (from == null) return MAX_PROBABILITY; if (from.length() == 0) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/SubjectContainsSpamRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[] { "Subject"}); String subject = header.get("Subject"); if (subject == null) return NEARLY_ZERO; if (subject.length() == 0) return NEARLY_ZERO; // convert to lower-case subject = subject.toLowerCase(); if (subject.indexOf("[spam]") != -1) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/OnlyHTMLMimepartRule.java
public float score(IMailbox folder, Object uid) throws Exception { MimeTree tree = folder.getMimePartTree(uid); Iterator it = tree.getAllLeafs().iterator(); boolean onlyHTML = true; while (it.hasNext()) { MimePart mp = (MimePart) it.next(); MimeHeader header = mp.getHeader(); MimeType mimetype = header.getMimeType(); if ((mimetype.getType().equals("text")) && (mimetype.getSubtype().equals("html"))) { } else { onlyHTML = false; } } if (onlyHTML) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/SubjectWhitespaceRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[]{"Subject"}); String subject = header.get("Subject"); if ( subject == null ) return NEARLY_ZERO; if ( subject.length() == 0 ) return NEARLY_ZERO; int count=0; boolean whitespace = false; for ( int i=0; i<subject.length(); i++) { char ch = subject.charAt(i); if ( ch == ' ') { // whitespace detected // if already detected before if ( whitespace ) count++; whitespace = true; } else { whitespace = false; } } // check for at least 10 whitespaces if ( count > 10 ) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/SubjectIsAllCapitalsRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[] { "Subject"}); String subject = header.get("Subject"); if (subject == null) return NEARLY_ZERO; if (subject.length() == 0) return NEARLY_ZERO; if (subject.equals(subject.toUpperCase())) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/rules/RuleList.java
public ProbabilityMap getProbabilities(IMailbox folder, Object uid) throws Exception { ProbabilityMap map = new ProbabilityMapImpl(); Iterator it = list.iterator(); while (it.hasNext()) { Rule rule = (Rule) it.next(); LOG.info("rule " + rule.getName()); float score = rule.score(folder, uid); LOG.info("score=" + score); map.addToken(new Token(rule.getName()), score); } return map; }
// in java/org/columba/mail/spam/rules/MixedCharactersAddressRule.java
public float score(IMailbox folder, Object uid) throws Exception { Header header = folder.getHeaderFields(uid, new String[] { "From"}); String from = header.get("From"); if (from == null) return NEARLY_ZERO; if (from.length() == 0) return NEARLY_ZERO; int count = 0; for (int i = 0; i < from.length(); i++) { if (Character.isDigit(from.charAt(i))) count++; } // if 1/3 of all characters are digits if ( count > from.length()/3) return MAX_PROBABILITY; return NEARLY_ZERO; }
// in java/org/columba/mail/spam/SpamController.java
public boolean scoreMessage(IMailbox mailbox, Object uid) throws Exception { return spamPlugin.scoreMessage(mailbox, uid); }
// in java/org/columba/mail/spam/SpamController.java
public void trainMessageAsSpam(IMailbox mailbox, Object uid) throws Exception { spamPlugin.trainMessageAsSpam(mailbox, uid); }
// in java/org/columba/mail/spam/SpamController.java
public void trainMessageAsHam(IMailbox mailbox, Object uid) throws Exception { spamPlugin.trainMessageAsHam(mailbox, uid); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
public boolean scoreMessage(IMailbox mailbox, Object uid) throws Exception { // load database from file load(); // get inputstream of message body InputStream istream = CommandHelper.getBodyPart(mailbox, uid); // we are using this inpustream multiple times // --> istream will be closed by CloneStreamMaster CloneStreamMaster master = new CloneStreamMaster(istream); // get stream istream = master.getClone(); // apply additional handcrafted rules ProbabilityMap map = RuleList.getInstance().getProbabilities(mailbox, uid); float score = filter.scoreMessage(new Message(istream), map); return score >= 0.9f; }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
public void trainMessageAsSpam(IMailbox mailbox, Object uid) throws Exception { // get inputstream of message body InputStream istream = CommandHelper.getBodyPart(mailbox, uid); // get headers Header h = mailbox.getHeaderFields(uid, Message.HEADERFIELDS); // put headers in list Enumeration e = h.getKeys(); List list = new ArrayList(); while (e.hasMoreElements()) { String key = (String) e.nextElement(); list.add(h.get(key)); } // load database from file load(); try { CloneStreamMaster master = new CloneStreamMaster(istream); InputStream inputStream = master.getClone(); byte[] md5sum = MD5SumHelper.createMD5(inputStream); // close stream inputStream.close(); // get new inputstream inputStream = master.getClone(); Message message = new Message(inputStream, list, md5sum); // check if this message was already learned // -> only add if this is not the case if (db.MD5SumExists(md5sum)) { // message already exists // --> correct token data filter.correctMessageAsSpam(message); } else { // new message filter.trainMessageAsSpam(message); } // close stream inputStream.close(); // set dirty flag hasChanged = true; } catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); } catch (NoSuchAlgorithmException nsae) { } // does not occur }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
public void trainMessageAsHam(IMailbox mailbox, Object uid) throws Exception { // get inputstream of message body InputStream istream = CommandHelper.getBodyPart(mailbox, uid); // get headers Header h = mailbox.getHeaderFields(uid, Message.HEADERFIELDS); // put headers in list Enumeration e = h.getKeys(); List list = new ArrayList(); while (e.hasMoreElements()) { String key = (String) e.nextElement(); list.add(h.get(key)); } // load database from file load(); try { CloneStreamMaster master = new CloneStreamMaster(istream); InputStream inputStream = master.getClone(); byte[] md5sum = MD5SumHelper.createMD5(inputStream); // close stream inputStream.close(); // get new inputstream inputStream = master.getClone(); Message message = new Message(inputStream, list, md5sum); // check if this message was already learned if (db.MD5SumExists(md5sum)) { // message already exists // --> correct token data filter.correctMessageAsHam(message); } else { // new message filter.trainMessageAsHam(message); } // close stream inputStream.close(); // set dirty flag hasChanged = true; } catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); } catch (NoSuchAlgorithmException nsae) { } // does not occur }
// in java/org/columba/mail/spam/command/LearnMessageAsSpamCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get array of source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // update status message if (uids.length > 1) { // TODO (@author fdietz): i18n worker.setDisplayText("Training messages..."); worker.setProgressBarMaximum(uids.length); } for (int j = 0; j < uids.length; j++) { if (worker.cancelled()) { break; } try { // train message as spam SpamController.getInstance().trainMessageAsSpam(srcFolder, uids[j]); if (uids.length > 1) { worker.setProgressBarValue(j); } } catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } } } }
// in java/org/columba/mail/spam/command/CommandHelper.java
public static InputStream getBodyPart(IMailbox folder, Object uid) throws Exception { MimeTree mimePartTree = folder.getMimePartTree(uid); List l = mimePartTree.getLeafsWithContentType(mimePartTree .getRootMimeNode(), "text"); if (l.size() > 1) { Vector streamList = new Vector(); Iterator it = l.iterator(); while (it.hasNext()) { MimePart mp = (MimePart) it.next(); InputStream s = getBodyPartStream(folder, uid, mp); streamList.add(s); } SequenceInputStream stream = new SequenceInputStream(streamList .elements()); return stream; } else if (l.size() == 1) { MimePart mp = (MimePart) l.get(0); InputStream s = getBodyPartStream(folder, uid, mp); return s; } else { return new ByteArrayInputStream(new byte[0]); } }
// in java/org/columba/mail/spam/command/CommandHelper.java
private static InputStream getBodyPartStream(IMailbox folder, Object uid, MimePart mp) throws Exception { InputStream bodyStream = folder.getMimePartBodyStream(uid, mp .getAddress()); int encoding = mp.getHeader().getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64: { bodyStream = new Base64DecoderInputStream(bodyStream); break; } } return bodyStream; }
// in java/org/columba/mail/spam/command/CommandHelper.java
public static AccountItem retrieveAccountItem(IMailbox folder, Object uid) throws Exception { AccountItem item = null; Object accountUid = folder.getAttribute(uid, "columba.accountuid"); if (accountUid != null) { // try to get account using the account ID item = MailConfig.getInstance().getAccountList().uidGet( ((Integer) accountUid).intValue()); } if (item == null) { // try to get the account using the email address Header header = folder.getHeaderFields(uid, new String[] { "To" }); item = MailConfig.getInstance().getAccountList().getAccount( header.get("To")); } if (item == null) { // use default account as fallback item = MailConfig.getInstance().getAccountList() .getDefaultAccount(); } return item; }
// in java/org/columba/mail/spam/command/LearnMessageAsHamCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get array of source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // update status message if (uids.length > 1) { // TODO (@author fdietz): i18n worker.setDisplayText("Training messages..."); worker.setProgressBarMaximum(uids.length); } long startTime = System.currentTimeMillis(); for (int j = 0; j < uids.length; j++) { if (worker.cancelled()) { break; } try { // train message as ham SpamController.getInstance().trainMessageAsHam(srcFolder, uids[j]); if (uids.length > 1) { worker.setProgressBarValue(j); } } catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } } } long endTime = System.currentTimeMillis(); LOG.info("took me=" + (endTime - startTime) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
public void updateGUI() throws Exception { // update table if (markAsSpamCommand != null) { markAsSpamCommand.updateGUI(); } if (markAsNotSpamCommand != null) { markAsNotSpamCommand.updateGUI(); } }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs uids = r.getUids(); // get source folder srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // update status message // TODO (@author fdietz): i18n worker.setDisplayText("Scoring messages ..."); worker.setProgressBarMaximum(uids.length); ArrayList spamList = new ArrayList(); ArrayList nonspamList = new ArrayList(); for (int j = 0; j < uids.length; j++) { if (worker.cancelled()) { return; } try { // score message boolean result = scoreMessage(j); // if message is spam if (result) { // mark message as spam spamList.add(uids[j]); } else { // mark message as *not* spam nonspamList.add(uids[j]); } // train message as spam or non spam trainMessage(j, result); worker.setProgressBarValue(j); if (worker.cancelled()) { break; } } catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } } } // mark spam messages if (spamList.size() != 0) { MailFolderCommandReference ref = new MailFolderCommandReference( srcFolder, spamList.toArray()); ref.setMarkVariant(MarkMessageCommand.MARK_AS_SPAM); markAsSpamCommand = new MarkMessageCommand(ref); markAsSpamCommand.execute(worker); } // mark non spam messages if (nonspamList.size() != 0) { MailFolderCommandReference ref = new MailFolderCommandReference( srcFolder, nonspamList.toArray()); ref.setMarkVariant(MarkMessageCommand.MARK_AS_NOTSPAM); markAsNotSpamCommand = new MarkMessageCommand(ref); markAsNotSpamCommand.execute(worker); } }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
private boolean scoreMessage(int j) throws Exception, IOException { // calculate message score boolean result = SpamController.getInstance().scoreMessage(srcFolder, uids[j]); // message belongs to which account? AccountItem item = CommandHelper .retrieveAccountItem(srcFolder, uids[j]); if (item.getSpamItem().checkAddressbook()) { // check if sender is already in addressbook boolean isInAddressbook = new AddressbookFilter().process( srcFolder, uids[j]); result = result && !isInAddressbook; } return result; }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
private void trainMessage(int j, boolean result) throws Exception { // add this message to frequency database if (result) { SpamController.getInstance().trainMessageAsSpam(srcFolder, uids[j]); } else { SpamController.getInstance().trainMessageAsHam(srcFolder, uids[j]); } }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinPlugin.java
public boolean scoreMessage(IMailbox mailbox, Object uid) throws Exception { InputStream rawMessageSource = mailbox.getMessageSourceStream(uid); IPCHelper ipcHelper = new IPCHelper(); // "-L" use local tests only // String cmd = "spamassassin -L"; // String cmd = "spamc -c -L"; String cmd = ExternalToolsHelper.getSpamc() + " -c"; String result = null; int exitVal = -1; try { LOG.info("creating process.."); ipcHelper.executeCommand(cmd); LOG.info("sending to stdin.."); ipcHelper.send(rawMessageSource); exitVal = ipcHelper.waitFor(); LOG.info("exitcode=" + exitVal); LOG.info("retrieving output.."); result = ipcHelper.getOutputString(); ipcHelper.waitForThreads(); } catch (Exception ex) { ex.printStackTrace(); } if (result == null) { return false; } if (exitVal == 1) { // spam found return true; } else { return false; } }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinPlugin.java
public void trainMessageAsSpam(IMailbox mailbox, Object uid) throws Exception { InputStream rawMessageSource = mailbox.getMessageSourceStream(uid); IPCHelper ipcHelper = new IPCHelper(); LOG.info("creating process.."); // --no-rebuild option is deprecated in recent SpamAssassin versions /* ipcHelper.executeCommand(ExternalToolsHelper.getSALearn() + " --no-rebuild --spam --single"); */ ipcHelper.executeCommand(ExternalToolsHelper.getSALearn() + " --no-sync --spam --single"); LOG.info("sending to stdin.."); ipcHelper.send(rawMessageSource); int exitVal = ipcHelper.waitFor(); LOG.info("exitcode=" + exitVal); LOG.info("retrieving output.."); String result = ipcHelper.getOutputString(); LOG.info("output=" + result); ipcHelper.waitForThreads(); }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinPlugin.java
public void trainMessageAsHam(IMailbox mailbox, Object uid) throws Exception { InputStream rawMessageSource = mailbox.getMessageSourceStream(uid); IPCHelper ipcHelper = new IPCHelper(); LOG.info("creating process.."); // --no-rebuild option is deprecated in recent SpamAssassin versions ipcHelper.executeCommand(ExternalToolsHelper.getSALearn() + " --no-sync --ham --single"); LOG.info("sending to stdin.."); ipcHelper.send(rawMessageSource); int exitVal = ipcHelper.waitFor(); LOG.info("exitcode=" + exitVal); LOG.info("retrieving output.."); String result = ipcHelper.getOutputString(); LOG.info("output=" + result); ipcHelper.waitForThreads(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public void executeCommand(String command) throws Exception { p = Runtime.getRuntime().exec(command); errorStream = new StreamThread(p.getErrorStream()); outputStream = new StreamThread(p.getInputStream()); inputStream = p.getOutputStream(); errorStream.start(); outputStream.start(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public void send(String in) throws Exception { inputStream.write(in.getBytes()); inputStream.flush(); inputStream.close(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public void send(InputStream in) throws Exception { StreamUtils.streamCopy(in, inputStream); inputStream.flush(); inputStream.close(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public int waitFor() throws Exception { int exitVal = p.waitFor(); return exitVal; }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public String getErrorString() throws Exception { String str = errorStream.getBuffer(); return str; }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public String getOutputString() throws Exception { String str = outputStream.getBuffer(); return str; }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
public void waitForThreads() throws Exception { outputStream.join(); errorStream.join(); }
// in java/org/columba/mail/search/SearchFolderFactory.java
public static VirtualFolder createSearchFolder(FilterCriteria c, IMailFolder folder) throws Exception { // create search folder VirtualFolder searchFolder = createVirtualFolder(folder); // add filter criteria searchFolder.getFilter().getFilterRule().add(c); return searchFolder; }
// in java/org/columba/mail/search/SearchFolderFactory.java
public static VirtualFolder prepareSearchFolder(FilterCriteria c, IMailFolder folder) throws Exception { // create search folder VirtualFolder searchFolder = createVirtualFolder(folder); // add filter criteria searchFolder.getFilter().getFilterRule().add(c); return searchFolder; }
// in java/org/columba/mail/search/SearchFolderFactory.java
public static VirtualFolder createSearchFolder(FilterRule rule, IMailFolder folder) throws Exception { // create search folder VirtualFolder searchFolder = createVirtualFolder(folder); searchFolder.getFilter().getFilterRule().setCondition( rule.getConditionInt()); for (int i = 0; i < rule.getChildCount(); i++) { // add filter criteria searchFolder.getFilter().getFilterRule().add(rule.get(i)); } return searchFolder; }
// in java/org/columba/mail/search/SearchFolderFactory.java
public static VirtualFolder prepareSearchFolder(FilterRule rule, IMailFolder folder) throws Exception { // create search folder VirtualFolder searchFolder = createVirtualFolder(folder); searchFolder.getFilter().getFilterRule().setCondition( rule.getConditionInt()); for (int i = 0; i < rule.getChildCount(); i++) { // add filter criteria searchFolder.getFilter().getFilterRule().add(rule.get(i)); } return searchFolder; }
// in java/org/columba/mail/search/MailSearchProvider.java
private List<ISearchResult> retrieveResultData(Vector<SearchIndex> indizes, int startIndex, int resultCount) throws Exception { // ensure we are in existing result range int count = (startIndex + resultCount <= indizes.size()) ? resultCount : indizes.size(); List<ISearchResult> result = new Vector<ISearchResult>(); // gather result results for (int i = startIndex; i < count; i++) { SearchIndex idx = indizes.get(i); VirtualFolder folder = idx.folder; Object messageId = idx.messageId; // TODO @author fdietz: ensure that we don't fetch individual // headers // to reduce client/server roundtrips String title = (String) folder.getAttribute(messageId, "columba.subject"); Address from = (Address) folder.getAttribute(messageId, "columba.from"); Date date = (Date) folder.getAttribute(messageId, "columba.date"); String description = from.toString() + " " + date; VirtualHeader h = (VirtualHeader) folder.getHeaderList().get(messageId); URI uri = SearchResultBuilder.createURI(h.getSrcFolder().getId(), h.getSrcUid()); System.out.println("uri="+uri.toString()); ImageIcon statusIcon = null; Flags flags = folder.getFlags(messageId); if (flags.getDeleted()) { statusIcon = ImageLoader.getSmallIcon("user-trash.png"); } else if (flags.getAnswered()) { statusIcon = MailImageLoader .getSmallIcon("message-mail-replied.png"); } else if (flags.getDraft()) { statusIcon = MailImageLoader.getSmallIcon("edit.png"); } else if (!flags.getSeen()) { statusIcon = MailImageLoader .getSmallIcon("message-mail-unread.png"); } else if (flags.getSeen()) { statusIcon = MailImageLoader .getSmallIcon("message-mail-read.png"); } String dateString = new DateHelper().format(date); result.add(new MailSearchResult(title, description, uri, dateString, date, from, statusIcon, flags.getFlagged())); } return result; }
// in java/org/columba/mail/folder/imap/UpdateFlagCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get IMAP rootfolder IMAPFolder srcFolder = (IMAPFolder) r.getSourceFolder(); srcFolder.updateFlag(flag); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void removeFolder() throws Exception { try { if (existsOnServer) { String path = getImapPath(); getServer().deleteFolder(path); } super.removeFolder(); } catch (Exception e) { throw e; } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void setName(String name) throws Exception { if (getName() == null) { // if creating new folder super.setName(name); return; } String oldPath = getImapPath(); LOG.info("old path=" + oldPath); String newPath = null; if (getParent() instanceof IMAPFolder) { newPath = ((IMAPFolder) getParent()).getImapPath(); } newPath += (getServer().getDelimiter() + name); LOG.info("new path=" + newPath); getServer().renameFolder(oldPath, newPath); super.setName(name); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public synchronized IHeaderList getHeaderList() throws Exception { if (headerList == null) { // header cache is stored in "headerlist" subfolder File headercacheDirectory = new File(getDirectoryFile(), "headerlist"); headerList = new BerkeleyDBHeaderList(headercacheDirectory, getId()); headerList .addHeaderListCorruptedListener(new IHeaderListCorruptedListener() { public void headerListCorrupted(IHeaderList headerList) { headerList.clear(); getMessageFolderInfo().reset(); fireFolderPropertyChanged(); } }); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
Object[] synchronizeHeaderlist() throws Exception, IOException, CommandCancelledException, IMAPException { Object[] result = new Object[0]; // do not sync folders which have a Noselect flag if (!getConfiguration().getBooleanWithDefault("selectable", true)) return result; // Check if the mailbox has changed MailboxStatus status = getServer().getStatus(this); if (status.getMessages() == 0) { purgeHeaderList(); syncMailboxInfo(status); return result; } if (!firstSync && status.getMessages() == this.getMessageFolderInfo() .getExists()) { return result; } List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); int largestLocalUid = localUids.size() > 0 ? ((Integer) localUids .get(localUids.size() - 1)).intValue() : -1; int largestRemoteUid = getServer().getLargestRemoteUid(this, status); if (localUids.size() == status.getMessages() && largestRemoteUid == largestLocalUid) { // Seems to be no change! if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } return result; } printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); largestRemoteUid = getServer().fetchUid( new SequenceSet(SequenceEntry.STAR), this); if (largestRemoteUid == -1) { largestRemoteUid = getServer().fetchUid( new SequenceSet(status.getMessages()), this); } int largestLocalUidIndex = findLargestLocalUidIndex(localUids); int newMessages = status.getMessages() - largestLocalUidIndex; /* * // Somehow there are new messages that // have a lower index -> out * of sync if (localUids.size() - status.getMessages() + newMessages < * 0) { * * LOG.severe("Folder " + getName() + " is out of sync -> recreating the * cache!"); purgeHeaderList(); // all messages are new newMessages = * status.getMessages(); // Set the index of the largest Uid to 0 // -> * ensure it works with the fetch of new // messages part below * largestLocalUidIndex = 0; largestLocalUid = -1; * * localUids.clear(); } */ LOG.fine("Found " + newMessages + " new Messages"); // If we have new messages add them to the headerlist if (newMessages > 0) { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_new_headers")); // Ensure sizes are correct getMessageFolderInfo().setExists(localUids.size()); getMessageFolderInfo().setUnseen( Math.min(getMessageFolderInfo().getUnseen(), localUids .size())); getMessageFolderInfo().setRecent(0); List newUids = fetchNewMessages(largestLocalUidIndex); localUids.addAll(newUids); if (newUids.size() < newMessages) { // There are still more messages to update // -> issue another fetch messages command CommandProcessor.getInstance().addOp( new FetchMessagesCommand( new MailFolderCommandReference(this), newMessages, largestLocalUidIndex, newUids .size())); } else { fetchDone(); } result = newUids.toArray(new Object[0]); } else { // Number of deleted messages is computed from exists on imap and // local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } } return result; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void findRemovedMessages(MailboxStatus status, List localUids) throws Exception, IOException, IMAPException, CommandCancelledException { int largestRemoteUid = getServer().getLargestRemoteUid(this); int deletedMessages = localUids.size() - status.getMessages(); LOG.fine("Found " + deletedMessages + " deleted Messages"); // Find the messages that have been deleted if (deletedMessages > 0) { int found = 0; // First deleted all local uids that // are larger than the largest remote uid while (localUids.size() > 0 && found != deletedMessages && ((Integer) localUids.get(localUids.size() - 1)) .intValue() > largestRemoteUid) { Flags flags = getHeaderList().remove( localUids.get(localUids.size() - 1)).getFlags(); fireMessageRemoved(localUids.remove(localUids.size() - 1), flags); found++; } // Search in packs beginning from newest to oldest // -> in most cases this should save us a lot of uid fetchings to // find the deleted messages // Pack size is min 10, max 200 else mailboxsize / 10 int packSize = Math.min(Math.max(deletedMessages, status .getMessages() / 10), 200); int upper = status.getMessages(); int localPointer = localUids.size() - 1; // Fetch Pack outer loop while (upper >= 1 && found != deletedMessages) { SequenceSet set = new SequenceSet(); set.add(Math.max(upper - packSize + 1, 1), upper); // Fetch these uids and compare them to the // local list Integer[] actUids = getServer().fetchUids(set, this); // Compare inner loop for (int i = actUids.length - 1; i >= 0 && found != deletedMessages; i--) { // Find missing uids loop while (found != deletedMessages && localPointer >= 0 && !localUids.get(localPointer).equals(actUids[i])) { // We found the uid of a deleted message // -> remove it from the headerlist getHeaderList().remove(localUids.get(localPointer)); found++; localPointer--; } // next position in the local uid list localPointer--; } upper = upper - packSize; } // All the other local mails are deleted while (found < deletedMessages && localPointer >= 0) { getHeaderList().remove(localUids.get(localPointer--)); found++; } if (found != deletedMessages) { LOG.severe("Assertion failed : found only " + found + " of " + deletedMessages); } } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void purgeHeaderList() throws Exception { ICloseableIterator it = getHeaderList().keyIterator(); while (it.hasNext()) { Object uid = it.next(); fireMessageRemoved(uid, getHeaderList().get(uid).getFlags()); } it.close(); getHeaderList().clear(); getMessageFolderInfo().reset(); fireFolderPropertyChanged(); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
List fetchNewMessages(int startIndex) throws IOException, IMAPException, CommandCancelledException, Exception { IMAPFlags[] newFlags = getServer().fetchFlagsListStartFrom2( startIndex + 1, this); List newUids = new ArrayList(newFlags.length); // Build a list of the new uids for (int i = 0; i < newFlags.length; i++) { // Update the list of new and local uids newUids.add(newFlags[i].getUid()); } // Fetch the headers of the new messages ... getServer().fetchHeaderList(getHeaderList(), newUids, this); // .. and set the flags setFlags(newFlags); // fire message added updates for (int i = 0; i < newFlags.length; i++) { fireMessageAdded(newFlags[i].getUid(), newFlags[i]); } return newUids; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void synchronizeFlags(MailboxStatus status) throws Exception, IOException, CommandCancelledException, IMAPException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_flags")); MailboxStatus flagStatus = new MailboxStatus(); flagStatus.setMessages(status.getMessages()); // Build the remote lists of messages that are UNSEEN, FLAGGED, DELETED, // JUNK SearchKey unseenKey = new SearchKey(SearchKey.UNSEEN); List remoteUnseenUids = Arrays.asList(getServer().search(unseenKey, this)); flagStatus.setUnseen(remoteUnseenUids.size()); SearchKey flaggedKey = new SearchKey(SearchKey.FLAGGED); List remoteFlaggedUids = Arrays.asList(getServer().search(flaggedKey, this)); SearchKey deletedKey = new SearchKey(SearchKey.DELETED); List remoteDeletedUids = Arrays.asList(getServer().search(deletedKey, this)); SearchKey recentKey = new SearchKey(SearchKey.RECENT); List remoteRecentUids = Arrays.asList(getServer().search(recentKey, this)); flagStatus.setRecent(remoteRecentUids.size()); SearchKey junkKey = new SearchKey(SearchKey.KEYWORD, "JUNK"); List remoteJunkUids = Arrays.asList(getServer().search(junkKey, this)); SearchKey answeredKey = new SearchKey(SearchKey.ANSWERED); List remoteAnsweredUids = Arrays.asList(getServer().search(answeredKey, this)); SearchKey draftKey = new SearchKey(SearchKey.DRAFT); List remoteDraftUids = Arrays.asList(getServer().search(draftKey, this)); // update the local flags and ensure that the MailboxInfo is correct ICloseableIterator headerIterator = getHeaderList().headerIterator(); int unseen = 0; int flagged = 0; int recent = 0; int deleted = 0; int junk = 0; int answered = 0; int draft = 0; while (headerIterator.hasNext()) { IColumbaHeader header = (IColumbaHeader) headerIterator.next(); Object uid = header.get("columba.uid"); Flags flag = header.getFlags(); Flags oldFlag = (Flags) flag.clone(); int index; index = Collections.binarySearch(remoteUnseenUids, uid); flag.setSeen(index < 0); if (!flag.getSeen()) { unseen++; } index = Collections.binarySearch(remoteDeletedUids, uid); flag.setDeleted(index >= 0); if (flag.getDeleted()) { deleted++; } index = Collections.binarySearch(remoteFlaggedUids, uid); flag.setFlagged(index >= 0); if (flag.getFlagged()) { flagged++; } index = Collections.binarySearch(remoteRecentUids, uid); flag.setRecent(index >= 0); if (flag.getRecent()) { recent++; } index = Collections.binarySearch(remoteJunkUids, uid); header.getAttributes().put("columba.spam", new Boolean(index >= 0)); if (index >= 0) { junk++; } index = Collections.binarySearch(remoteAnsweredUids, uid); flag.setAnswered(index >= 0); if (flag.getAnswered()) { answered++; } index = Collections.binarySearch(remoteDraftUids, uid); flag.setDraft(index >= 0); if (flag.getDraft()) { draft++; } if (!flag.equals(oldFlag)) { getHeaderList().update(uid, header); fireMessageFlagChanged(uid, oldFlag, 0); } } headerIterator.close(); if (remoteJunkUids.size() != junk || remoteRecentUids.size() != recent || remoteFlaggedUids.size() != flagged || remoteDeletedUids.size() != deleted || remoteUnseenUids.size() != unseen || remoteAnsweredUids.size() != answered || remoteDraftUids.size() != draft) { // Something is wrong // Sync again synchronizeHeaderlist(); return; } syncMailboxInfo(flagStatus); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
protected void setFlags(Flags[] flagsList) throws Exception { for (int i = 0; i < flagsList.length; i++) { IMAPFlags flags = (IMAPFlags) flagsList[i]; Integer uid = (Integer) flags.getUid(); IColumbaHeader header = getHeaderList().get(uid); Flags localFlags = header.getFlags(); localFlags.setFlags(flags.getFlags()); // Junk flag header.getAttributes().put("columba.spam", Boolean.valueOf(flags.get(IMAPFlags.JUNK))); getHeaderList().update(uid, header); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public MimeTree getMimePartTree(Object uid) throws Exception { MimeTree tree = IMAPCache.getInstance().getMimeTree(this, uid); if (tree == null) { tree = getServer().getMimeTree(uid, this); IMAPCache.getInstance().addMimeTree(this, uid, tree); } return tree; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void innerCopy(IMailbox destiny, Object[] uids) throws Exception { IMAPFolder destFolder = (IMAPFolder) destiny; Object[] destUids = getServer().copy(destFolder, uids, this); if (destUids.length < uids.length) { LOG .warning("Some messages could not be copied because they do not exist anymore!"); } // Check if maybe no message at all got copied // In this case we are finished here if (destUids.length == 0) return; if (destFolder.mailboxSyncEnabled) { // Trigger Synchronization CommandProcessor.getInstance().addOp( new CheckForNewMessagesCommand( new MailFolderCommandReference(destFolder))); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void markMessage(Object[] uids, int variant) throws Exception { getServer().markMessage(uids, variant, this); super.markMessage(uids, variant); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void expungeFolder() throws Exception { try { getServer().expunge(this); super.expungeFolder(); } catch (Exception e) { throw e; } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public IColumbaHeader getMessageHeader(Object uid) throws Exception { return getHeaderList().get(uid); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void addSubfolder(IMailFolder child) throws Exception { if (child instanceof IMAPFolder) { getServer().createMailbox(child.getName(), this); } super.addSubfolder(child); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { PassiveHeaderParserInputStream withHeaderInputStream = new PassiveHeaderParserInputStream( in); IMAPFlags imapFlags = new IMAPFlags(flags.getFlags()); Integer uid = getServer() .append(withHeaderInputStream, imapFlags, this); // Since JUNK is a non-system Flag we have to set it with // an addtitional STORE command if (((Boolean) attributes.get("columba.spam")).booleanValue()) { imapFlags.set(IMAPFlags.JUNK, true); getServer().setFlags(new Object[] { uid }, imapFlags, this); } if (mailboxSyncEnabled) { // Trigger Synchronization CommandProcessor.getInstance().addOp( new CheckForNewMessagesCommand( new MailFolderCommandReference(this))); } return uid; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public Header getHeaderFields(Object uid, String[] keys) throws Exception { // get header with UID IColumbaHeader header = getHeaderList().get(uid); if (header == null) return new Header(); // cached headerfield list List cachedList = Arrays.asList(CachedHeaderfields .getDefaultHeaderfields()); List keyList = new ArrayList(Arrays.asList(keys)); ListTools.substract(keyList, cachedList); if (keyList.size() > 0) { return getServer().getHeaders(uid, keys, this); } else { return (Header) header.getHeader().clone(); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public InputStream getMessageSourceStream(Object uid) throws Exception { return getServer().getMessageSourceStream(uid, this); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address) throws Exception { return getServer().getMimePartSourceStream(uid, address, this); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address) throws Exception { InputStream result = IMAPCache.getInstance().getMimeBody(this, uid, address); if (result == null) { LOG.fine("Cache miss - fetching from server"); result = IMAPCache.getInstance().addMimeBody(this, uid, address, getServer().getMimePartBodyStream(uid, address, this)); } return result; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public Object addMessage(InputStream in) throws Exception { PassiveHeaderParserInputStream withHeaderInputStream = new PassiveHeaderParserInputStream( in); Integer uid = getServer().append(withHeaderInputStream, this); if (mailboxSyncEnabled) { // Trigger Synchronization CommandProcessor.getInstance().addOp( new CheckForNewMessagesCommand( new MailFolderCommandReference(this))); } return uid; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public Header getAllHeaderFields(Object uid) throws Exception { return getServer().getAllHeaders(uid, this); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void updateFlag(IMAPFlags flag) throws Exception, CommandCancelledException { if (getServer().isSelected(this)) { Integer uid = new Integer(getServer().fetchUid( new SequenceSet(flag.getIndex()), this)); flag.setUid(uid); setFlags(new Flags[] { flag }); } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void save() throws Exception { super.save(); if (headerList != null) headerList.persist(); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
void fetchDone() throws IOException, CommandCancelledException, IMAPException, Exception { MailboxStatus status = getServer().getStatus(this); List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); // Number of deleted messages is computed from exists on imap and local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } // Apply filter if enabled ImapItem item = getServer().getItem(); boolean applyFilter = item.getBooleanWithDefault( "automatically_apply_filter", false); // if "automatically apply filter" is selected & there // are // new // messages if (applyFilter) { CommandProcessor.getInstance() .addOp( new ApplyFilterCommand( new MailFolderCommandReference(this))); } // Reenable Updating the mailbox mailboxSyncEnabled = true; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
protected void syncFolder(AbstractFolder parent, String name, ListInfo info) throws Exception { if ((name.indexOf(server.getDelimiter()) != -1) && (name.indexOf(server.getDelimiter()) != (name.length() - 1))) { // delimiter found // -> recursively create all necessary folders to create // -> the final folder String subchild = name.substring(0, name.indexOf(server .getDelimiter())); AbstractFolder subFolder = (AbstractFolder) parent .findChildWithName(subchild, false, IMAPFolder.class); // if folder doesn't exist already if (subFolder == null) { subFolder = new IMAPFolder(subchild, "IMAPFolder", getParentPath()); parent.add(subFolder); parent.getConfiguration().getRoot().addElement( subFolder.getConfiguration().getRoot()); FolderTreeModel.getInstance().insertNodeInto(subFolder, parent, parent.getIndex(subFolder)); ((IMAPFolder) subFolder).existsOnServer = true; subFolder.getConfiguration().setString("selectable", "false"); // this is the final folder // subFolder = addIMAPChildFolder(parent, info, subchild); } else { if (!((IMAPFolder) subFolder).existsOnServer) { ((IMAPFolder) subFolder).existsOnServer = true; subFolder.getConfiguration().setString("selectable", "false"); } } // recursively go on syncFolder(subFolder, name.substring(name.indexOf(server .getDelimiter()) + server.getDelimiter().length()), info); } else { // no delimiter found // -> this is already the final folder // if folder doesn't exist already AbstractFolder subFolder = (AbstractFolder) parent .findChildWithName(name, false, IMAPFolder.class); if (subFolder == null) { subFolder = new IMAPFolder(name, "IMAPFolder", getParentPath()); parent.add(subFolder); parent.getConfiguration().getRoot().addElement( subFolder.getConfiguration().getRoot()); FolderTreeModel.getInstance().insertNodeInto(subFolder, parent, parent.getIndex(subFolder)); } ((IMAPFolder) subFolder).existsOnServer = true; // Check the Noselect flag if (info.getParameter(ListInfo.NOSELECT)) { subFolder.getConfiguration().setString("selectable", "false"); } else { subFolder.getConfiguration().setString("selectable", "true"); } // Check the Noinferior flag if (info.getParameter(ListInfo.NOINFERIORS) && info.getDelimiter() != null) { subFolder.getConfiguration().setString("noinferiors", "true"); } else { subFolder.getConfiguration().setString("noinferiors", "false"); } } }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
private boolean removeNotMarkedSubfolders(AbstractFolder parent) throws Exception { AbstractFolder child; // first remove all subfolders recursively for (int i = 0; i < parent.getChildCount(); i++) { child = (AbstractFolder) parent.getChildAt(i); if (child instanceof IMAPFolder) { if (removeNotMarkedSubfolders(child)) { // A child got removed -> stay at this position to // get the next i--; } } } // maybe remove this folder if (parent instanceof IMAPFolder) { if (!((IMAPFolder) parent).existsOnServer) { FolderTreeModel.getInstance().removeNodeFromParent(parent); parent.removeFolder(); return true; } } return false; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public void syncSubscribedFolders() throws Exception { // first clear all flags markAllSubfoldersAsExistOnServer(this, false); IMAPFolder inbox = (IMAPFolder) this.findChildWithName("INBOX", false); inbox.existsOnServer = true; try { // create and tag all subfolders on server ListInfo[] listInfo = getServer().fetchSubscribedFolders(); for (int i = 0; i < listInfo.length; i++) { ListInfo info = listInfo[i]; LOG.fine("delimiter=" + getServer().getDelimiter()); String folderPath = info.getName(); syncFolder(this, folderPath, info); } } catch (Exception ex) { ex.printStackTrace(); } // This fixes the strange behaviour of the courier imapserver // which sets the \Noselect flag on INBOX inbox.getConfiguration().setString("selectable", "true"); removeNotMarkedSubfolders(this); findSpecialFolders(); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public Object[] searchMessages(Filter filter, Object[] uids) throws Exception { return null; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public Object[] searchMessages(Filter filter) throws Exception { return null; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public void addSubfolder(IMailFolder child) throws Exception { if (child instanceof IMAPFolder) { getServer().createMailbox(child.getName(), null); } super.addSubfolder(child); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public void setInbox(IMAPFolder inbox) throws Exception { super.addSubfolder(inbox); super.add(inbox); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
public void save() throws Exception { LOG.info("Logout from IMAPServer " + getName()); getServer().logout(); }
// in java/org/columba/mail/folder/imap/FetchMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); IMAPFolder imapFolder = (IMAPFolder) r.getSourceFolder(); worker.setProgressBarMaximum(newMessages); worker.setProgressBarValue(fetchedMessages); int fetched = imapFolder.fetchNewMessages(offset + fetchedMessages).size(); fetchedMessages += fetched; worker.setProgressBarValue(fetchedMessages); if( worker.cancelled()) { return; } if(fetched > 0 && fetchedMessages < newMessages) { CommandProcessor.getInstance().addOp( new FetchMessagesCommand( new MailFolderCommandReference(imapFolder), newMessages, offset, fetchedMessages)); } else { // Trigger any pending Flag syncs imapFolder.fetchDone(); } }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // register for status events ((StatusObservableImpl) imapFolder.getObservable()).setWorker(worker); // Find old numbers int total = imapFolder.getMessageFolderInfo().getExists(); // check for new headers Object[] uids = new Object[0]; try { uids = imapFolder.synchronizeHeaderlist(); } catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); } // Get the new numbers int newTotal = imapFolder.getMessageFolderInfo().getExists(); // fire new message event to interested listeners if (triggerNotification && (newTotal != total) ) { if( ((IMAPRootFolder)imapFolder.getRootFolder()).getAccountItem().getImapItem().getBoolean("enable_sound")) { // create reference of newly arrived messages IMailFolderCommandReference ref = new MailFolderCommandReference(imapFolder, uids); // fire event MailCheckingManager.getInstance().fireNewMessageArrived(ref); } } }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
public void updateGUI() throws Exception { // Reenable the action if( action != null) action.setEnabled(true); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void save() throws Exception { saveMessageFolderInfo(); if (getSearchEngine() != null) { getSearchEngine().save(); } }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
protected void updateMailFolderInfo(Flags flags, int variant) throws Exception { boolean updated = false; if (flags == null) { return; } try { switch (variant) { case MarkMessageCommand.MARK_AS_READ: { if (flags.getRecent()) { getMessageFolderInfo().decRecent(); updated = true; } if (!flags.getSeen()) { getMessageFolderInfo().decUnseen(); updated = true; } break; } case MarkMessageCommand.MARK_AS_UNREAD: { if (flags.getSeen()) { getMessageFolderInfo().incUnseen(); updated = true; } break; } case MarkMessageCommand.MARK_AS_EXPUNGED: { if (!flags.getSeen()) { getMessageFolderInfo().decUnseen(); updated = true; } if (flags.getRecent()) { getMessageFolderInfo().decRecent(); updated = true; } break; } case MarkMessageCommand.MARK_AS_RECENT: { if (!flags.getRecent()) { getMessageFolderInfo().incRecent(); updated = true; } break; } case MarkMessageCommand.MARK_AS_NOTRECENT: { if (flags.getRecent()) { getMessageFolderInfo().decRecent(); updated = true; } break; } } } catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); } // update treenode if (updated) fireFolderPropertyChanged(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
protected void markMessage(Object uid, int variant) throws Exception { IColumbaHeader header = getHeaderList().get(uid); Flags flags = header.getFlags(); updateMailFolderInfo(flags, variant); if (flags == null) { return; } Flags oldFlags = (Flags) flags.clone(); switch (variant) { case MarkMessageCommand.MARK_AS_READ: { flags.setSeen(true); flags.setRecent(false); break; } case MarkMessageCommand.MARK_AS_UNREAD: { flags.setSeen(false); break; } case MarkMessageCommand.MARK_AS_FLAGGED: { flags.setFlagged(true); break; } case MarkMessageCommand.MARK_AS_UNFLAGGED: { flags.setFlagged(false); break; } case MarkMessageCommand.MARK_AS_EXPUNGED: { flags.setSeen(true); flags.setRecent(false); flags.setDeleted(true); break; } case MarkMessageCommand.MARK_AS_UNEXPUNGED: { flags.setDeleted(false); break; } case MarkMessageCommand.MARK_AS_ANSWERED: { flags.setAnswered(true); break; } case MarkMessageCommand.MARK_AS_UNANSWERED: { flags.setAnswered(false); break; } case MarkMessageCommand.MARK_AS_SPAM: { header.getAttributes().put("columba.spam", Boolean.TRUE); break; } case MarkMessageCommand.MARK_AS_NOTSPAM: { header.getAttributes().put("columba.spam", Boolean.FALSE); break; } case MarkMessageCommand.MARK_AS_DRAFT: { flags.setDraft(true); break; } case MarkMessageCommand.MARK_AS_NOTDRAFT: { flags.setDraft(false); break; } case MarkMessageCommand.MARK_AS_RECENT: { flags.setRecent(true); break; } case MarkMessageCommand.MARK_AS_NOTRECENT: { flags.setRecent(false); break; } } setChanged(true); header.setFlags(flags); getHeaderList().update(uid, header); fireMessageFlagChanged(uid, oldFlags, variant); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void markMessage(Object[] uids, int variant) throws Exception { for (int i = 0; i < uids.length; i++) { if (exists(uids[i])) { markMessage(uids[i], variant); } } }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void expungeFolder() throws Exception { // get list of all uids Object[] uids = getUids(); for (int i = 0; i < uids.length; i++) { Object uid = uids[i]; if (uid == null) { continue; } // if message with uid doesn't exist -> skip if (!exists(uid)) { LOG.info("uid " + uid + " doesn't exist"); continue; } if (getFlags(uid).getDeleted()) { // move message to trash if marked as expunged LOG.info("removing uid=" + uid); // remove message removeMessage(uid); } } }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void removeMessage(Object uid) throws Exception { // remove from header-list IColumbaHeader header = getHeaderList().remove(uid); // notify listeners fireMessageRemoved(uid, header.getFlags()); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public boolean exists(Object uid) throws Exception { return getHeaderList().exists(uid); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Object[] getUids() throws Exception { return getHeaderList().getUids(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public void setAttribute(Object uid, String key, Object value) throws Exception { IColumbaHeader header = getHeaderList().get(uid); Flags flags = header.getFlags(); if (flags == null) { return; } Flags oldFlags = (Flags) flags.clone(); header.getAttributes().put(key, value); getHeaderList().update(uid, header); // set folder changed flag // -> if not, the header cache wouldn't notice that something // -> has changed. And wouldn't save the changes. setChanged(true); fireMessageFlagChanged(uid, oldFlags, 0); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Flags getFlags(Object uid) throws Exception { return getHeaderList().get(uid).getFlags(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Attributes getAttributes(Object uid) throws Exception { return getHeaderList().get(uid).getAttributes(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Object getAttribute(Object uid, String key) throws Exception { return getHeaderList().get(uid).getAttributes().get(key); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Object[] searchMessages(IFilter filter, Object[] uids) throws Exception { // if there is no search engine, try the default one if (getSearchEngine() == null) return (new DefaultSearchEngine(this)).searchMessages(filter, uids); return getSearchEngine().searchMessages(filter, uids); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
public Object[] searchMessages(IFilter filter) throws Exception { // if there is no search engine, try the default one if (getSearchEngine() == null) return (new DefaultSearchEngine(this)).searchMessages(filter); return getSearchEngine().searchMessages(filter); }
// in java/org/columba/mail/folder/mailboximport/MHImporter.java
public void importMailboxFile(File directory, IWorkerStatusController worker, IMailbox destFolder) throws Exception { File[] list = directory.listFiles(MHMessageFileFilter.getInstance()); for (int i = 0; i < list.length; i++) { File file = list[i]; String name = file.getName(); if (name.equals(".") || name.equals("..")) { continue; } if (name.startsWith(".")) { continue; } if ((file.exists()) && (file.length() > 0)) { importMessage(file, worker); } } }
// in java/org/columba/mail/folder/mailboximport/MHImporter.java
protected void importMessage(File file, IWorkerStatusController worker) throws Exception { StringBuffer strbuf = new StringBuffer(); BufferedReader in = new BufferedReader(new FileReader(file)); String str; strbuf = new StringBuffer(); while ((str = in.readLine()) != null) { strbuf.append(str + "\n"); } in.close(); saveMessage(strbuf.toString(), worker, getDestinationFolder()); }
// in java/org/columba/mail/folder/mailboximport/MozillaImporter.java
public void importMailboxFile(File file, IWorkerStatusController worker, IMailbox destFolder) throws Exception { int count = 0; boolean sucess = false; StringBuffer strbuf = new StringBuffer(); BufferedReader in = new BufferedReader(new FileReader(file)); String str; // parse line by line while ((str = in.readLine()) != null) { // if user cancelled task exit immediately if (worker.cancelled()) { return; } // if line doesn't start with "From" or line length is 0 // -> save everything in StringBuffer if (!str.startsWith("From ") || str.length() == 0) { strbuf.append(str + "\n"); } else { // line contains "-" (mozilla mbox style) // -> import message in Columba if (str.indexOf("-") != -1) { if (strbuf.length() != 0) { // found new message saveMessage(strbuf.toString(), worker, getDestinationFolder()); count++; sucess = true; } strbuf = new StringBuffer(); } else { strbuf.append(str + "\n"); } } } // save last message, because while loop aborted before being able to // save message if (sucess && strbuf.length() > 0) { saveMessage(strbuf.toString(), worker, getDestinationFolder()); } in.close(); }
// in java/org/columba/mail/folder/mailboximport/EvolutionImporter.java
public void importMailboxFile(File file, IWorkerStatusController worker, IMailbox destFolder) throws Exception { int count = 0; boolean sucess = false; StringBuffer strbuf = new StringBuffer(); BufferedReader in = new BufferedReader(new FileReader(file)); String str; // parse line by line while ((str = in.readLine()) != null) { // if user cancelled task exit immediately if (worker.cancelled() == true) { return; } // if line doesn't start with "From" or line length is 0 // -> save everything in StringBuffer if ((str.startsWith("From ") == false) || (str.length() == 0)) { strbuf.append(str + "\n"); } else { // line contains "@" (evolution mbox style) or // -> import message in Columba if (str.indexOf("@") != -1) { if (strbuf.length() != 0) { // found new message saveMessage(strbuf.toString(), worker, getDestinationFolder()); count++; sucess = true; } strbuf = new StringBuffer(); } else { strbuf.append(str + "\n"); } } } // save last message, because while loop aborted before being able to // save message if ((sucess == true) && (strbuf.length() > 0)) { saveMessage(strbuf.toString(), worker, getDestinationFolder()); } in.close(); }
// in java/org/columba/mail/folder/mailboximport/AbstractMailboxImporter.java
protected void saveMessage(String rawString, IWorkerStatusController worker, IMailbox destFolder) throws Exception { /* * *20031231, karlpeder* Using InputStream instead of rawString * directly. Ensures size is set correctly by addMessage (bug #843657) */ SourceInputStream in = new SourceInputStream(new CharSequenceSource( rawString)); destFolder.addMessage(in); in.close(); counter++; //TODO (@author fdietz): i18n worker.setDisplayText("Importing messages: " + getCount()); }
// in java/org/columba/mail/folder/mailboximport/PegasusMailImporter.java
public void importMailboxFile(File file, IWorkerStatusController worker, IMailbox destFolder) throws Exception { int count = 0; boolean sucess = false; StringBuffer strbuf = new StringBuffer(); BufferedReader in = new BufferedReader(new FileReader(file)); String str; // parse line by line while ((str = in.readLine()) != null) { // if user cancelled task exit immediately if (worker.cancelled() == true) { return; } // if line doesn't start with "From ???@???" or line length is 0 // -> save everything in StringBuffer if ((str.startsWith("From ???@???") == false) || (str.length() == 0)) { strbuf.append(str + "\n"); } else { if (strbuf.length() != 0) { // found new message saveMessage(strbuf.toString(), worker, getDestinationFolder()); count++; sucess = true; } strbuf = new StringBuffer(); } } // save last message, because while loop aborted before being able to // save message if ((sucess == true) && (strbuf.length() > 0)) { saveMessage(strbuf.toString(), worker, getDestinationFolder()); } in.close(); }
// in java/org/columba/mail/folder/mailboximport/MBOXImporter.java
public void importMailboxFile(File file, IWorkerStatusController worker, IMailbox destFolder) throws Exception { FileSource mboxSource = new FileSource(file); MboxMessage[] messages = MboxParser.parseMbox(mboxSource); mboxSource.close(); LOG.info("Found " + messages.length + " messages in MBOX file"); //$NON-NLS-1$ //$NON-NLS-2$ SteerableInputStream in = new SteerableInputStream(new FileInputStream(file)); worker.setProgressBarMaximum(messages.length); for( int i=0; i<messages.length && !worker.cancelled(); i++) { worker.setProgressBarValue(i); in.setPosition(messages[i].getStart()); in.setLengthLeft(messages[i].getLength()); destFolder.addMessage(in); // this is necessary to do! counter++; } in.finalClose(); }
// in java/org/columba/mail/folder/outbox/OutboxFolder.java
public SendableMessage getSendableMessage(Object uid) throws Exception { ColumbaMessage message = getMessage(uid); SendableMessage sendableMessage = new SendableMessage(message); return sendableMessage; }
// in java/org/columba/mail/folder/outbox/OutboxFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { Object uid = super.addMessage(in, attributes, flags); setAttribute(uid, "columba.recipients", attributes .get("columba.recipients")); return uid; }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public void removeMessage(Object uid) throws Exception { MboxMessage message = (MboxMessage) messages.remove(uid); if (uid.equals(largestUid)) { FileChannel channel = new RandomAccessFile(mboxFile, "rw") .getChannel(); channel .truncate(mboxFile.length() - (message.getLength() + FROMLINE.length() + TERMLINE.length)); channel.close(); } else { int intUid = ((Integer) uid).intValue(); deleteFilePart(mboxFile, message.getStart() - FROMLINE.length(), message.getLength() + FROMLINE.length() + TERMLINE.length); // update message starts of following messages Enumeration uids = messages.keys(); while (uids.hasMoreElements()) { Integer actUid = (Integer) uids.nextElement(); if (actUid.intValue() > intUid) { MboxMessage m = (MboxMessage) messages.get(actUid); m .setStart(m.getStart() - (message.getLength() + FROMLINE.length() + TERMLINE.length)); } } } }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public Source getMessageSource(Object uid) throws Exception { if( ! exists(uid)) throw new FolderInconsistentException(); MboxMessage message = (MboxMessage) messages.get(uid); FileInputStream in = new FileInputStream(mboxFile); in.skip(message.getStart()); File tempFile = File.createTempFile("mbox_message", ".tmp"); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); StreamUtils.streamCopy(in, out, (int) message.getLength()); in.close(); out.close(); return new FileSource(tempFile); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public InputStream getMessageStream(Object uid) throws Exception { MboxMessage message = (MboxMessage) messages.get(uid); FileInputStream in = new FileInputStream(mboxFile); in.skip(message.getStart()); File tempFile = File.createTempFile("mbox_message", ".tmp"); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); StreamUtils.streamCopy(in, out, (int) message.getLength()); in.close(); out.close(); return new FileInputStream(tempFile); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public void saveMessage(Object uid, InputStream source) throws Exception { FileOutputStream out = new FileOutputStream(mboxFile, true); out.write(FROMLINE.getBytes("US-ASCII")); long pos = mboxFile.length(); long length = StreamUtils.streamCopy(source, out); out.write(TERMLINE); out.close(); messages.put(uid, new MboxMessage(uid, pos, length)); largestUid = uid; }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public boolean exists(Object uid) throws Exception { return messages.containsKey(uid); }
// in java/org/columba/mail/folder/mbox/CachedMboxFolder.java
public void save() throws Exception { super.save(); ((MboxDataStorage)getDataStorageInstance()).save(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public boolean exists(Object uid) throws Exception { return headerList.exists(uid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public IHeaderList getHeaderList() throws Exception { if (!active) { activate(); } else { revalidateSearch(); } return headerList; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void addSearchToHistory() throws Exception { VirtualFolder searchFolder = (VirtualFolder) FolderTreeModel .getInstance().getFolder("106"); // only create new subfolders if we used the default "Search Folder" if (!searchFolder.equals(this)) { return; } // (tstich) reduced to 3 because all need to be // search when activated on startup // we only want 3 subfolders // -> if more children exist remove them if (searchFolder.getChildCount() >= 3) { AbstractMessageFolder child = (AbstractMessageFolder) searchFolder .getChildAt(0); child.removeFolder(); } // create new subfolder String name = "search result"; VirtualFolder newFolder = null; try { newFolder = (VirtualFolder) FolderFactory.getInstance() .createChild(searchFolder, name, "VirtualFolder"); } catch (Exception ex) { ex.printStackTrace(); return; } // if creation failed if (newFolder == null) { return; } // copy all properties to the subfolder int uid = getConfiguration().getInteger("property", "source_uid"); boolean includes = getConfiguration().getBoolean("property", "include_subfolders"); IFolderItem newFolderItem = newFolder.getConfiguration(); newFolderItem.setInteger("property", "source_uid", uid); newFolderItem.setBoolean("property", "include_subfolders", includes); newFolderItem.getElement("filter").removeFromParent(); newFolderItem.getRoot().addElement( (XmlElement) getConfiguration().getElement("filter").clone()); MailFilterCriteria newc = new MailFilterCriteria(new Filter( getConfiguration().getElement("filter")).getFilterRule().get(0)); /* * FilterCriteria c = new * Filter(getConfiguration().getElement("filter")) .getFilterRule() * .get( 0); * * FilterCriteria newc = new * Filter(getConfiguration().getElement("filter")) .getFilterRule() * .get( 0); newc.setCriteria(c.getCriteriaString()); * newc.setHeaderItem(c.getHeaderItemString()); * newc.setPattern(c.getPattern()); newc.setType(c.getType()); */ // lets find a good name for our new vfolder StringBuffer buf = new StringBuffer(); if (newc.getTypeString().equalsIgnoreCase("flags")) { LOG.info("flags found"); //$NON-NLS-1$ buf.append(newc.getTypeString()); buf.append(" ("); buf.append(newc.getCriteriaString()); buf.append(" "); buf.append(newc.getPatternString()); buf.append(")"); } else if (newc.getTypeString().equalsIgnoreCase("custom headerfield")) { buf.append(newc.getHeaderfieldString()); buf.append(" ("); buf.append(newc.getCriteriaString()); buf.append(" "); buf.append(newc.getPatternString()); buf.append(")"); } else { buf.append(newc.getTypeString()); buf.append(" ("); buf.append(newc.getCriteriaString()); buf.append(" "); buf.append(newc.getPatternString()); buf.append(")"); } newFolder.setName(buf.toString()); // update tree-view FolderTreeModel.getInstance().nodeStructureChanged(searchFolder); // update tree-node (for renaming the new folder) FolderTreeModel.getInstance().nodeChanged(newFolder); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
protected void applySearch() throws Exception { IMailFolder srcFolder = getSourceFolder(); XmlElement filter = getConfiguration().getRoot().getElement("filter"); if (filter == null) { filter = new XmlElement("filter"); filter.addAttribute("description", "new filter"); filter.addAttribute("enabled", "true"); XmlElement rules = new XmlElement("rules"); rules.addAttribute("condition", "match_all"); XmlElement criteria = new XmlElement("criteria"); criteria.addAttribute("type", "Subject"); criteria.addAttribute("headerfield", "Subject"); criteria.addAttribute("criteria", "contains"); criteria.addAttribute("pattern", "pattern"); rules.addElement(criteria); filter.addElement(rules); getConfiguration().getRoot().addElement(filter); } Filter f = new Filter(getConfiguration().getRoot().getElement("filter")); applySearch(srcFolder, f); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
protected void applySearch(IMailFolder parent, Filter filter) throws Exception { if (parent instanceof IMailbox) { IMailbox folder = (IMailbox) parent; // if the parent is a virtual folder the search cannot be applied directly // look for the correct uids by finding the first non virtual folder Object[] resultUids = null; if (folder instanceof VirtualFolder) resultUids = folder.searchMessages(filter, folder.getUids()); else resultUids = folder.searchMessages(filter); if (resultUids != null) { for (int i = 0; i < resultUids.length; i++) { addFilteredMessage(resultUids[i], folder); } } } if (isRecursive()) { for (Enumeration e = parent.children(); e.hasMoreElements();) { IMailFolder folder = (IMailFolder) e.nextElement(); if (folder instanceof VirtualFolder) { continue; } applySearch(folder, filter); } } }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
private void addFilteredMessage(Object resultUid, IMailbox folder) throws Exception { String[] headerfields = CachedHeaderfields.getDefaultHeaderfields(); ColumbaHeader header = null; if (folder instanceof VirtualFolder) { // get source folder reference VirtualHeader virtualHeader = ((VirtualFolder) folder) .getVirtualHeader(resultUid); IMailbox sourceFolder = virtualHeader.getSrcFolder(); Object sourceUid = virtualHeader.getSrcUid(); Header h = sourceFolder.getHeaderFields(sourceUid, headerfields); header = new ColumbaHeader(h); header.setAttributes(sourceFolder .getAttributes(sourceUid)); header.setFlags(sourceFolder.getFlags(sourceUid)); Object uid = add((ColumbaHeader) header, sourceFolder, sourceUid); fireMessageAdded(uid, getFlags(uid)); } else { if (!folder.exists(resultUid)) return; Header h = folder.getHeaderFields(resultUid, headerfields); header = new ColumbaHeader(h); header.setAttributes(folder .getAttributes(resultUid)); header.setFlags(folder.getFlags(resultUid)); Object uid = add(header, folder, resultUid); fireMessageAdded(uid, getFlags(uid)); } }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object add(ColumbaHeader header, IMailbox source, Object uid) throws Exception { Object newUid = generateNextUid(); // VirtualMessage m = new VirtualMessage(f, uid, index); VirtualHeader virtualHeader = new VirtualHeader((ColumbaHeader) header, source, uid); virtualHeader.setVirtualUid(newUid); headerList.add(virtualHeader, newUid); return newUid; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void markMessage(Object[] uids, int variant) throws Exception { List list = new ArrayList(); // Check if all uids are still exisiting for (Object uid : uids) { if (exists(uid)) { list.add(uid); } } if (list.size() == 0) return; Collections.sort(list, new Comparator() { public int compare(Object o1, Object o2) { VirtualHeader h = (VirtualHeader) headerList.get(o1); String oV1 = h.getSrcFolder().getId(); h = (VirtualHeader) headerList.get(o2); String oV2 = h.getSrcFolder().getId(); return oV1.compareTo(oV2); } }); List folderUids = new ArrayList(uids.length); Iterator it = list.iterator(); VirtualHeader h = (VirtualHeader) headerList.get(it.next()); ; folderUids.add(h.getSrcUid()); IMailbox srcFolder = h.getSrcFolder(); while (it.hasNext()) { h = (VirtualHeader) headerList.get(it.next()); if (h.getSrcFolder() == srcFolder) { folderUids.add(h.getSrcUid()); } else { srcFolder.markMessage(folderUids.toArray(), variant); // change to new folder srcFolder = h.getSrcFolder(); folderUids.clear(); folderUids.add(h.getSrcUid()); } } srcFolder.markMessage(folderUids.toArray(), variant); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void removeMessage(Object uid) throws Exception { // get source folder reference VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); // remove from source folder sourceFolder.removeMessage(sourceUid); // remove from virtual folder headerList.remove(uid); // notify listeners fireMessageRemoved(uid, getFlags(uid)); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public MimeTree getMimePartTree(Object uid) throws Exception { if (!exists(uid)) return null; VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getMimePartTree(sourceUid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object[] searchMessages(Filter filter, Object[] uids) throws Exception { if (!active) { activate(); } else { revalidateSearch(); } if (uids.length == 0) return new Object[0]; List list = new ArrayList(Arrays.asList(uids)); Collections.sort(list, new Comparator() { public int compare(Object o1, Object o2) { VirtualHeader h = (VirtualHeader) headerList.get(o1); String oV1 = h.getSrcFolder().getId(); h = (VirtualHeader) headerList.get(o2); String oV2 = h.getSrcFolder().getId(); return oV1.compareTo(oV2); } }); List resultList = new ArrayList(); List virtualHeader = new ArrayList(); VirtualHeader h = (VirtualHeader) headerList.get(list.get(0)); IMailbox sourceFolder = h.getSrcFolder(); virtualHeader.add(h); for (int i = 1; i < uids.length; i++) { h = (VirtualHeader) headerList.get(list.get(i)); if (h.getSrcFolder() != sourceFolder || i == uids.length - 1) { // Now we can search this folder since no mail from // this folder will come in the list Object[] srcUids = new Object[virtualHeader.size()]; // Create a src uid array for (int j = 0; j < virtualHeader.size(); j++) { srcUids[j] = ((VirtualHeader) virtualHeader.get(j)) .getSrcUid(); } // search the src folder with the src uid array Object[] resultUids = sourceFolder.searchMessages(filter, srcUids); // Convert the src uids back to virtual uids if ((resultUids != null) && (resultUids.length > 0)) { Object[] virtualUids = new Object[resultUids.length]; for (int j = 0; j < resultUids.length; j++) { virtualUids[j] = srcUidToVirtualUid(sourceFolder, resultUids[j]); } // Add all found virtual uids to the result resultList.addAll(Arrays.asList(virtualUids)); } virtualHeader.clear(); } // Add this header to the list for later searching virtualHeader.add(h); sourceFolder = h.getSrcFolder(); } if (virtualHeader.size() > 0) { // Now we can search this folder since no mail from // this folder will come in the list Object[] srcUids = new Object[virtualHeader.size()]; // Create a src uid array for (int j = 0; j < virtualHeader.size(); j++) { srcUids[j] = ((VirtualHeader) virtualHeader.get(j)).getSrcUid(); } // search the src folder with the src uid array Object[] resultUids = sourceFolder.searchMessages(filter, srcUids); // Convert the src uids back to virtual uids if ((resultUids != null) && (resultUids.length > 0)) { Object[] virtualUids = new Object[resultUids.length]; for (int j = 0; j < resultUids.length; j++) { virtualUids[j] = srcUidToVirtualUid(sourceFolder, resultUids[j]); } // Add all found virtual uids to the result resultList.addAll(Arrays.asList(virtualUids)); } virtualHeader.clear(); } return resultList.toArray(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object[] searchMessages(Filter filter) throws Exception { return searchMessages(filter, getUids()); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object[] getUids() throws Exception { if (!active) { activate(); } return headerList.getUids(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object addMessage(InputStream in) throws Exception { // not supported return null; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object getAttribute(Object uid, String key) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getAttribute(sourceUid, key); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Flags getFlags(Object uid) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getFlags(sourceUid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Header getHeaderFields(Object uid, String[] keys) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getHeaderFields(sourceUid, keys); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public InputStream getMessageSourceStream(Object uid) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getMessageSourceStream(sourceUid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getMimePartBodyStream(sourceUid, address); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getMimePartSourceStream(sourceUid, address); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void innerCopy(IMailbox destFolder, Object[] uids) throws Exception { List list = new ArrayList(); // Check if all uids are still exisiting for (Object uid : uids) { if (exists(uid)) { list.add(uid); } } if (list.size() == 0) return; Collections.sort(list, new Comparator() { public int compare(Object o1, Object o2) { VirtualHeader h = (VirtualHeader) headerList.get(o1); String oV1 = h.getSrcFolder().getId(); h = (VirtualHeader) headerList.get(o2); String oV2 = h.getSrcFolder().getId(); return oV1.compareTo(oV2); } }); List folderUids = new ArrayList(uids.length); Iterator it = list.iterator(); VirtualHeader h = (VirtualHeader) headerList.get(it.next()); ; folderUids.add(h.getSrcUid()); IMailbox srcFolder = h.getSrcFolder(); while (it.hasNext()) { h = (VirtualHeader) headerList.get(it.next()); if (h.getSrcFolder() == srcFolder) { folderUids.add(h.getSrcUid()); } else { srcFolder.innerCopy(destFolder, folderUids.toArray()); // change to new folder srcFolder = h.getSrcFolder(); folderUids.clear(); folderUids.add(h.getSrcUid()); } } // Copy the rest srcFolder.innerCopy(destFolder, folderUids.toArray()); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void setAttribute(Object uid, String key, Object value) throws Exception { // get header with UID /* * ColumbaHeader header = (ColumbaHeader) headerList.get(uid); * header.getAttributes().put(key, value); */ VirtualHeader h = (VirtualHeader) headerList.get(uid); h.getAttributes().put(key, value); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); sourceFolder.setAttribute(sourceUid, key, value); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Attributes getAttributes(Object uid) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getAttributes(sourceUid); /* * if (getHeaderList().containsKey(uid)) { return * getHeaderList().get(uid).getAttributes(); } else { return null; } */ }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { // not supported return null; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public Header getAllHeaderFields(Object uid) throws Exception { VirtualHeader h = (VirtualHeader) headerList.get(uid); IMailbox sourceFolder = h.getSrcFolder(); Object sourceUid = h.getSrcUid(); return sourceFolder.getAllHeaderFields(sourceUid); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void expungeFolder() throws Exception { IMailFolder srcFolder = getSourceFolder(); boolean isInclude = Boolean.valueOf( getConfiguration().getString("property", "include_subfolders")) .booleanValue(); if (isInclude) { recursiveExpunge(srcFolder); } else { if (srcFolder instanceof IMailbox) ((IMailbox) srcFolder).expungeFolder(); } }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
private void recursiveExpunge(IMailFolder srcFolder) throws Exception { IMailFolder folder; if (srcFolder instanceof IMailbox) ((IMailbox) srcFolder).expungeFolder(); for (Enumeration e = srcFolder.children(); e.hasMoreElements();) { folder = (IMailFolder) e.nextElement(); if (folder instanceof VirtualFolder) { continue; } recursiveExpunge(folder); } }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void activate() throws Exception { if (active) return; LOG.fine("Activating virtual folder " + getName()); getMessageFolderInfo().reset(); applySearch(); registerWithSource(); active = true; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
public void removeFolder() throws Exception { if (active) { deactivate(); } super.removeFolder(); }
// in java/org/columba/mail/folder/virtual/ActivateVirtualFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { VirtualFolder vFolder = (VirtualFolder) ((IFolderCommandReference) getReference()) .getSourceFolder(); worker.setDisplayText(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", "activate_vfolder"), new Object[] { vFolder.getName() })); vFolder.activate(); }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public void sync() throws Exception { // method is not needed by IMAP }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public List queryEngine(IFilterRule filter) throws Exception { // pass the work to IMAPStore return folder.getServer().search(filter, folder); }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public List queryEngine(IFilterRule filter, Object[] uids) throws Exception { // pass the work to IMAPStore return folder.getServer().search(uids, filter, folder); }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public void messageAdded(Object uid) throws Exception { // method is not needed by IMAP }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public void messageRemoved(Object uid) throws Exception { // method is not needed by IMAP }
// in java/org/columba/mail/folder/search/IMAPQueryEngine.java
public void reset() throws Exception { // method is not needed by IMAP }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public void sync() throws Exception { }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public List queryEngine(IFilterRule filter) throws Exception { return null; }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public List queryEngine(IFilterRule filter, Object[] uids) throws Exception { return null; }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public void messageAdded(Object uid) throws Exception { }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public void messageRemoved(Object uid) throws Exception { }
// in java/org/columba/mail/folder/search/DummyQueryEngine.java
public void reset() throws Exception { }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
protected boolean processRule(Object uid, IFilterCriteria criteria, String type) throws Exception { if (type == null) { JOptionPane.showMessageDialog(null, "Filter type couldn't been found", "Error occured", JOptionPane.ERROR_MESSAGE); return false; } AbstractFilter instance = getFilter(criteria, type); if (instance == null) { return false; } return instance.process(folder, uid); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
protected List processCriteria(IFilterRule rule, List uids) throws Exception { LinkedList result = new LinkedList(); boolean b; int match = rule.getConditionInt(); ListIterator it = uids.listIterator(); Object uid; // MATCH_ALL if (match == FilterRule.MATCH_ALL) { while (it.hasNext()) { b = true; uid = it.next(); for (int i = 0; (i < rule.count()) && b; i++) { IFilterCriteria criteria = rule.get(i); String type = criteria.getTypeString(); b &= processRule(uid, criteria, type); } if (b) { result.add(uid); } } }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
public Object[] searchMessages(IFilter filter, Object[] uids) throws Exception { if (!filter.getEnabled()) { // filter is disabled return new Object[] {}; } List notDefaultEngineResult = null; List defaultEngineResult = new LinkedList(); IFilterRule filterRule = filter.getFilterRule(); IFilterRule notDefaultEngine = new FilterRule(); IFilterRule defaultEngine = new FilterRule(); divideFilterRule(filterRule, notDefaultEngine, defaultEngine); if (defaultEngine.count() > 0) { try { if (uids != null) { defaultEngineResult = getNonDefaultEngine().queryEngine( defaultEngine, uids); } else { defaultEngineResult = getNonDefaultEngine().queryEngine( defaultEngine); } } catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); } } if (notDefaultEngine.count() == 0) { notDefaultEngineResult = defaultEngineResult; } else { // MATCH_ALL if (filterRule.getConditionInt() == FilterRule.MATCH_ALL) { if (defaultEngine.count() > 0) { notDefaultEngineResult = processCriteria(notDefaultEngine, defaultEngineResult); } else { if (uids != null) { notDefaultEngineResult = processCriteria( notDefaultEngine, Arrays.asList(uids)); } else { notDefaultEngineResult = processCriteria( notDefaultEngine, Arrays.asList(folder .getUids())); } } } // MATCH_ANY else { if (uids != null) { List uidList = new LinkedList(Arrays.asList(uids)); ListTools.substract(uidList, defaultEngineResult); notDefaultEngineResult = processCriteria(notDefaultEngine, uidList); notDefaultEngineResult.addAll(defaultEngineResult); } else { notDefaultEngineResult = processCriteria(notDefaultEngine, Arrays.asList(folder.getUids())); } } } /* * worker.setDisplayText( "Search Result: " + * notDefaultEngineResult.size() + " messages found in " + * (System.currentTimeMillis() - startTime) + " ms"); */ return notDefaultEngineResult.toArray(); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
public Object[] searchMessages(IFilter filter) throws Exception { if (getObservable() != null) { getObservable().setMessage( MailResourceLoader.getString("statusbar", "message", "search")); } // return searchMessages(filter, null); Object[] result = searchMessages(filter, null); if (getObservable() != null) { // clear status bar message now we are done (with a delay) getObservable().clearMessageWithDelay(); } return result; }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
protected List queryEngine(IFilterRule filter, Object[] uids) throws Exception { return processCriteria(filter, Arrays.asList(uids)); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
protected List queryEngine(IFilterRule filter) throws Exception { Object[] uids = folder.getUids(); return processCriteria(filter, Arrays.asList(uids)); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
public void sync() throws Exception { getNonDefaultEngine().sync(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public List queryEngine(IFilterRule filter) throws Exception { Query query = getLuceneQuery(filter, analyzer); List result = search(query); ListTools.substract(result, deleted); if (!checkResult(result)) { // Search again result = search(query); ListTools.substract(result, deleted); } return result; }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public List queryEngine(IFilterRule filter, Object[] uids) throws Exception { List result = queryEngine(filter); ListTools.intersect(result, Arrays.asList(uids)); return result; }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public void messageAdded(Object uid) throws Exception { Document messageDoc = getDocument(uid); IndexWriter writer = new IndexWriter(ramIndexDir, analyzer, false); writer.addDocument(messageDoc); writer.close(); incOperationCounter(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public void messageRemoved(Object uid) throws Exception { deleted.add(uid); /* * try { indexLock.tryToGetLock(null); getReader().delete(new * Term("uid", uid.toString())); indexLock.release(); } catch * (IOException e) { JOptionPane.showMessageDialog( null, * e.getMessage(), "Error while removing Message from Lucene Index", * JOptionPane.ERROR_MESSAGE); } */ }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public void reset() throws Exception { createIndex(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
public void sync() throws Exception { LOG.severe("Lucene Index inconsistent - recreation forced"); IHeaderList hl = folder.getHeaderList(); if (getObservable() != null) { getObservable().setMessage( MailResourceLoader.getString("statusbar", "message", "lucene_sync")); } getObservable().setCurrent(0); try { createIndex(); IndexWriter writer = new IndexWriter(luceneIndexDir, analyzer, false); int count = hl.count(); getObservable().setCurrent(count); Object uid; int i = 0; ICloseableIterator it; for (it = hl.keyIterator(); it.hasNext();) { uid = it.next(); writer.addDocument(getDocument(uid)); getObservable().setCurrent(i); } it.close(); getObservable().setCurrent(count); writer.optimize(); writer.close(); } catch (Exception e) { LOG.severe("Creation of Lucene Index failed :" + e.getLocalizedMessage()); // show neat error dialog here } }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public boolean exists(Object uid) throws Exception { File file = new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString()); return file.exists(); }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public void removeMessage(Object uid) throws Exception { File file = new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString()); //delete the file containing the message in the file system if (!file.delete()) { // Could not delete the file - possibly someone has a lock on it LOG.warning("Could not delete " + file.getAbsolutePath() + ". Will try to delete it on exit"); // ... delete it when Columba exists instead file.deleteOnExit(); } else { LOG.info(file.getAbsolutePath() + " deleted successfully"); } }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public Source getMessageSource(Object uid) throws Exception { File file = new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString()); try { return new FileSource(file); } catch (IOException e) { throw new FolderInconsistentException(); } }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public InputStream getMessageStream(Object uid) throws Exception { return new FileInputStream( new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString())); }
// in java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java
public void updateGUI() throws Exception { FolderTreeModel.getInstance().nodeStructureChanged(parentFolder); if (vfolder != null) { //vfolder.showFilterDialog((AbstractMailFrameController) getFrameMediator()); new ConfigFrame(mediator, vfolder); } }
// in java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references to selected folder and message IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save if (uids.length == 0) { LOG.fine( "No virtual folder created since no message was selected"); return; // no message selected. } Object uid = uids[0]; parentFolder = (IMailbox) r.getSourceFolder(); //register for status events ((StatusObservableImpl) parentFolder.getObservable()).setWorker(worker); // get value of Subject, From or To header Header header = parentFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"}); String headerValue = (String) header.get(vfolderType); if (headerValue == null) { LOG.warning("Error getting " + vfolderType + " header. No virtual folder created"); return; } // create virtual folder (is attached to parentFolder) String name = vfolderType + " contains [" + headerValue + "]"; vfolder = createVirtualFolder(name, vfolderType, headerValue, parentFolder); }
// in java/org/columba/mail/folder/command/ExpungeFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // update status message worker.setDisplayText("Expunging " + srcFolder.getName() + ".."); // expunge folder srcFolder.expungeFolder(); }
// in java/org/columba/mail/folder/command/AddMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get source folder folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); // add message to folder folder.addMessage(is); is.close(); }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); OutputStream os = null; try { // create output stream os = new BufferedOutputStream(new FileOutputStream(r.getDestFile())); int counter = 0; IMailbox srcFolder; Object[] uids; InputStream in; int read; byte[] buffer = new byte[1024]; // get source folder srcFolder = (IMailbox) r.getSourceFolder(); // get array of message UIDs uids = srcFolder.getUids(); // initialize progressbar with total number of messages worker.setProgressBarMaximum(uids.length); worker.setProgressBarValue(0); // for each message in folder i for (int j = 0; (j < uids.length) && !worker.cancelled(); j++) { // get message source from folder in = new BufferedInputStream(srcFolder .getMessageSourceStream(uids[j])); // prepend From line os.write(new String("From \r\n").getBytes()); // write message source to file while ((read = in.read(buffer, 0, buffer.length)) > 0) { os.write(buffer, 0, read); } try { in.close(); } catch (IOException ioe_) { } // append newline os.write(new String("\r\n").getBytes()); os.flush(); worker.setProgressBarValue(j); counter++; } // update status message if (worker.cancelled()) { worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "export_messages_cancelled")); } else { worker.setDisplayText(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", "export_messages_success"), new Object[] { Integer.toString(counter) })); } }
// in java/org/columba/mail/folder/command/CreateFilterOnMessageCommand.java
public void updateGUI() throws Exception { if ((filter != null) && (srcFolder != null)) { FilterDialog dialog = new FilterDialog(mediator, filter); if (!dialog.wasCancelled()) { srcFolder.getFilterList().add(filter); } } }
// in java/org/columba/mail/folder/command/CreateFilterOnMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references to selected folder and message IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save if (uids.length == 0) { LOG.fine("No filter created since no message was selected"); return; // no message selected. } Object uid = uids[0]; srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // get value of Subject, From or To header Header header = srcFolder.getHeaderFields(uid, new String[] { "Subject", "From", "To" }); String headerValue = (String) header.get(filterType); if (headerValue == null) { LOG.warning("Error getting " + filterType + " header. No filter created"); return; } // create filter String descr = filterType + " contains [" + headerValue + "]"; filter = createFilter(descr, filterType, headerValue); }
// in java/org/columba/mail/folder/command/ApplyFilterCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // display status message worker.setDisplayText("Applying filter to " + srcFolder.getName() + "..."); // get filter list from folder IFilterList list = srcFolder.getFilterList(); if (list == null) { return; } // initialize progressbar worker.setProgressBarMaximum(list.count()); // for each filter for (int i = 0; i < list.count(); i++) { // update progressbar worker.setProgressBarValue(i); // get filter IFilter filter = list.get(i); // skip, if filter is disabled if ( filter.getEnabled() == false) continue; // search all messages which match this filter Object[] result = srcFolder.searchMessages(filter); if (result == null) { continue; } // if we have a result if (result.length != 0) { // create a Command for every action of this filter // -> create a compound object which encapsulates all commands CompoundCommand command = new FilterCompoundCommand(filter, srcFolder, result); // add command to scheduler //MainInterface.processor.addOp(command); command.execute(worker); } } }
// in java/org/columba/mail/folder/command/ToggleMarkCommand.java
public void execute(IWorkerStatusController worker) throws Exception { this.worker = worker; /* * // use wrapper class for easier handling of references array adapter = * new FolderCommandAdapter( (MailFolderCommandReference[]) * getReferences()); * // get array of source references MailFolderCommandReference[] r = * adapter.getSourceFolderReferences(); */ IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // which kind of mark? int markVariant = r.getMarkVariant(); // create one list containing the marked items, which have to be "unmarked" // and another list containing the items remained to be marked List<Object> list1 = new ArrayList<Object>(); List<Object> list2 = new ArrayList<Object>(); for (int j = 0; j < uids.length; j++) { Flags flags = srcFolder.getFlags(uids[j]); boolean result = false; if (markVariant == MarkMessageCommand.MARK_AS_READ) { if (flags.getSeen()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_FLAGGED) { if (flags.getFlagged()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_EXPUNGED) { if (flags.getDeleted()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_ANSWERED) { if (flags.getAnswered()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_DRAFT) { if (flags.getDraft()) result = true; } else if (markVariant == MarkMessageCommand.MARK_AS_SPAM) { boolean spam = ((Boolean) srcFolder.getAttribute(uids[j], "columba.spam")).booleanValue(); if (spam) result = true; } if (result) list1.add(uids[j]); else list2.add(uids[j]); } MailFolderCommandReference ref = null; // un-mark messages if (list1.size() > 0) { ref = new MailFolderCommandReference(srcFolder, list1.toArray()); ref.setMarkVariant(-markVariant); MarkMessageCommand c = new MarkMessageCommand(ref); commandList.add(c); c.execute(worker); // train bayesian filter if ((markVariant == MarkMessageCommand.MARK_AS_SPAM) || (markVariant == MarkMessageCommand.MARK_AS_NOTSPAM)) { processSpamFilter(uids, srcFolder, -markVariant); } } // mark messages if (list2.size() > 0) { ref = new MailFolderCommandReference(srcFolder, list2.toArray()); ref.setMarkVariant(markVariant); MarkMessageCommand c = new MarkMessageCommand(ref); commandList.add(c); c.execute(worker); // train bayesian filter if ((markVariant == MarkMessageCommand.MARK_AS_SPAM) || (markVariant == MarkMessageCommand.MARK_AS_NOTSPAM)) { processSpamFilter(uids, srcFolder, markVariant); } } }
// in java/org/columba/mail/folder/command/ToggleMarkCommand.java
private void processSpamFilter(Object[] uids, IMailbox srcFolder, int markVariant) throws Exception { // update status message worker.setDisplayText("Training messages..."); worker.setProgressBarMaximum(uids.length); // mark as spam /as not spam // for each message for (int j = 0; j < uids.length; j++) { worker.setDisplayText("Training messages..."); worker.setProgressBarMaximum(uids.length); // increase progressbar value worker.setProgressBarValue(j); // cancel here if user requests if (worker.cancelled()) { break; } // message belongs to which account? AccountItem item = CommandHelper.retrieveAccountItem(srcFolder, uids[j]); // skip if account information is not available if (item == null) continue; // if spam filter is not enabled -> return if (item.getSpamItem().isEnabled() == false) continue; LOG.info("learning uid=" + uids[j]); //$NON-NLS-1$ // create reference IMailFolderCommandReference ref = new MailFolderCommandReference(srcFolder, new Object[] { uids[j] }); // create command ICommand c = null; if (markVariant == MarkMessageCommand.MARK_AS_SPAM) c = new LearnMessageAsSpamCommand(ref); else c = new LearnMessageAsHamCommand(ref); // execute command c.execute(worker); // skip if message is *not* marked as spam if (markVariant == MarkMessageCommand.MARK_AS_NOTSPAM) continue; // skip if user didn't enable this option if (item.getSpamItem().isMoveMessageWhenMarkingEnabled() == false) continue; if (item.getSpamItem().isMoveTrashSelected() == false) { // move message to user-configured folder (generally "Junk" // folder) IMailFolder destFolder = FolderTreeModel.getInstance() .getFolder(item.getSpamItem().getMoveCustomFolder()); // create reference MailFolderCommandReference ref2 = new MailFolderCommandReference( srcFolder, destFolder, new Object[] { uids[j] }); CommandProcessor.getInstance().addOp(new MoveMessageCommand(ref2)); } else { // move message to trash IMailbox trash = (IMailbox) ((RootFolder) srcFolder .getRootFolder()).getTrashFolder(); // create reference MailFolderCommandReference ref2 = new MailFolderCommandReference( srcFolder, trash, new Object[] { uids[j] }); CommandProcessor.getInstance().addOp(new MoveMessageCommand(ref2)); } } }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
protected void doExecute(IWorkerStatusController worker, String statusMessage, String errorRetryMessage, String errorIgnoreMessage, String errorCopyMessage, String errorTitle, String canceledMessage) throws Exception { // get references r = (IMailFolderCommandReference) getReference(); // get destination foldedr destFolder = (IMailbox) r.getDestinationFolder(); Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // setting lastSelection for srcFolder to null srcFolder.setLastSelection(null); LOG.fine("src=" + srcFolder + " dest=" + destFolder); // update status message worker.setDisplayText(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", statusMessage), new Object[] { destFolder.getName() })); // initialize progress bar with total number of messages worker.setProgressBarMaximum(uids.length); if (srcFolder.getRootFolder().equals(destFolder.getRootFolder())) { // folders have same root folder // -> for example: two IMAP folders on the same server // -----> this means we use server-side copying which // -----> is much faster than using inputstreams here // // also used for local folders, which saves some parsing work srcFolder.innerCopy(destFolder, uids); } else { // two different root folders // -> get inputstream from source-folder and add it to // -> destination-folder as inputstream // -----> moving of raw message source // (works also for copying from local to IMAP folders, etc. for (int j = 0; (j < uids.length) && !worker.cancelled(); j++) { if (!srcFolder.exists(uids[j])) { continue; } try { // add source to destination folder Attributes attributes = srcFolder.getAttributes(uids[j]); Flags flags = srcFolder.getFlags(uids[j]); InputStream messageSourceStream = srcFolder .getMessageSourceStream(uids[j]); destFolder.addMessage(messageSourceStream, attributes, flags); messageSourceStream.close(); } catch (IOException ioe) { String[] options = new String[] { MailResourceLoader.getString("statusbar", "message", errorRetryMessage), MailResourceLoader.getString("statusbar", "message", errorIgnoreMessage), MailResourceLoader .getString("", "global", "cancel") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("statusbar", "message", errorCopyMessage), MailResourceLoader.getString("statusbar", "message", errorTitle), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]); switch (result) { case JOptionPane.YES_OPTION: //retry copy j--; break; case JOptionPane.CANCEL_OPTION: worker.cancel(); default: continue; } } // update progress bar worker.setProgressBarValue(j); } }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { doExecute(worker, "copy_messages", "err_copy_messages_retry", "err_copy_messages_ignore", "err_copy_messages_msg", "err_copy_messages_title", "copy_messages_cancelled"); }
// in java/org/columba/mail/folder/command/MarkMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { /* * // use wrapper class for easier handling of references array adapter = * new FolderCommandAdapter( (MailFolderCommandReference[]) * getReferences()); // get array of source references * MailFolderCommandReference[] r = adapter.getSourceFolderReferences(); */ IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // which kind of mark? int markVariant = r.getMarkVariant(); // saving last selected message to the folder srcFolder.setLastSelection(uids[0]); // mark message srcFolder.markMessage(uids, markVariant); }
// in java/org/columba/mail/folder/command/RemoveFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source folder IMailbox childFolder = (IMailbox) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); // remove source folder childFolder.removeFolder(); }
// in java/org/columba/mail/folder/command/MarkFolderAsReadCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get folder that is going to be moved folderToBeRead = (IMailbox) ((IMailFolderCommandReference) getReference()).getSourceFolder(); worker.setDisplayText(MessageFormat.format( MailResourceLoader.getString("statusbar", "message", "folder_markasread"), new Object[] {folderToBeRead.getName()})); worker.clearDisplayTextWithDelay(); IMailFolderCommandReference markCommandRefs = new MailFolderCommandReference(folderToBeRead); Object[] uids = folderToBeRead.getUids(); if ((uids != null) && (uids.length > 0)) { markCommandRefs.setUids(uids); markCommandRefs.setMarkVariant(MarkMessageCommand.MARK_AS_READ); markMessageCommand = new MarkMessageCommand(markCommandRefs); markMessageCommand.execute(worker); } }
// in java/org/columba/mail/folder/command/MoveFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get folder that is going to be moved IMailFolder movedFolder = (IMailFolder) ((IFolderCommandReference) getReference()) .getSourceFolder(); // get destination folder destParentFolder = (IMailFolder) ((IFolderCommandReference) getReference()) .getDestinationFolder(); // AbstractFolder.append also automatically removes the folder // from its parent movedFolder.moveTo(destParentFolder); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); JFileChooser fileChooser = new JFileChooser(); // save each message for (int j = 0; j < uids.length; j++) { Object uid = uids[j]; LOG.info("Saving UID=" + uid); header = srcFolder.getAllHeaderFields(uid); setupMessageBodyPart(uid, srcFolder,worker); AttachmentModel attMod = new AttachmentModel(); attMod.setCollection(srcFolder.getMimePartTree(uid)); attachments = attMod.getDisplayedMimeParts(); // determine type of body part boolean ishtml = false; if (bodyHeader.getMimeType().getSubtype().equals("html")) { ishtml = true; } // setup filters and filename for file chooser dialog ExtensionFileFilter txtFilter = new ExtensionFileFilter("txt", "Text (*.txt)"); ExtensionFileFilter htmlFilter = new ExtensionFileFilter("html", "Html (*.html)"); fileChooser.resetChoosableFileFilters(); fileChooser.setAcceptAllFileFilterUsed(false); fileChooser.addChoosableFileFilter(txtFilter); fileChooser.addChoosableFileFilter(htmlFilter); // add check box for incl. of headers JCheckBox inclHeaders = new JCheckBox(MailResourceLoader.getString( "dialog", "saveas", "save_all_headers"), getInclAllHeadersOption()); fileChooser.setAccessory(inclHeaders); // setup dialog title, active filter and file name String subject = EncodedWord.decode( header.get("Subject")).toString(); String defaultName = getValidFilename(subject,true); if (ishtml) { fileChooser.setDialogTitle(MailResourceLoader.getString( "dialog", "saveas", "save_html_message")); fileChooser.setFileFilter(htmlFilter); if (defaultName.length() > 0) { fileChooser.setSelectedFile(new File(defaultName + "." + htmlFilter.getExtension())); } } else { fileChooser.setDialogTitle(MailResourceLoader.getString( "dialog", "saveas", "save_text_message")); fileChooser.setFileFilter(txtFilter); if (defaultName.length() > 0) { fileChooser.setSelectedFile(new File(defaultName + "." + txtFilter.getExtension())); } } // show dialog int res = fileChooser.showSaveDialog(null); if (res == JFileChooser.APPROVE_OPTION) { File f = fileChooser.getSelectedFile(); ExtensionFileFilter filter = (ExtensionFileFilter) fileChooser.getFileFilter(); // Add default extension if no extension is given by the user if (ExtensionFileFilter.getFileExtension(f) == null) { f = new File(f.getAbsolutePath() + "." + filter.getExtension()); } int confirm; if (f.exists()) { // file exists, user needs to confirm overwrite confirm = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "saveas", "overwrite_existing_file"), MailResourceLoader.getString("dialog", "saveas", "file_exists"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); } else { confirm = JOptionPane.YES_OPTION; } if (confirm == JOptionPane.YES_OPTION) { // store whether all headers should be incl. boolean incl = inclHeaders.isSelected(); storeInclAllHeadersOption(incl); LOG.info("Incl. all headers: " + incl); // save message if (filter.getExtension().equals(htmlFilter.getExtension())) { saveMsgBodyAsHtml(incl, f); } else { saveMsgBodyAsText(incl, f); } } } } // end of for loop over uids to save }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
private void setupMessageBodyPart(Object uid, IMailbox srcFolder, IWorkerStatusController worker) throws Exception { // Does the user prefer html or plain text? XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Get body of message depending on user preferences MimeTree mimePartTree = srcFolder.getMimePartTree(uid); MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart == null) { bodyHeader = new MimeHeader(); bodyStream = new ByteArrayInputStream(new byte[0]); } else { bodyHeader = bodyPart.getHeader(); bodyStream = srcFolder.getMimePartBodyStream(uid, bodyPart.getAddress()); } }
// in java/org/columba/mail/folder/command/TagMessageCommand.java
Override public void execute(IWorkerStatusController worker) throws Exception { // get array of source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // does not work: r.getFolderName() // does not work: r.getMessage().getUID() // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); Hashtable<Object, IFolder> mails = new Hashtable<Object, IFolder>(); // check if virtual folder, if yes, do not use these uids, use the // real uids instead if (srcFolder instanceof VirtualFolder) { // get original folder try { IHeaderList hl = ((IMailbox) r.getSourceFolder()) .getHeaderList(); for (Object uid : r.getUids()) { // should be virtual mails.put(((VirtualHeader) hl.get(uid)).getSrcUid(), ((VirtualHeader) hl.get(uid)).getSrcFolder()); } } catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); } } else { for (Object uid : r.getUids()) { mails.put(uid, r.getSourceFolder()); } } if (type == ADD_TAG) { for (Entry<Object, IFolder> entry : mails.entrySet()) { AssociationStore.getInstance().addAssociation("tagging", id, createURI(entry.getValue().getId(), entry.getKey()).toString()); } } else if (type == REMOVE_TAG) { for (Entry<Object, IFolder> entry : mails.entrySet()) { AssociationStore.getInstance().removeAssociation("tagging", id, createURI(entry.getValue().getId(), entry.getKey()).toString()); } } }
// in java/org/columba/mail/folder/command/RenameFolderCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source folder selectedFolder = (IMailFolder) ((IFolderCommandReference) getReference()).getSourceFolder(); // get name of folder String name = ((IMailFolderCommandReference) getReference()).getFolderName(); // rename folder ((IMailFolder) selectedFolder).setName(name); }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); JFileChooser fileChooser = new JFileChooser(); // Save message source for each selected message for (int j = 0; j < uids.length; j++) { Object uid = uids[j]; LOG.info("Saving UID=" + uid); //setup save dialog String subject = (String) srcFolder.getHeaderFields(uid, new String[] { "Subject" }).get("Subject"); subject = EncodedWord.decode(subject).toString(); String defaultName = getValidFilename(subject, false); if (defaultName.length() == 0) { defaultName = srcFolder.getHeaderList().get(uid).get("columba.from").toString(); } fileChooser.setSelectedFile(new File(defaultName)); fileChooser.setDialogTitle(MailResourceLoader.getString("dialog", "saveas", "save_msg_source")); // show dialog if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) { File f = fileChooser.getSelectedFile(); if (f.exists()) { // file exists, user needs to confirm overwrite int confirm = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "saveas", "overwrite_existing_file"), MailResourceLoader.getString("dialog", "saveas", "file_exists"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (confirm == JOptionPane.NO_OPTION) { j--; continue; } } InputStream in = null; OutputStream out = null; try { // save message source under selected filename in = new BufferedInputStream(srcFolder.getMessageSourceStream(uid)); out = new BufferedOutputStream(new FileOutputStream(f)); byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer, 0, buffer.length)) > 0) { out.write(buffer, 0, read); } } catch (IOException ioe) { LOG.severe("Error saving msg source to file: " + ioe.getMessage()); JOptionPane.showMessageDialog(null, MailResourceLoader.getString("dialog", "saveas", "err_save_msg"), MailResourceLoader.getString("dialog", "saveas", "err_save_title"), JOptionPane.ERROR_MESSAGE); } finally { try { in.close(); } catch (IOException ioe) { } try { if (out != null) { out.close(); } } catch (IOException ioe) { } } } } // end of loop over selected messages }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get reference IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); IContactFacade contactFacade = null; IModelFacade modelFacade = null; try { contactFacade = ServiceConnector.getContactFacade(); modelFacade = ServiceConnector.getModelFacade(); } catch (ServiceNotFoundException e) { e.printStackTrace(); return; } Vector<String> v = new Vector<String>(); // for each message for (int i = 0; i < uids.length; i++) { // get header of message Header header = folder.getHeaderFields(uids[i], new String[] { "From" }); // get sender String sender = (String) header.get("From"); v.add(sender); } // add sender to addressbook Iterator<String> it = v.listIterator(); while (it.hasNext()) { try { Address address = Address.parse(it.next()); // add contact to addressbook IContactItem contactItem = modelFacade.createContactItem(); FacadeUtil.getInstance().initContactItem(contactItem, address.getDisplayName(), address.getMailAddress()); contactFacade.addContact(contactItem); } catch (ParserException e) { e.printStackTrace(); } catch (StoreException e) { e.printStackTrace(); } } }
// in java/org/columba/mail/folder/command/SaveFolderConfigurationCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // skip if no reference available if ((getReference() != null) || (getReference() == null)) { return; } IMailFolder folderTreeNode = (IMailFolder) ((IMailFolderCommandReference) getReference()) .getSourceFolder(); // if folder is message folder // ->TODO (@author fdietz): there should be an interface, instead of the AbstractMessageFolder // class if (folderTreeNode instanceof AbstractMessageFolder) { AbstractMessageFolder folder = (AbstractMessageFolder) folderTreeNode; // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); // save headercache folder.save(); } }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get reference IFolderCommandReference r = (IFolderCommandReference) getReference(); // selected messages Object[] uids = r.getUids(); // selected folder IMailbox folder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) folder.getObservable()).setWorker(worker); IContactFacade contactFacade = null; IModelFacade modelFacade = null; try { contactFacade = ServiceConnector.getContactFacade(); modelFacade = ServiceConnector.getModelFacade(); } catch (ServiceNotFoundException e) { e.printStackTrace(); return; } List<String> addresses = new ArrayList<String>(); // for every message for (int i = 0; i < uids.length; i++) { // get header of message Header header = folder.getHeaderFields(uids[i], new String[] { "From", "To", "Cc", "Bcc" }); String addrStr = (String) header.get("From"); addresses.addAll(parseAddrStr(addrStr)); addrStr = (String) header.get("To"); addresses.addAll(parseAddrStr(addrStr)); addrStr = (String) header.get("Cc"); addresses.addAll(parseAddrStr(addrStr)); addrStr = (String) header.get("Bcc"); addresses.addAll(parseAddrStr(addrStr)); } // add sender to addressbook Iterator<String> it = addresses.listIterator(); List<IContactItem> contactItems = new ArrayList<IContactItem>(); while (it.hasNext()) { try { String addrStr = it.next(); if (addrStr == null) continue; Address address = Address.parse(addrStr); // add contact to addressbook IContactItem contactItem = modelFacade.createContactItem(); FacadeUtil.getInstance().initContactItem(contactItem, address.getDisplayName(), address.getMailAddress()); contactItems.add(contactItem); } catch (ParserException e) { e.printStackTrace(); } catch (StoreException e) { e.printStackTrace(); } } contactFacade.addContacts(contactItems.toArray(new IContactItem[contactItems.size()])); }
// in java/org/columba/mail/folder/command/ColorMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get array of source references IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // get array of message UIDs Object[] uids = r.getUids(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // which kind of color? int rgbValue = r.getColorValue(); // saving last selected Message to the folder srcFolder.setLastSelection(uids[0]); // get color from factory // ->factory shares color objects to save memory Color color = ColorFactory.getColor(rgbValue); // for each message for (int j = 0; j < uids.length; j++) { // set columba.color flag srcFolder.setAttribute(uids[j], "columba.color", color); } }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
public void updatedGUI() throws Exception { }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { /* * *20030604, karlpeder* Fixed minor flaws to be able to print text * messages. Further more added support for html messages. */ IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to print IMailbox srcFolder = (IMailbox) r.getSourceFolder(); //register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // Print each message for (int j = 0; j < uids.length; j++) { Object uid = uids[j]; LOG.info("Printing UID=" + uid); Header header = srcFolder.getHeaderFields(uids[j], getHeaderKeys()); setupMessageBodyPart(uid, srcFolder, worker); // Setup print document for message cDocument messageDoc = new cDocument(); messageDoc.setHeader(getMailHeader()); messageDoc.setFooter(getMailFooter()); String[] headerKeys = getHeaderKeys(); cParagraph hKey; cParagraph hValue; cHGroup hLine; Object value; // Add header information to print for (int i = 0; i < Array.getLength(headerKeys); i++) { hKey = new cParagraph(); // *20030531, karlpeder* setting headerKeys to lowercase for // lookup! hKey.setText(MailResourceLoader.getString("header", headerKeys[i].toLowerCase())); hKey.setFontStyle(Font.BOLD); hValue = new cParagraph(); /* * *20031216, karlpeder* Changed handling of dates. * Previously columba.date header was used. Now we * use the Date header instead */ //if (headerKeys[i].equalsIgnoreCase("date")) { // value = header.get("columba.date"); //} else { //value = header.get(headerKeys[i]); //} value = header.get(headerKeys[i]); if (headerKeys[i].equalsIgnoreCase(dateHeaderKey)) { // special handling for dates SimpleDateFormat formatter = new SimpleDateFormat( "d MMM yyyy HH:mm:ss Z"); String dateStr = (String) value; // ignore leading weekday name (e.g. "Mon,"), since this // seems to give problems during parsing ParsePosition pos = new ParsePosition(dateStr.indexOf(',') + 1); Date d = formatter.parse((String) value, pos); if (d != null) { hValue.setText(getMailDateFormat().format(d)); } else { // fall back to use the Date header contents directly hValue.setText((String) value); } } else { hValue.setText((String) value); } hValue.setLeftMargin(new cCmUnit(3.0)); hLine = new cHGroup(); hLine.add(hKey); hLine.add(hValue); messageDoc.appendPrintObject(hLine); } // Add list of attachments if applicable AttachmentModel attMod = new AttachmentModel(); attMod.setCollection(srcFolder.getMimePartTree(uid)); List attachments = attMod.getDisplayedMimeParts(); for (int i = 0; i < attachments.size(); i++) { StreamableMimePart mp = (StreamableMimePart) attachments.get(i); if (mp.getHeader().getFileName() != null) { // one line is added to the header for each attachment // (which has a filename defined) hKey = new cParagraph(); hKey.setText(MailResourceLoader.getString("header", attHeaderKey)); hKey.setFontStyle(Font.BOLD); hValue = new cParagraph(); hValue.setText(mp.getHeader().getFileName()); hValue.setLeftMargin(new cCmUnit(3.0)); hLine = new cHGroup(); hLine.add(hKey); hLine.add(hValue); messageDoc.appendPrintObject(hLine); } } // Add body of message to print String mimesubtype = bodyHeader.getMimeType().getSubtype(); if (mimesubtype.equals("html")) { messageDoc.appendPrintObject(getHTMLBodyPrintObject()); } else { messageDoc.appendPrintObject(getPlainBodyPrintObject()); } // print the print document (i.e. the message) messageDoc.print(); } // end of for loop over uids to print }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
private void setupMessageBodyPart(Object uid, IMailbox srcFolder, IWorkerStatusController worker) throws Exception { // Does the user prefer html or plain text? XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Get body of message depending on user preferences MimeTree mimePartTree = srcFolder.getMimePartTree(uid); MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = mimePartTree.getFirstTextPart("html"); } else { bodyPart = mimePartTree.getFirstTextPart("plain"); } if (bodyPart == null) { bodyHeader = new MimeHeader(); bodyStream = new ByteArrayInputStream(new byte[0]); } else { bodyHeader = bodyPart.getHeader(); bodyStream = srcFolder.getMimePartBodyStream(uid, bodyPart.getAddress()); } }
// in java/org/columba/mail/folder/command/MoveMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get references r = (IMailFolderCommandReference) getReference(); // get source folder IMailbox srcFolder = (IMailbox) r.getSourceFolder(); // get destination foldedr destFolder = (IMailbox) r.getDestinationFolder(); // cancel, if source equals destination folder if ( srcFolder.getId() == destFolder.getId() ) return; // calling CopyMessageCommand.execute() here! //super.execute(worker); doExecute(worker, "move_messages", "err_copy_messages_retry", "err_copy_messages_ignore", "err_move_messages_msg", "err_move_messages_title", "move_messages_cancelled"); // get messgae UIDs Object[] uids = r.getUids(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // setting lastSelection to null srcFolder.setLastSelection(null); LOG.info("src=" + srcFolder + " dest=" + destFolder); // update status message worker.setDisplayText("Moving messages to " + destFolder.getName() + "..."); worker.setProgressBarMaximum(uids.length); // mark all messages as expunged srcFolder.markMessage(uids, MarkMessageCommand.MARK_AS_EXPUNGED); // expunge folder srcFolder.expungeFolder(); // We are done - clear the status message after a delay worker.clearDisplayTextWithDelay(); }
// in java/org/columba/mail/folder/command/ImportMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { ImportFolderCommandReference r = (ImportFolderCommandReference) getReference(); AbstractMailboxImporter importer = r.getImporter(); importer.run(worker); }
// in java/org/columba/mail/folder/command/SyncSearchEngineCommand.java
public void execute(IWorkerStatusController worker) throws Exception { // get source folder parentFolder = (AbstractLocalFolder) ((IMailFolderCommandReference) getReference()).getSourceFolder(); // resync search engine // -> this is only needed for Lucene right now DefaultSearchEngine engine = parentFolder.getSearchEngine(); engine.sync(); }
// in java/org/columba/mail/folder/AbstractFolder.java
public void setName(String newName) throws Exception { IFolderItem item = getConfiguration(); item.setString("property", "name", newName); fireFolderPropertyChanged(); }
// in java/org/columba/mail/folder/AbstractFolder.java
public void removeFolder() throws Exception { // remove XmlElement getConfiguration().getRoot().getParent().removeElement( getConfiguration().getRoot()); // notify listeners fireFolderRemoved(); }
// in java/org/columba/mail/folder/AbstractFolder.java
public void addSubfolder(IMailFolder child) throws Exception { getConfiguration().getRoot().addElement( child.getConfiguration().getRoot()); fireFolderAdded(child); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void removeFolder() throws Exception { // delete folder from your harddrive boolean b = DiskIO.deleteDirectory(directoryFile); // if this worked, remove it from tree.xml configuration, too if (b) { super.removeFolder(); } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public MimeTree getMimePartTree(Object uid) throws Exception { // get message with UID IColumbaMessage message = getMessage(uid); // get tree-like structure of mimeparts MimeTree mptree = message.getMimePartTree(); return mptree; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public InputStream getMessageSourceStream(Object uid) throws Exception { return getDataStorageInstance().getMessageStream(uid); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address) throws Exception { // get message with UID IColumbaMessage message = getMessage(uid); // Get the mimepart LocalMimePart mimepart = (LocalMimePart) message.getMimePartTree() .getFromAddress(address); return mimepart.getInputStream(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address) throws Exception { // get message with UID IColumbaMessage message = getMessage(uid); // Get the mimepart LocalMimePart mimepart = (LocalMimePart) message.getMimePartTree() .getFromAddress(address); return new SourceInputStream(mimepart.getSource()); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void innerCopy(IMailbox destFolder, Object[] uids) throws Exception { if (getObservable() != null) { getObservable().setMax(uids.length); } for (int i = 0; i < uids.length; i++) { // skip this message, if it doesn't exist in source folder if (!exists(uids[i])) { continue; } InputStream messageSourceStream = getMessageSourceStream(uids[i]); destFolder.addMessage(messageSourceStream, getAttributes(uids[i]), getFlags(uids[i])); messageSourceStream.close(); /* * ((AbstractLocalFolder) destFolder).setFlags(destuid, (Flags) * getFlags( uids[i]).clone()); */ // destFolder.fireMessageAdded(uids[i]); if (getObservable() != null) { getObservable().setCurrent(i); } } // we are done - clear the progress bar if (getObservable() != null) { getObservable().resetCurrent(); } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public Object addMessage(InputStream in) throws Exception { return addMessage(in, null, null); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { // generate UID for new message Object newUid = generateNextMessageUid(); // save message stream to file getDataStorageInstance().saveMessage(newUid, in); // close stream in.close(); // parse header Source source = getDataStorageInstance().getMessageSource(newUid); int messageSize = source.length(); Header header = HeaderParser.parse(source); ColumbaHeader h; if ((attributes != null) && (flags != null)) { // save header and attributes. Copy the flags! h = new ColumbaHeader(header, (Attributes) attributes.clone(), new Flags(flags.getFlags())); } else { h = new ColumbaHeader(header); h.set("columba.size", new Integer(messageSize / 1024)); } source.close(); h.set("columba.uid", newUid); getHeaderList().add(h, newUid); fireMessageAdded(newUid, getFlags(newUid)); return newUid; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
protected ColumbaMessage getMessage(Object uid) throws Exception { // Check if the message is already cached if (aktMessage != null) { if (aktMessage.getUID().equals(uid)) { // this message is already cached return aktMessage; } } ColumbaMessage message; try { Source source = null; source = getDataStorageInstance().getMessageSource(uid); // Parse Message from DataStorage try { message = new ColumbaMessage(MessageParser.parse(source)); } catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; } source.close(); message.setUID(uid); aktMessage = message; // TODO: fix parser exception } catch (FolderInconsistentException e) { super.removeMessage(uid); throw e; } // We use the attributes and flags from the cache // but the parsed header from the parsed message IColumbaHeader header = getHeaderList().get(uid); header.setHeader(message.getHeader().getHeader()); message.setHeader(header); return message; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
protected IColumbaHeader getMessageHeader(Object uid) throws Exception { if ((aktMessage != null) && (aktMessage.getUID().equals(uid))) { // message is already cached // try to compare the headerfield count of // the actually parsed message with the cached // headerfield count IColumbaMessage message = getMessage(uid); // number of headerfields int size = message.getHeader().count(); // get header from cache IColumbaHeader h = getHeaderList().get(uid); // message doesn't exist (this shouldn't happen here) if (h == null) { return null; } // number of headerfields int cachedSize = h.count(); // if header contains more fields than the cached header if (size > cachedSize) { return (ColumbaHeader) message.getHeader(); } return (ColumbaHeader) h; } else { // message isn't cached // -> just return header from cache return getHeaderList().get(uid); } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void removeMessage(Object uid) throws Exception { // remove message from disk getDataStorageInstance().removeMessage(uid); // fireMessageRemoved(uid, getFlags(uid)); super.removeMessage(uid); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
protected void setFlags(Object uid, Flags flags) throws Exception { IColumbaHeader h = getHeaderList().get(uid); Flags oldFlags = h.getFlags(); h.setFlags(flags); // update MessageFolderInfo if (oldFlags.get(Flags.RECENT) && !flags.get(Flags.RECENT)) { getMessageFolderInfo().decRecent(); } if (!oldFlags.get(Flags.RECENT) && flags.get(Flags.RECENT)) { getMessageFolderInfo().incRecent(); } if (oldFlags.get(Flags.SEEN) && !flags.get(Flags.SEEN)) { getMessageFolderInfo().incUnseen(); } if (!oldFlags.get(Flags.SEEN) && flags.get(Flags.SEEN)) { getMessageFolderInfo().decUnseen(); } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public Header getHeaderFields(Object uid, String[] keys) throws Exception { // cached headerfield list List cachedList = Arrays.asList(CachedHeaderfields .getDefaultHeaderfields()); LinkedList keyList = new LinkedList(Arrays.asList(keys)); ListTools.substract(keyList, cachedList); if (keyList.size() == 0) { return getHeaderList().get(uid).getHeader(); } else { // We need to parse // get message with UID IColumbaMessage message = getMessage(uid); Header header = message.getHeader().getHeader(); Header subHeader = new Header(); String value; for (int i = 0; i < keys.length; i++) { value = header.get(keys[i]); if (value != null) { subHeader.set(keys[i], value); } } return subHeader; } }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void expungeFolder() throws Exception { // make sure to close all file handles // to the currently cached message // -> necessary for windows to be able to delete the local file if (aktMessage != null) { aktMessage.close(); aktMessage = null; } super.expungeFolder(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public Header getAllHeaderFields(Object uid) throws Exception { IColumbaMessage message = getMessage(uid); Header header = message.getHeader().getHeader(); return header; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public synchronized IHeaderList getHeaderList() throws Exception { if (headerList == null) { // header cache is stored in "headerlist" subfolder File headercacheDirectory = new File(getDirectoryFile(),"headerlist"); headerList = new BerkeleyDBHeaderList(headercacheDirectory, getId()); final AbstractMessageFolder folder = this; headerList .addHeaderListCorruptedListener(new IHeaderListCorruptedListener() { public void headerListCorrupted(IHeaderList headerList) { try { SyncHeaderList.sync(folder, headerList); } catch (IOException e) { LOG.severe(e.getMessage()); } } }); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
public void save() throws Exception { super.save(); if (headerList != null) headerList.persist(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object[] getUids() throws Exception { return messageList.keySet().toArray(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public boolean exists(Object uid) throws Exception { return messageList.containsKey(uid); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public IHeaderList getHeaderList() throws Exception { return headerList; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public void removeMessage(Object uid) throws Exception { Flags flags = getFlags(uid); fireMessageRemoved(uid, flags); headerList.remove(uid); messageList.remove(uid); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public MimeTree getMimePartTree(Object uid) throws Exception { return ((IColumbaMessage) messageList.get(uid)).getMimePartTree(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public IColumbaHeader getMessageHeader(Object uid) throws Exception { ColumbaHeader header = (ColumbaHeader) headerList.get(uid); return header; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public IColumbaMessage getMessage(Object uid) throws Exception { IColumbaMessage message = (IColumbaMessage) messageList.get(uid); return message; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object[] searchMessages(Filter filter, Object[] uids) throws Exception { return getSearchEngine().searchMessages(filter, uids); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object[] searchMessages(Filter filter) throws Exception { return getSearchEngine().searchMessages(filter); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public void innerCopy(IMailbox destFolder, Object[] uids) throws Exception { for (int i = 0; i < uids.length; i++) { InputStream messageSourceStream = getMessageSourceStream(uids[i]); destFolder.addMessage(messageSourceStream); messageSourceStream.close(); } }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object addMessage(InputStream in, Attributes attributes, Flags flags) throws Exception { Message message = MessageParser.parse( TempSourceFactory.createTempSource(in, -1)); Object newUid = generateNextUid(); LOG.info("new UID=" + newUid); ColumbaHeader h = new ColumbaHeader(message.getHeader()); if (attributes != null) { h.setAttributes((Attributes) attributes.clone()); } if ( flags != null ) { h.setFlags((Flags) flags.clone()); } h.getAttributes().put("columba.uid", newUid); headerList.add(h, newUid); messageList.put(newUid, new ColumbaMessage(h, message)); fireMessageAdded(newUid, getFlags(newUid)); return newUid; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object getAttribute(Object uid, String key) throws Exception { return ((ColumbaHeader) headerList.get(uid)).getAttributes().get(key); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Flags getFlags(Object uid) throws Exception { return ((ColumbaHeader) headerList.get(uid)).getFlags(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Attributes getAttributes(Object uid) throws Exception { if (getHeaderList().exists(uid)) { return getHeaderList().get(uid).getAttributes(); } else { return null; } }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Header getHeaderFields(Object uid, String[] keys) throws Exception { IColumbaHeader header = ((IColumbaMessage) messageList.get(uid)).getHeader(); Header subHeader = new Header(); String value; for (int i = 0; i < keys.length; i++) { value = (String) header.get(keys[i]); if (value != null) { subHeader.set(keys[i], value); } } return subHeader; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public InputStream getMessageSourceStream(Object uid) throws Exception { return new SourceInputStream(((IColumbaMessage) messageList.get(uid)).getSource()); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address) throws Exception { IColumbaMessage message = (IColumbaMessage) messageList.get(uid); LocalMimePart mimepart = (LocalMimePart) message.getMimePartTree() .getFromAddress(address); return mimepart.getInputStream(); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address) throws Exception { IColumbaMessage message = (IColumbaMessage) messageList.get(uid); LocalMimePart mimepart = (LocalMimePart) message.getMimePartTree() .getFromAddress(address); return new SourceInputStream(mimepart.getSource()); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public void setAttribute(Object uid, String key, Object value) throws Exception { // get header with UID ColumbaHeader header = (ColumbaHeader) getHeaderList().get(uid); header.getAttributes().put(key, value); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object addMessage(InputStream in) throws Exception { return addMessage(in, null, null); }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Object addMessage(IColumbaMessage message) throws Exception { Object newUid = generateNextUid(); ColumbaHeader h = (ColumbaHeader) ((ColumbaHeader) message.getHeader()); h.getAttributes().put("columba.uid", newUid); headerList.add(h, newUid); messageList.put(newUid, message); return newUid; }
// in java/org/columba/mail/folder/temp/TempFolder.java
public void removeFolder() throws Exception { //super.removeFolder(); // do nothing }
// in java/org/columba/mail/folder/temp/TempFolder.java
public Header getAllHeaderFields(Object uid) throws Exception { IColumbaHeader header = ((IColumbaMessage) messageList.get(uid)).getHeader(); return header.getHeader(); }
// in java/org/columba/mail/smtp/command/SendAllMessagesCommand.java
public void execute(IWorkerStatusController worker) throws Exception { IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message")); // get Outbox folder from reference outboxFolder = (OutboxFolder) r.getSourceFolder(); // get UID list of messages Object[] uids = outboxFolder.getUids(); // save every message in a list for (int i = 0; i < uids.length; i++) { if (outboxFolder.exists(uids[i]) == true) { SendableMessage message = outboxFolder .getSendableMessage(uids[i]); sendListManager.add(message); } } int actAccountUid = -1; List sentList = new Vector(); SMTPServer smtpServer = null; IMailbox sentFolder = null; // send all messages while (sendListManager.hasMoreMessages()) { SendableMessage message = sendListManager.getNextMessage(); // get account information from message if (message.getAccountUid() != actAccountUid) { actAccountUid = message.getAccountUid(); AccountItem accountItem = MailConfig.getInstance() .getAccountList().uidGet(actAccountUid); if (accountItem == null) { // use the default account accountItem = MailConfig.getInstance().getAccountList() .getDefaultAccount(); if (accountItem == null) continue; // skip message if there's no account // available to send it } // Sent folder sentFolder = (IMailbox) FolderTreeModel .getInstance() .getFolder( accountItem.getSpecialFoldersItem().get("sent")); // open connection to SMTP server smtpServer = new SMTPServer(accountItem); } smtpServer.sendMessage(message, worker); sentList.add(message.getHeader().get("columba.uid")); } // we are done - clear status text with a delay // (if this is not done, the initial text will stay in // case no messages were sent) worker.clearDisplayTextWithDelay(); // move all successfully send messages to the Sent folder if (sentList.size() > 0) { moveToSentFolder(sentList, sentFolder); sentList.clear(); } }
// in java/org/columba/mail/smtp/command/SendAllMessagesCommand.java
public void updateGUI() throws Exception { if (action != null) action.setEnabled(true); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
public void execute(IWorkerStatusController worker) throws Exception { ComposerCommandReference r = (ComposerCommandReference) getReference(); if (!validArguments(r)) return; // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message_compose")); // get composer controller // -> get all the account information from the controller composerController = r.getComposerController(); // close composer view if (composerController.getView().getFrame() != null) { composerController.getView().getFrame().setVisible(false); } sendMessageDialog = new SendMessageDialog(worker); ComposerModel model = ((ComposerModel) composerController.getModel()); AccountItem item = model.getAccountItem(); // sent folder IMailbox sentFolder = (IMailbox) FolderTreeModel.getInstance() .getFolder(item.getSpecialFoldersItem().get("sent")); // get the SendableMessage object SendableMessage message = null; try { // compose the message suitable for sending message = new MessageComposer(model).compose(worker, r .isAppendSignature()); } catch (JSCFException e1) { if (e1 instanceof CancelledException) { // user cancelled sending operation // open composer view showComposer = true; return; } else { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), e1.getMessage()); // open composer view showComposer = true; return; } } // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message_connect")); // open connection final SMTPServer server = new SMTPServer(item); // successfully connected and autenthenticated to SMTP server try { // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message")); IWorkerStatusChangeListener listener = new IWorkerStatusChangeListener() { public void workerStatusChanged(WorkerStatusChangedEvent e) { if (e.getSource().cancelled()) { try { server.dropConnection(); } catch (IOException e1) { } } } }; // important for cancel worker.addWorkerStatusChangeListener(listener); // send message server.sendMessage(message, worker); // not needed anymore worker.removeWorkerStatusChangeListener(listener); if (worker.cancelled()) { showComposer = true; return; } // mark as read Flags flags = new Flags(); flags.setSeen(true); message.getHeader().setFlags(flags); // save message in Sent folder ComposerCommandReference ref = new ComposerCommandReference( composerController, sentFolder); ref.setMessage(message); SaveMessageCommand c = new SaveMessageCommand(ref); CommandProcessor.getInstance().addOp(c); // -> get source reference of message // when replying this is the original sender's message // you selected and replied to IMailFolderCommandReference ref2 = model.getSourceReference(); if (ref2 != null && ((IMailbox) ref2.getSourceFolder()).exists(ref2 .getUids()[0])) { // mark message as answered ref2.setMarkVariant(MarkMessageCommand.MARK_AS_ANSWERED); MarkMessageCommand c1 = new MarkMessageCommand(ref2); CommandProcessor.getInstance().addOp(c1); } // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message_closing")); // close connection to server server.closeConnection(); // display status message worker.setDisplayText(MailResourceLoader.getString("statusbar", "message", "send_message_success")); } /* * catch (SMTPException e) { JOptionPane.showMessageDialog(null, * e.getMessage(), "Error while sending", * JOptionPane.ERROR_MESSAGE); // open composer view showComposer = * true; } */catch (Exception e) { // e.printStackTrace(); // open composer view showComposer = true; throw e; } }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
public void updateGUI() throws Exception { // can no longer assume that sendMessageDialog has been displayed if (sendMessageDialog != null) { // close send message dialog sendMessageDialog.setVisible(false); } if (showComposer == true && composerController.getView().getFrame() != null) { // re-open composer view composerController.getView().getFrame().setVisible(true); composerController.getView().getFrame().requestFocus(); } else { // do not prompt user if composer should be really closed composerController.setPromptOnDialogClosing(false); // save composer window state composerController.fireClosed(); } }
// in java/org/columba/mail/composer/MessageComposer.java
public SendableMessage compose(IWorkerStatusController workerStatusController, boolean appendSignature) throws Exception { this.accountUid = model.getAccountItem().getUid(); workerStatusController.setDisplayText("Composing Message..."); MimeTreeRenderer renderer = MimeTreeRenderer.getInstance(); SendableMessage message = new SendableMessage(); SendableHeader header = initHeader(); MimePart root = null; /* * *20030921, karlpeder* The old code was (accidentially!?) modifying * the attachment list of the model. This affects the composing when * called a second time for saving the message after sending! */ //List mimeParts = model.getAttachments(); List attachments = model.getAttachments(); List mimeParts = new ArrayList(); Iterator ite = attachments.iterator(); while (ite.hasNext()) { mimeParts.add(ite.next()); } // *20030919, karlpeder* Added handling of html messages StreamableMimePart body; if (model.isHtml()) { // compose message body as multipart/alternative XmlElement composerOptions = MailConfig.getInstance() .getComposerOptionsConfig().getRoot() .getElement("/options"); XmlElement html = composerOptions.getElement("html"); if (html == null) { html = composerOptions.addSubElement("html"); } String multipart = html.getAttribute("send_as_multipart", "true"); if (multipart.equals("true")) { // send as multipart/alternative body = composeMultipartAlternativeMimePart(appendSignature); } else { // send as text/html body = composeHtmlMimePart(appendSignature); } } else { // compose message body as text/plain body = composeTextMimePart(appendSignature); } if (body != null) { mimeParts.add(0, body); } // Create Multipart/Mixed if necessary if (mimeParts.size() > 1) { root = new MimePart(new MimeHeader("multipart", "mixed")); for (int i = 0; i < mimeParts.size(); i++) { root.addChild((StreamableMimePart) mimeParts.get(i)); } } else { root = (MimePart) mimeParts.get(0); } if (model.isSignMessage()) { SecurityItem item = model.getAccountItem().getPGPItem(); String idStr = item.get("id"); // if the id not currently set (for example in the security panel in // the account-config if ((idStr == null) || (idStr.length() == 0)) { // Set id on from address item.setString("id", model.getAccountItem().getIdentity() .getAddress().getMailAddress()); } PGPMimePart signPart = new PGPMimePart(new MimeHeader("multipart", "signed"), item); signPart.addChild(root); root = signPart; } if (model.isEncryptMessage()) { SecurityItem item = model.getAccountItem().getPGPItem(); // Set recipients from the recipients vector List recipientList = model.getRCPTVector(); StringBuffer recipientBuf = new StringBuffer(); for (Iterator it = recipientList.iterator(); it.hasNext();) { recipientBuf.append((String) it.next()); } item.setString("recipients", recipientBuf.toString()); PGPMimePart signPart = new PGPMimePart(new MimeHeader("multipart", "encrypted"), item); signPart.addChild(root); root = signPart; } header.setRecipients(model.getRCPTVector()); List headerItemList; headerItemList = model.getToList(); if ( ( headerItemList != null ) && (headerItemList.size() > 0) ){ Address adr = null; try { adr = Address.parse((String) headerItemList.get(0)); header.getAttributes().put("columba.to", adr); } catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); } } headerItemList = model.getCcList(); if ( ( headerItemList != null ) && (headerItemList.size() > 0) ) { Address adr = null; try { adr = Address.parse((String) headerItemList.get(0)); header.getAttributes().put("columba.cc", adr); } catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); } } root.getHeader().getHeader().merge(header.getHeader()); InputStream in = renderer.renderMimePart(root); // size int size = in.available() / 1024; header.getAttributes().put("columba.size", new Integer(size)); message.setHeader(header); message.setAccountUid(accountUid); //Do not access the inputstream after this line! message.setSourceStream(in); return message; }
95
            
// in java/org/columba/mail/gui/message/MessageController.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (Exception e) { LOG .warning("Could not create temporary email from the attachment."); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { viewerPlugin = createHTMLViewerPluginInstance("Default"); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { matcher.appendReplacement(modifiedBody, "missing"); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (Exception e) { matcher.appendReplacement(modifiedBody, "missing"); }
// in java/org/columba/mail/gui/tree/action/CreateVirtualFolderAction.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/tree/comparator/UnreadFolderComparator.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/tree/TreeViewTransferHandler.java
catch (Exception e) { // UnsupportedFlavorException, IOException DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
catch (Exception ex) { success = false; throw ex; }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTransfer.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/ObjectArrayTransfer.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/ActionList.java
catch (Exception ex) { ex.printStackTrace(); // this probably means that the configuration // is wrong // -> change this to a sane default value action.setAction("Mark Message"); ((MailFilterAction) action).setMarkVariant("read"); row = null; }
// in java/org/columba/mail/gui/config/filter/FilterTransferHandler.java
catch (Exception e) { DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/config/filter/FilterTransferHandler.java
catch (Exception e) { DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/config/accountlist/AccountListDialog.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/accountlist/AccountListDialog.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/accountlist/AccountListDialog.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/search/SearchFrame.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/account/IdentityPanel.java
catch (Exception e) { }
// in java/org/columba/mail/gui/config/account/OutgoingServerPanel.java
catch (Exception e) { // let exception handler process other errors new ExceptionHandler().processException(e); }
// in java/org/columba/mail/gui/config/accountwizard/AccountCreator.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/tagging/MailTagList.java
catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
// in java/org/columba/mail/gui/filtertoolbar/FilterToolbar.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerSpellCheck.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/action/SendLaterAction.java
catch (Exception e) { }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/table/TableViewTransferHandler.java
catch (Exception e) { // UnsupportedFlavorException, IOException DialogFacade.showExceptionDialog(e); }
// in java/org/columba/mail/gui/table/MessageReferencesTransfer.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/gui/table/action/TagMessageMenu.java
catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); return false; }
// in java/org/columba/mail/gui/table/TableView.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } JOptionPane.showMessageDialog(this, "Error while loading column: " + name + "\n" + e.getMessage()); }
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; }
// in java/org/columba/mail/pop3/POP3ServerCollection.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; }
// in java/org/columba/mail/imap/IMAPServer.java
catch (Exception e) { // don't care }
// in java/org/columba/mail/shutdown/ClearRecentFlagPlugin.java
catch (Exception e1) { }
// in java/org/columba/mail/filter/FilterCompoundCommand.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/filter/plugins/AddressbookFilter.java
catch (Exception ex) { return false; }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } // TODO (@author fdietz): i18n int value = JOptionPane.showConfirmDialog(FrameManager.getInstance() .getActiveFrame(), "An error occured while saving the spam database.\n" + "Try again?", "Error saving database", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (value == JOptionPane.YES_OPTION) { save(); } }
// in java/org/columba/mail/spam/command/LearnMessageAsSpamCommand.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/command/LearnMessageAsHamCommand.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
catch (Exception e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinPlugin.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/spam/spamassassin/ExternalToolsHelper.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { e.printStackTrace(System.err); exitStatus = 1; }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (Exception e) { LOG.severe("Error substituting special characters: " + e.getMessage()); return null; // error }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (Exception e) { LOG.severe("Error substituting special characters: " + e.getMessage()); return null; // error }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/folder/imap/IMAPCache.java
catch (Exception e) { return null; }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
catch (Exception e1) { // don't care }
// in java/org/columba/mail/folder/imap/IMAPRootFolder.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/headercache/SyncHeaderList.java
catch (Exception ex) { ex.printStackTrace(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (Exception e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/mailboximport/AbstractMailboxImporter.java
catch (Exception ex) { //TODO (@author fdietz): i18n int result = JOptionPane.showConfirmDialog( FrameManager.getInstance().getActiveFrame(), "An error occured while importing a message. Try again?", "Retry message import?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (result == JOptionPane.YES_OPTION) { i--; } else if (result == JOptionPane.CANCEL_OPTION) { worker.cancel(); } }
// in java/org/columba/mail/folder/outbox/OutboxFolder.java
catch (Exception e) { }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception ex) { ex.printStackTrace(); return; }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e1) { e1.printStackTrace(); }
// in java/org/columba/mail/folder/virtual/VirtualFolder.java
catch (Exception e1) { }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception ex) { }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception ex) { }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error while trying to load filter plugin =" + type); ex.printStackTrace(); }
// in java/org/columba/mail/folder/search/DefaultSearchEngine.java
catch (Exception e) { e.printStackTrace(); LOG.warning("NonDefaultSearch engine "+ nonDefaultEngine.toString()+"reported an error: falling back to default search:\n"+e.getMessage()); defaultEngine = new FilterRule(); notDefaultEngine = filter.getFilterRule(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { LOG.severe(e.getMessage()); e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); try { reset(); } catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); } }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (Exception e) { LOG.severe("Creation of Lucene Index failed :" + e.getLocalizedMessage()); // show neat error dialog here }
// in java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java
catch (Exception e) { LOG.warning("Error creating new virtual folder: " + e.getMessage()); return null; }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception e) { LOG.severe("Error parsing body: " + e.getMessage()); body = "<em>Error parsing body!!!</em>"; }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (Exception e) { LOG.severe("Error parsing header value: " + e.getMessage()); }
// in java/org/columba/mail/folder/command/TagMessageCommand.java
catch (Exception e) { LOG.severe("Error getting header list from virtual folder"); e.printStackTrace(); }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/folder/AbstractFolder.java
catch (Exception e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (Exception e) { nextMessageUid = 0; }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (Exception e) { // e.printStackTrace(); // open composer view showComposer = true; throw e; }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { e.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (Exception e) { // TODO (@author fdietz): add error dialog e.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (Exception e1) { // TODO (@author fdietz): add error dialog e1.printStackTrace(); }
14
            
// in java/org/columba/mail/gui/tree/command/CreateAndSelectSubFolderCommand.java
catch (Exception ex) { success = false; throw ex; }
// in java/org/columba/mail/gui/table/command/ViewHeaderListCommand.java
catch (Exception e) { updateGui = false; // Reset the selection ((MailFrameMediator) mediator).setTreeSelection(null); new ClearHeaderlistAction(mediator).actionPerformed(null); throw e; }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (Exception e) { // clear statusbar message server.getObservable().clearMessage(); throw e; }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
catch (Exception e) { throw e; }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (Exception e) { // e.printStackTrace(); // open composer view showComposer = true; throw e; }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); }
2
unknown (Lib) FileNotFoundException 0 0 0 2
            
// in java/org/columba/mail/gui/config/filter/ConfigFrame.java
catch (FileNotFoundException fnfe) { DialogFacade.showExceptionDialog(fnfe); }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.FileNotFoundException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot read from temp file used " + "by external editor."); return ""; }
0 0
checked (Domain) FolderCreationException
public class FolderCreationException extends Exception {

	/**
	 * Constructs the FolderCreationException.java.
	 * 
	 * 
	 */
	public FolderCreationException() {
		super();
	}

	/**
	 * Constructs the FolderCreationException.java.
	 * 
	 * @param arg0
	 */
	public FolderCreationException(String arg0) {
		super(arg0);
	}

	/**
	 * Constructs the FolderCreationException.java.
	 * 
	 * @param arg0
	 */
	public FolderCreationException(Throwable arg0) {
		super(arg0);
	}

	/**
	 * Constructs the FolderCreationException.java.
	 * 
	 * @param arg0
	 * @param arg1
	 */
	public FolderCreationException(String arg0, Throwable arg1) {
		super(arg0, arg1);
	}

}
3
            
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createChild(IMailFolder parent, String name, String childType) throws FolderCreationException { IMailFolder child; try { IExtension extension = handler.getExtension(childType); child = (IMailFolder) extension.instanciateExtension(new Object[] { name, childType, path }); // Add child to parent parent.addSubfolder(child); } catch (Exception e) { throw new FolderCreationException(e); } return child; }
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createVirtualFolder(IMailFolder parent, String name) throws FolderCreationException { IMailFolder child; try { IExtension extension = handler.getExtension("VirtualFolder"); child = (IMailFolder) extension.instanciateExtension(new Object[] {name}); // Add child to parent parent.addSubfolder(child); } catch (Exception e) { throw new FolderCreationException(e); } return child; }
// in java/org/columba/mail/folder/FolderFactory.java
public IMAPFolder createIMAPRootFolder(AccountItem account) throws FolderCreationException { try { IExtension extension = handler.getExtension("IMAPRootFolder"); IMAPRootFolder child = (IMAPRootFolder) extension.instanciateExtension(new Object[] {account, path}); // get root folder IMailFolder parent = (IMailFolder) FolderTreeModel.getInstance().getRoot(); // Add child to parent parent.addSubfolder(child); // create mandatory IMAP Inbox folder IExtension extension2 = handler.getExtension("IMAPFolder"); IMAPFolder inbox = (IMAPFolder) extension2.instanciateExtension(new Object[] { "INBOX", "IMAPFolder", path }); // associate inbox with root folder child.setInbox(inbox); // notify folder tree model FolderTreeModel.getInstance().nodeStructureChanged(parent); return inbox; } catch (Exception e) { throw new FolderCreationException(e); } }
3
            
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (Exception e) { throw new FolderCreationException(e); }
4
            
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createDefaultChild(IMailFolder parent, String name) throws FolderCreationException { List possibleChilds = getPossibleChilds(parent); if (possibleChilds.size() > 0) { String childType = (String) possibleChilds.get(0); return createChild(parent, name, childType); } else { return null; } }
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createChild(IMailFolder parent, String name, String childType) throws FolderCreationException { IMailFolder child; try { IExtension extension = handler.getExtension(childType); child = (IMailFolder) extension.instanciateExtension(new Object[] { name, childType, path }); // Add child to parent parent.addSubfolder(child); } catch (Exception e) { throw new FolderCreationException(e); } return child; }
// in java/org/columba/mail/folder/FolderFactory.java
public IMailFolder createVirtualFolder(IMailFolder parent, String name) throws FolderCreationException { IMailFolder child; try { IExtension extension = handler.getExtension("VirtualFolder"); child = (IMailFolder) extension.instanciateExtension(new Object[] {name}); // Add child to parent parent.addSubfolder(child); } catch (Exception e) { throw new FolderCreationException(e); } return child; }
// in java/org/columba/mail/folder/FolderFactory.java
public IMAPFolder createIMAPRootFolder(AccountItem account) throws FolderCreationException { try { IExtension extension = handler.getExtension("IMAPRootFolder"); IMAPRootFolder child = (IMAPRootFolder) extension.instanciateExtension(new Object[] {account, path}); // get root folder IMailFolder parent = (IMailFolder) FolderTreeModel.getInstance().getRoot(); // Add child to parent parent.addSubfolder(child); // create mandatory IMAP Inbox folder IExtension extension2 = handler.getExtension("IMAPFolder"); IMAPFolder inbox = (IMAPFolder) extension2.instanciateExtension(new Object[] { "INBOX", "IMAPFolder", path }); // associate inbox with root folder child.setInbox(inbox); // notify folder tree model FolderTreeModel.getInstance().nodeStructureChanged(parent); return inbox; } catch (Exception e) { throw new FolderCreationException(e); } }
2
            
// in java/org/columba/mail/gui/tree/command/CreateSubFolderCommand.java
catch (FolderCreationException ex) { // show error message JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MessageFormat.format( MailResourceLoader.getString("dialog", "folder", "error_no_subfolder_allowed"), new String[] { parentFolder.getName() }), MailResourceLoader.getString("dialog", "folder", "error_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/gui/config/accountwizard/AccountCreator.java
catch (FolderCreationException e1) { e1.printStackTrace(); }
0 0
checked (Domain) FolderInconsistentException
public class FolderInconsistentException extends Exception {
    /**
 * Constructs the FolderInconsistentException.java.
 * 
 * 
 */
    public FolderInconsistentException() {
        super();
    }

    /**
 * Constructs the FolderInconsistentException.java.
 * 
 * @param arg0
 */
    public FolderInconsistentException(String arg0) {
        super(arg0);
    }

    /**
 * Constructs the FolderInconsistentException.java.
 * 
 * @param arg0
 * @param arg1
 */
    public FolderInconsistentException(String arg0, Throwable arg1) {
        super(arg0, arg1);
    }

    /**
 * Constructs the FolderInconsistentException.java.
 * 
 * @param arg0
 */
    public FolderInconsistentException(Throwable arg0) {
        super(arg0);
    }
}
2
            
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public Source getMessageSource(Object uid) throws Exception { if( ! exists(uid)) throw new FolderInconsistentException(); MboxMessage message = (MboxMessage) messages.get(uid); FileInputStream in = new FileInputStream(mboxFile); in.skip(message.getStart()); File tempFile = File.createTempFile("mbox_message", ".tmp"); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); StreamUtils.streamCopy(in, out, (int) message.getLength()); in.close(); out.close(); return new FileSource(tempFile); }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public Source getMessageSource(Object uid) throws Exception { File file = new File(folder.getDirectoryFile() + File.separator + ((Integer) uid).toString()); try { return new FileSource(file); } catch (IOException e) { throw new FolderInconsistentException(); } }
1
            
// in java/org/columba/mail/folder/mh/MHDataStorage.java
catch (IOException e) { throw new FolderInconsistentException(); }
0 2
            
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (FolderInconsistentException e) { super.removeMessage(uid); throw e; }
2
            
// in java/org/columba/mail/gui/message/command/ViewMessageCommand.java
catch (FolderInconsistentException e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok").replaceAll("&", ""), }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader .getString("dialog", "error", "message_deleted"), "Error", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, null, null); if (result == JOptionPane.YES_OPTION) { // Synchronize the complete folder SyncHeaderList.sync((AbstractMessageFolder) srcFolder, srcFolder.getHeaderList()); } throw new CommandCancelledException(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (FolderInconsistentException e) { super.removeMessage(uid); throw e; }
0
unknown (Lib) IMAPDisconnectedException 0 0 0 15
            
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e1) { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return protocol.list(reference, pattern); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMimeTree(uid, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMimePartBodyStream(uid, address, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getHeaders(uid, keys, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getAllHeaders(uid, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMimePartSourceStream(uid, address, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getMessageSourceStream(uid, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { markMessage(uids, variant, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { setFlags(uids, flags, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return getIndex(uid, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return search(key, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return search(filterRule, folder); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPDisconnectedException e) { return fetchSubscribedFolders(); }
0 0
unknown (Lib) IMAPException 0 0 42
            
// in java/org/columba/mail/imap/IMAPServer.java
public String getDelimiter() throws IOException, IMAPException, CommandCancelledException { if (delimiter == null) { // try to determine delimiter delimiter = fetchDelimiter(); } return delimiter; }
// in java/org/columba/mail/imap/IMAPServer.java
private void openConnection() throws IOException, IMAPException, CommandCancelledException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "connecting")); int sslType = item.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = item.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || isSupported("STARTTLS") || (capabilities.length == 0)) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/imap/IMAPServer.java
private void login() throws IOException, IMAPException, CommandCancelledException { PasswordDialog dialog = new PasswordDialog(); ensureConnectedState(); boolean authenticated = false; boolean first = true; char[] password = new char[0]; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "authenticating")); int loginMethod = getLoginMethod(); // Try to get Password from Configuration if (item.get("password").length() != 0) { password = Blowfish.decrypt(item.get("password")); } // Login loop until authenticated while (!authenticated) { // On the first try check if we need to show the password dialog // -> not necessary when password was stored if (!first || password.length == 0) { // Show the password dialog dialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { item.get("user"), item.get("host") }), new String(password), item.getBoolean("save_password")); if (dialog.success()) { // User pressed OK password = dialog.getPassword(); // Save or Clear the password in the configuration item.setBoolean("save_password", dialog.getSave()); if (dialog.getSave()) { item.setString("password", Blowfish.encrypt(password)); } else { item.setString("password", ""); } } else { // User cancelled authentication throw new CommandCancelledException(); } } // From this point we have a username and password // from configuration of from the dialog try { if (loginMethod == AuthenticationManager.LOGIN) { protocol.login(item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } else { try { // AUTH protocol.authenticate(AuthenticationManager .getSaslName(loginMethod), item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } } first = false; } // Sync subscribed folders if this is the first login // in this session if (firstLogin) { if( firstLoginAction != null) { firstLoginAction.actionPerformed(); } } firstLogin = false; }
// in java/org/columba/mail/imap/IMAPServer.java
public void ensureSelectedState(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { // ensure that we are logged in already ensureLoginState(); String path = folder.getImapPath(); // if mailbox is not already selected select it if (protocol.getState() != IMAPProtocol.SELECTED || !protocol.getSelectedMailbox().equals(path)) { printStatusMessage(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", "select"), new Object[] { folder.getName() })); // Here we get the new mailboxinfo for the folder messageFolderInfo = protocol.select(path); // Set the readOnly flag folder.setReadOnly(!messageFolderInfo.isWriteAccess()); // Convert to a MailboxStatus selectedStatus = new MailboxStatus(messageFolderInfo); statusDirty = false; selectedFolder = folder; // delete any cached information aktMimeTree = null; aktMessageUid = null; } }
// in java/org/columba/mail/imap/IMAPServer.java
public int getLargestRemoteUid(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { MailboxStatus status = getStatus(folder); return getLargestRemoteUid(folder, status); }
// in java/org/columba/mail/imap/IMAPServer.java
public int getLargestRemoteUid(IMAPFolder folder, MailboxStatus status) throws IOException, IMAPException, CommandCancelledException { if(status.getUidNext() < 0 && status.getMessages() > 0 ) { return fetchUid(new SequenceSet(status.getMessages()), folder); } else { return (int)(status.getUidNext() -1); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MailboxStatus getStatus(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); if (selectedFolder != null && selectedFolder.equals(folder) && !statusDirty) { // We don't need to issue a additional NOOP // here since the ensureLogin() call above // ensures also the correct Status in a // MIN_IDLE interval timeframe. return selectedStatus; } if( selectedFolder == null || protocol.getState() < IMAPProtocol.SELECTED) { // if none selected select this folder instead of getting the status ensureSelectedState(folder); return selectedStatus; } printStatusMessage(MessageFormat.format(MailResourceLoader.getString( "statusbar", "message", "status"), new Object[] { folder .getName() })); MailboxStatus result = protocol.status(folder.getImapPath(), new String[] { "MESSAGES", "UIDNEXT", "RECENT", "UNSEEN", "UIDVALIDITY" }); // No response means zero! if( result.getUnseen() == -1) result.setUnseen(0); if( result.getRecent() == -1) result.setRecent(0); statusDirty = false; return result; }
// in java/org/columba/mail/imap/IMAPServer.java
protected String fetchDelimiter() throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); try { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); } catch (IMAPDisconnectedException e1) { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void createMailbox(String mailboxName, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { // make sure we are logged in ensureLoginState(); // concate the full name of the new mailbox String fullName; String path = (folder == null ? "" : folder.getImapPath()); if (path.length() > 0) fullName = path + getDelimiter() + mailboxName; else fullName = mailboxName; // check if the mailbox already exists -> subscribe only if (protocol.list("", fullName).length == 0) { // create the mailbox on the server protocol.create(fullName); } // subscribe to the new mailbox protocol.subscribe(fullName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void renameFolder(String oldMailboxName, String newMailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.rename(oldMailboxName, newMailboxName); protocol.unsubscribe(oldMailboxName); protocol.subscribe(newMailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void subscribeFolder(String mailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.subscribe(mailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void unsubscribeFolder(String mailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.unsubscribe(mailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void expunge(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); updatesEnabled = false; protocol.expunge(); updatesEnabled = true; statusDirty = true; }
// in java/org/columba/mail/imap/IMAPServer.java
public int fetchUid( SequenceSet set, IMAPFolder folder ) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); Integer[] result = protocol.fetchUid(set); if( result.length == 1) return result[0].intValue(); else return -1; }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] fetchUids(SequenceSet set, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { IStatusObservable observable = getObservable(); printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_uid_list")); ensureSelectedState(folder); if (messageFolderInfo.getExists() > 0) { SequenceSet[] packs = divide(set); Integer[] result = new Integer[set.getLength(messageFolderInfo .getExists())]; // update the progress if (observable != null) { observable.setCurrent(0); observable.setMax(result.length); } int pos = 0; for (int i = 0; i < packs.length; i++) { int packLength = packs[i].getLength(messageFolderInfo .getExists()); System.arraycopy(protocol.fetchUid(packs[i]), 0, result, pos, packLength); pos += packLength; // update the progress if (observable != null) { observable.setCurrent(pos); } } return result; } else { return new Integer[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public IMAPFlags[] fetchFlagsListStartFrom(int startIdx, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { IStatusObservable observable = getObservable(); ensureSelectedState(folder); if (selectedStatus.getMessages() - startIdx >= 0) { SequenceSet set = new SequenceSet(); set.addOpenRange(startIdx); SequenceSet[] packs = divide(set); // update the progress if (observable != null) { observable.setCurrent(0); observable.setMax(set.getLength(selectedStatus.getMessages())); } List allResults = new ArrayList(packs.length); int pos = 0; // store the intermediate results in a list for (int i = 0; i < packs.length; i++) { try { IMAPFlags[] r = protocol.fetchFlags(packs[i]); pos += r.length; allResults.add(r); } catch (IMAPException e) { // Entry does not exist on server // -> add nothing } // update the progress if (observable != null) { observable.setCurrent(pos); } } // Combine the results in one array IMAPFlags[] result = new IMAPFlags[pos]; Iterator it = allResults.iterator(); pos = 0; while (it.hasNext()) { IMAPFlags[] r = (IMAPFlags[]) it.next(); System.arraycopy(r, 0, result, pos, r.length); pos += r.length; } return result; } else { return new IMAPFlags[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public IMAPFlags[] fetchFlagsListStartFrom2(int startIdx, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); if (selectedStatus.getMessages() - startIdx >= 0) { SequenceSet set = new SequenceSet(); set.add(startIdx, Math.min(startIdx + 9, selectedStatus.getMessages())); IMAPFlags[] result = protocol.fetchFlags(set); return result; } else { return new IMAPFlags[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public NamespaceCollection fetchNamespaces() throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); return protocol.namespace(); }
// in java/org/columba/mail/imap/IMAPServer.java
private void doFetchHeaderList(IHeaderList headerList, List list) throws IOException, IMAPException { // get list of user-defined headerfields String[] headerFields = CachedHeaderfields.getDefaultHeaderfields(); IMAPHeader[] headers = protocol.uidFetchHeaderFields(new SequenceSet( list), headerFields); for (int i = 0; i < headers.length; i++) { // add it to the headerlist ColumbaHeader header = new ColumbaHeader(headers[i].getHeader()); Object uid = headers[i].getUid(); header.getAttributes().put("columba.uid", uid); header.getAttributes().put("columba.size", headers[i].getSize()); header.getAttributes().put("columba.accountuid", getAccountUid()); // set the attachment flag header.getAttributes().put("columba.attachment", header.hasAttachments()); // make sure that we have a Message-ID String messageID = (String) header.get("Message-Id"); if (messageID != null) header.set("Message-ID", header.get("Message-Id")); headerList.add(header, uid); } }
// in java/org/columba/mail/imap/IMAPServer.java
protected synchronized void ensureConnectedState() throws CommandCancelledException, IOException, IMAPException { if (Math.abs(System.currentTimeMillis() - lastCommunication) > MIN_IDLE) { try { protocol.noop(); } catch (IOException e) { // Now the state of the procotol is more certain correct } catch (IMAPDisconnectedException e) { } } if (protocol.getState() < IMAPProtocol.NON_AUTHENTICATED) { printStatusMessage(MailResourceLoader .getString("statusbar", "message", "connecting")); openConnection(); } // update this point of time as last communication // since every functio calls this before communicating with // the server lastCommunication = System.currentTimeMillis(); }
// in java/org/columba/mail/imap/IMAPServer.java
protected void ensureLoginState() throws IOException, IMAPException, CommandCancelledException { ensureConnectedState(); if (protocol.getState() < IMAPProtocol.AUTHENTICATED) { printStatusMessage(MailResourceLoader .getString("statusbar", "message", "authenticating")); login(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MimeTree getMimeTree(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); // Use a caching mechanism for this if (aktMimeTree == null || !aktMessageUid.equals(uid)) { aktMimeTree = protocol.uidFetchBodystructure(((Integer) uid) .intValue()); aktMessageUid = uid; } return aktMimeTree; } catch (IMAPDisconnectedException e) { return getMimeTree(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidFetchBody(((Integer) uid).intValue(), address); } catch (IMAPDisconnectedException e) { return getMimePartBodyStream(uid, address, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Header getHeaders(Object uid, String[] keys, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); IMAPHeader[] headers = protocol.uidFetchHeaderFields( new SequenceSet(((Integer) uid).intValue()), keys); return headers[0].getHeader(); } catch (IMAPDisconnectedException e) { return getHeaders(uid, keys, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Header getAllHeaders(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); IMAPHeader[] headers = protocol.uidFetchHeader(new SequenceSet( ((Integer) uid).intValue())); return headers[0].getHeader(); } catch (IMAPDisconnectedException e) { return getAllHeaders(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); InputStream headerSource = protocol.uidFetchMimeHeaderSource( ((Integer) uid).intValue(), address); InputStream bodySource = protocol.uidFetchBody(((Integer) uid) .intValue(), address); return new SequenceInputStream(headerSource, bodySource); } catch (IMAPDisconnectedException e) { return getMimePartSourceStream(uid, address, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMessageSourceStream(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidFetchMessage(((Integer) uid).intValue()); } catch (IMAPDisconnectedException e) { return getMessageSourceStream(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void markMessage(Object[] uids, int variant, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { if (uids == null || uids.length == 0) return; try { ensureSelectedState(folder); SequenceSet uidSet = new SequenceSet(Arrays.asList(uids)); protocol.uidStore(uidSet, variant > 0, convertToFlags(variant)); statusDirty = true; } catch (IMAPDisconnectedException e) { markMessage(uids, variant, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void setFlags(Object[] uids, IMAPFlags flags, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SequenceSet uidSet = new SequenceSet(Arrays.asList(uids)); protocol.uidStore(uidSet, true, flags); } catch (IMAPDisconnectedException e) { setFlags(uids, flags, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public int getIndex(Integer uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SearchKey key = new SearchKey(SearchKey.UID, uid); Integer[] index = protocol.search(new SearchKey[] { key }); if (index.length > 0) { return index[0].intValue(); } else { return -1; } } catch (IMAPDisconnectedException e) { return getIndex(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] search(SearchKey key, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidSearch(new SearchKey[] { key }); } catch (IMAPDisconnectedException e) { return search(key, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public List search(IFilterRule filterRule, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SearchKey[] searchRequest; searchRequest = createSearchKey(filterRule); Integer[] result = null; Charset charset = UTF8; while (result == null) { try { result = protocol.uidSearch(charset, searchRequest); } catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; } } return Arrays.asList(result); } catch (IMAPDisconnectedException e) { return search(filterRule, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MailboxInfo getMessageFolderInfo(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); return messageFolderInfo; }
// in java/org/columba/mail/imap/IMAPServer.java
public ListInfo[] fetchSubscribedFolders() throws IOException, IMAPException, CommandCancelledException { try { ensureLoginState(); ListInfo[] lsub = protocol.lsub("", "*"); // Also set the delimiter if (lsub.length > 0) { delimiter = lsub[0].getDelimiter(); } return lsub; } catch (IMAPDisconnectedException e) { return fetchSubscribedFolders(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public boolean isSelected(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); return (protocol.getState() == IMAPProtocol.SELECTED && protocol .getSelectedMailbox().equals(folder.getImapPath())); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
Object[] synchronizeHeaderlist() throws Exception, IOException, CommandCancelledException, IMAPException { Object[] result = new Object[0]; // do not sync folders which have a Noselect flag if (!getConfiguration().getBooleanWithDefault("selectable", true)) return result; // Check if the mailbox has changed MailboxStatus status = getServer().getStatus(this); if (status.getMessages() == 0) { purgeHeaderList(); syncMailboxInfo(status); return result; } if (!firstSync && status.getMessages() == this.getMessageFolderInfo() .getExists()) { return result; } List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); int largestLocalUid = localUids.size() > 0 ? ((Integer) localUids .get(localUids.size() - 1)).intValue() : -1; int largestRemoteUid = getServer().getLargestRemoteUid(this, status); if (localUids.size() == status.getMessages() && largestRemoteUid == largestLocalUid) { // Seems to be no change! if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } return result; } printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); largestRemoteUid = getServer().fetchUid( new SequenceSet(SequenceEntry.STAR), this); if (largestRemoteUid == -1) { largestRemoteUid = getServer().fetchUid( new SequenceSet(status.getMessages()), this); } int largestLocalUidIndex = findLargestLocalUidIndex(localUids); int newMessages = status.getMessages() - largestLocalUidIndex; /* * // Somehow there are new messages that // have a lower index -> out * of sync if (localUids.size() - status.getMessages() + newMessages < * 0) { * * LOG.severe("Folder " + getName() + " is out of sync -> recreating the * cache!"); purgeHeaderList(); // all messages are new newMessages = * status.getMessages(); // Set the index of the largest Uid to 0 // -> * ensure it works with the fetch of new // messages part below * largestLocalUidIndex = 0; largestLocalUid = -1; * * localUids.clear(); } */ LOG.fine("Found " + newMessages + " new Messages"); // If we have new messages add them to the headerlist if (newMessages > 0) { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_new_headers")); // Ensure sizes are correct getMessageFolderInfo().setExists(localUids.size()); getMessageFolderInfo().setUnseen( Math.min(getMessageFolderInfo().getUnseen(), localUids .size())); getMessageFolderInfo().setRecent(0); List newUids = fetchNewMessages(largestLocalUidIndex); localUids.addAll(newUids); if (newUids.size() < newMessages) { // There are still more messages to update // -> issue another fetch messages command CommandProcessor.getInstance().addOp( new FetchMessagesCommand( new MailFolderCommandReference(this), newMessages, largestLocalUidIndex, newUids .size())); } else { fetchDone(); } result = newUids.toArray(new Object[0]); } else { // Number of deleted messages is computed from exists on imap and // local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } } return result; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private int findLargestLocalUidIndex(List localUids) throws IOException, IMAPException, CommandCancelledException { int largestLocalUidIndex = -1; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); // Compute the number of new messages if (localUids.size() > 0) { // Find the index of the largest local Uid int position = localUids.size() - 1; while (largestLocalUidIndex == -1 && position >= localUids.size() - 10 && position >= 0) { largestLocalUidIndex = getServer().getIndex( (Integer) localUids.get(position--), this); } // Still not found -> do a binary search if (largestLocalUidIndex == -1) { int a, b, c; int index; a = 0; b = position; while (b > a && b - a > 1) { c = Math.round((b - a) * 0.5f) + a; index = getServer().getIndex((Integer) localUids.get(c), this); if (index == -1) { b = c; } else { a = c; largestLocalUidIndex = index; } } // removedLocalUids = localUids.size() - 1 - position; } else { // -2 because of the decrement in line 317 // removedLocalUids = localUids.size() - 2 - position; } // Check if all local uids have been deleted if (largestLocalUidIndex == -1) { // all messages are new largestLocalUidIndex = 0; } } else { // all messages are new largestLocalUidIndex = 0; } return largestLocalUidIndex; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void findRemovedMessages(MailboxStatus status, List localUids) throws Exception, IOException, IMAPException, CommandCancelledException { int largestRemoteUid = getServer().getLargestRemoteUid(this); int deletedMessages = localUids.size() - status.getMessages(); LOG.fine("Found " + deletedMessages + " deleted Messages"); // Find the messages that have been deleted if (deletedMessages > 0) { int found = 0; // First deleted all local uids that // are larger than the largest remote uid while (localUids.size() > 0 && found != deletedMessages && ((Integer) localUids.get(localUids.size() - 1)) .intValue() > largestRemoteUid) { Flags flags = getHeaderList().remove( localUids.get(localUids.size() - 1)).getFlags(); fireMessageRemoved(localUids.remove(localUids.size() - 1), flags); found++; } // Search in packs beginning from newest to oldest // -> in most cases this should save us a lot of uid fetchings to // find the deleted messages // Pack size is min 10, max 200 else mailboxsize / 10 int packSize = Math.min(Math.max(deletedMessages, status .getMessages() / 10), 200); int upper = status.getMessages(); int localPointer = localUids.size() - 1; // Fetch Pack outer loop while (upper >= 1 && found != deletedMessages) { SequenceSet set = new SequenceSet(); set.add(Math.max(upper - packSize + 1, 1), upper); // Fetch these uids and compare them to the // local list Integer[] actUids = getServer().fetchUids(set, this); // Compare inner loop for (int i = actUids.length - 1; i >= 0 && found != deletedMessages; i--) { // Find missing uids loop while (found != deletedMessages && localPointer >= 0 && !localUids.get(localPointer).equals(actUids[i])) { // We found the uid of a deleted message // -> remove it from the headerlist getHeaderList().remove(localUids.get(localPointer)); found++; localPointer--; } // next position in the local uid list localPointer--; } upper = upper - packSize; } // All the other local mails are deleted while (found < deletedMessages && localPointer >= 0) { getHeaderList().remove(localUids.get(localPointer--)); found++; } if (found != deletedMessages) { LOG.severe("Assertion failed : found only " + found + " of " + deletedMessages); } } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
List fetchNewMessages(int startIndex) throws IOException, IMAPException, CommandCancelledException, Exception { IMAPFlags[] newFlags = getServer().fetchFlagsListStartFrom2( startIndex + 1, this); List newUids = new ArrayList(newFlags.length); // Build a list of the new uids for (int i = 0; i < newFlags.length; i++) { // Update the list of new and local uids newUids.add(newFlags[i].getUid()); } // Fetch the headers of the new messages ... getServer().fetchHeaderList(getHeaderList(), newUids, this); // .. and set the flags setFlags(newFlags); // fire message added updates for (int i = 0; i < newFlags.length; i++) { fireMessageAdded(newFlags[i].getUid(), newFlags[i]); } return newUids; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void synchronizeFlags(MailboxStatus status) throws Exception, IOException, CommandCancelledException, IMAPException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_flags")); MailboxStatus flagStatus = new MailboxStatus(); flagStatus.setMessages(status.getMessages()); // Build the remote lists of messages that are UNSEEN, FLAGGED, DELETED, // JUNK SearchKey unseenKey = new SearchKey(SearchKey.UNSEEN); List remoteUnseenUids = Arrays.asList(getServer().search(unseenKey, this)); flagStatus.setUnseen(remoteUnseenUids.size()); SearchKey flaggedKey = new SearchKey(SearchKey.FLAGGED); List remoteFlaggedUids = Arrays.asList(getServer().search(flaggedKey, this)); SearchKey deletedKey = new SearchKey(SearchKey.DELETED); List remoteDeletedUids = Arrays.asList(getServer().search(deletedKey, this)); SearchKey recentKey = new SearchKey(SearchKey.RECENT); List remoteRecentUids = Arrays.asList(getServer().search(recentKey, this)); flagStatus.setRecent(remoteRecentUids.size()); SearchKey junkKey = new SearchKey(SearchKey.KEYWORD, "JUNK"); List remoteJunkUids = Arrays.asList(getServer().search(junkKey, this)); SearchKey answeredKey = new SearchKey(SearchKey.ANSWERED); List remoteAnsweredUids = Arrays.asList(getServer().search(answeredKey, this)); SearchKey draftKey = new SearchKey(SearchKey.DRAFT); List remoteDraftUids = Arrays.asList(getServer().search(draftKey, this)); // update the local flags and ensure that the MailboxInfo is correct ICloseableIterator headerIterator = getHeaderList().headerIterator(); int unseen = 0; int flagged = 0; int recent = 0; int deleted = 0; int junk = 0; int answered = 0; int draft = 0; while (headerIterator.hasNext()) { IColumbaHeader header = (IColumbaHeader) headerIterator.next(); Object uid = header.get("columba.uid"); Flags flag = header.getFlags(); Flags oldFlag = (Flags) flag.clone(); int index; index = Collections.binarySearch(remoteUnseenUids, uid); flag.setSeen(index < 0); if (!flag.getSeen()) { unseen++; } index = Collections.binarySearch(remoteDeletedUids, uid); flag.setDeleted(index >= 0); if (flag.getDeleted()) { deleted++; } index = Collections.binarySearch(remoteFlaggedUids, uid); flag.setFlagged(index >= 0); if (flag.getFlagged()) { flagged++; } index = Collections.binarySearch(remoteRecentUids, uid); flag.setRecent(index >= 0); if (flag.getRecent()) { recent++; } index = Collections.binarySearch(remoteJunkUids, uid); header.getAttributes().put("columba.spam", new Boolean(index >= 0)); if (index >= 0) { junk++; } index = Collections.binarySearch(remoteAnsweredUids, uid); flag.setAnswered(index >= 0); if (flag.getAnswered()) { answered++; } index = Collections.binarySearch(remoteDraftUids, uid); flag.setDraft(index >= 0); if (flag.getDraft()) { draft++; } if (!flag.equals(oldFlag)) { getHeaderList().update(uid, header); fireMessageFlagChanged(uid, oldFlag, 0); } } headerIterator.close(); if (remoteJunkUids.size() != junk || remoteRecentUids.size() != recent || remoteFlaggedUids.size() != flagged || remoteDeletedUids.size() != deleted || remoteUnseenUids.size() != unseen || remoteAnsweredUids.size() != answered || remoteDraftUids.size() != draft) { // Something is wrong // Sync again synchronizeHeaderlist(); return; } syncMailboxInfo(flagStatus); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public String getImapPath() throws IOException, IMAPException, CommandCancelledException { StringBuffer path = new StringBuffer(); path.append(getName()); IMailFolder child = this; while (true) { child = (IMailFolder) child.getParent(); if (child instanceof IMAPRootFolder) { break; } String n = ((IMAPFolder) child).getName(); path.insert(0, n + getServer().getDelimiter()); } return path.toString(); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
void fetchDone() throws IOException, CommandCancelledException, IMAPException, Exception { MailboxStatus status = getServer().getStatus(this); List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); // Number of deleted messages is computed from exists on imap and local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } // Apply filter if enabled ImapItem item = getServer().getItem(); boolean applyFilter = item.getBooleanWithDefault( "automatically_apply_filter", false); // if "automatically apply filter" is selected & there // are // new // messages if (applyFilter) { CommandProcessor.getInstance() .addOp( new ApplyFilterCommand( new MailFolderCommandReference(this))); } // Reenable Updating the mailbox mailboxSyncEnabled = true; }
5
            
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { // CAPA not supported capabilities = new String[0]; }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { // Entry does not exist on server // -> add nothing }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; }
4
            
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; }
0
checked (Lib) IOException 0 0 129
            
// in java/org/columba/mail/url/cid/Handler.java
protected URLConnection openConnection(URL u) throws IOException { return new CidURLConnection(u); }
// in java/org/columba/mail/url/cid/CidURLConnection.java
public void connect() throws IOException { //How to retrieve the mime part's contentID: String contentID = url.getRef(); //initialize stuff here connected = true; }
// in java/org/columba/mail/url/cid/CidURLConnection.java
public InputStream getInputStream() throws IOException { //TODO: Open stream from the mime part specified by contentID of the //currently viewed mail return null; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
private IMailFolderCommandReference decrypt(IMailbox folder, Object uid, boolean pgpActive) throws Exception, IOException { InputStream decryptedStream = null; LOG.fine("start decrypting"); if (!pgpActive) { pgpMessage = ""; pgpMode = SecurityStatusViewer.NO_KEY; } else { MimePart encryptedMultipart = mimePartTree.getRootMimeNode(); // the second child must be the encrypted message InputStream encryptedPart = folder.getMimePartBodyStream(uid, encryptedMultipart.getChild(1).getAddress()); try { JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); LOG.fine("new JSCConnection"); JSCFStatement stmt = con.createStatement(); LOG.fine("new Statement"); PGPPassChecker passCheck = PGPPassChecker.getInstance(); boolean check = passCheck.checkPassphrase(con); LOG.fine("after pass check, check is " + check); if (!check) { pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; // TODO (@author fdietz): make i18n! pgpMessage = "wrong passphrase"; return null; } LOG.fine("encrypted is != null?: " + (encryptedPart != null)); JSCFResultSet res = stmt.executeDecrypt(encryptedPart); LOG.fine("after calling decrypting"); if (res.isError()) { LOG.fine("the result set contains errors "); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = StreamUtils.readCharacterStream( res.getErrorStream()).toString(); LOG.fine("error message: " + pgpMessage); decryptedStream = res.getResultStream(); // return null; } else { decryptedStream = res.getResultStream(); pgpMode = SecurityStatusViewer.DECRYPTION_SUCCESS; } } catch (JSCFException e) { e.printStackTrace(); LOG.severe(e.getMessage()); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = e.getMessage(); // just show the encrypted raw message decryptedStream = encryptedPart; } } try { LOG.fine("decrypted Stream is: " + decryptedStream); CharSequence decryptedBodyPart = ""; // if the pgp mode is active we should get the decrypted part if (pgpActive) { // TODO (@author fdietz): should be removed if we only use // Streams! decryptedBodyPart = StreamUtils .readCharacterStream(decryptedStream); // check if the returned String is has a length != 0 if (decryptedBodyPart.length() == 0) { LOG .fine("decrypted body part has a 0 length ... fixing it"); decryptedBodyPart = new StringBuffer( "Content-Type: text/plain; charset=\"ISO-8859-15\"\n\n"); } } // else we set the body to the i18n String else { decryptedBodyPart = new StringBuffer( "Content-Type: text/plain; charset=\"ISO-8859-15\"\n\n" + MailResourceLoader.getString("menu", "mainframe", "security_decrypt_encrypted") + "\n"); } LOG.fine("the decrypted Body part: " + decryptedBodyPart); // construct new Message from decrypted string message = new ColumbaMessage(folder.getAllHeaderFields(uid)); Source decryptedSource = new CharSequenceSource(decryptedBodyPart); MimeHeader mimeHeader = new MimeHeader(HeaderParser .parse(decryptedSource)); mimePartTree = new MimeTree(BodyParser.parseMimePart(mimeHeader, decryptedSource)); message.setMimePartTree(mimePartTree); InputStream messageSourceStream = folder .getMessageSourceStream(uid); message.setSource(new CharSequenceSource(StreamUtils .readCharacterStream(messageSourceStream))); messageSourceStream.close(); // call AbstractFilter to do the tricky part return filter(folder, uid, message); // header = (ColumbaHeader) message.getHeaderInterface(); } catch (ParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } /* * controlPart.close(); encryptedPart.close(); if (decryptedStream != * null) { decryptedStream.close(); } */ return null; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
private MailFolderCommandReference verify(IMailbox folder, Object uid, boolean pgpActive) throws Exception, IOException { if (!pgpActive) { pgpMessage = ""; pgpMode = SecurityStatusViewer.NO_KEY; return null; } MimePart signedMultipart = mimePartTree.getRootMimeNode(); // the first child must be the signed part InputStream signedPart = folder.getMimePartSourceStream(uid, signedMultipart.getChild(0).getAddress()); // the second child must be the pgp-signature InputStream signature = folder.getMimePartBodyStream(uid, signedMultipart.getChild(1).getAddress()); try { JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); JSCFStatement stmt = con.createStatement(); String micalg = signedMultipart.getHeader().getContentParameter( "micalg").substring(4); JSCFResultSet res = stmt.executeVerify(signedPart, signature, micalg); if (res.isError()) { pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = StreamUtils.readCharacterStream( res.getErrorStream()).toString(); } else { pgpMode = SecurityStatusViewer.VERIFICATION_SUCCESS; pgpMessage = StreamUtils.readCharacterStream( res.getResultStream()).toString(); } } catch (JSCFException e) { if (Logging.DEBUG) e.printStackTrace(); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = e.getMessage(); // something really got wrong here -> show error dialog // JOptionPane.showMessageDialog(null, e.getMessage()); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; } signedPart.close(); signature.close(); return null; }
// in java/org/columba/mail/gui/message/viewer/AttachmentsViewer.java
public File[] createFiles(JComponent arg0) throws IOException { File[] files = new File[1]; IMailFolderCommandReference ref = mediator.getSelectedReference(); ref.setAddress(getSelected()); SaveAttachmentTemporaryCommand command = new SaveAttachmentTemporaryCommand( ref); CommandProcessor.getInstance().addOp(command); command.waitForCommandToComplete(); files[0] = command.getTempAttachmentFile(); return files; }
// in java/org/columba/mail/gui/message/util/AttachmentContext.java
public InputStream getContent() throws IOException { return new BufferedInputStream(new FileInputStream(file)); }
// in java/org/columba/mail/gui/tree/FolderTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/config/filter/ObjectArrayTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
private void loadHtmlIntoView(String text, boolean ignoreCharset) throws IOException { // clear existing text Document doc = getView().getDocument(); try { // delete old contents doc.remove(0, doc.getLength()); // if no text is specified, we are done now if ((text == null) || (text.equals(""))) { return; } // load contents into document if (ignoreCharset) { ((HTMLDocument) getView().getDocument()).putProperty( "IgnoreCharsetDirective", Boolean.TRUE); } Reader r = new StringReader(text); EditorKit kit = getView().getEditorKit(); kit.read(r, doc, 0); // this can throw a ChangedCharsetException } catch (BadLocationException e) { LOG.severe("Error deleting old view content: " + e.getMessage()); return; } }
// in java/org/columba/mail/gui/composer/command/RedirectCommand.java
protected String createQuotedBody(MimeHeader header, IMailbox folder, Object[] uids, Integer[] address) throws IOException, Exception { InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); // Do decoding stuff switch( header.getContentTransferEncoding() ) { case MimeHeader.QUOTED_PRINTABLE : { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64 : { bodyStream = new Base64DecoderInputStream(bodyStream); } } String charset = header.getContentParameter("charset"); if( charset != null ) { try { bodyStream = new CharsetDecoderInputStream(bodyStream, Charset.forName(charset)); } catch( UnsupportedCharsetException e ) { // Stick with the default charset } } String quotedBody; // Quote original message - different methods for text and html if (model.isHtml()) { // Html: Insertion of text before and after original message // build message orginal ; mod:2004629 SWITT StringBuffer buf = new StringBuffer(); buf.append("<html><body>"); buf.append(HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream( bodyStream).toString()))); buf.append("</body></html>"); quotedBody = buf.toString(); } else { // Text: take org. message; mod:20040629 SWITT quotedBody = StreamUtils.readCharacterStream(bodyStream).toString(); } bodyStream.close(); return quotedBody; }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
protected String createQuotedBody(MimeHeader header, IMailbox folder, Object[] uids, Integer[] address) throws IOException, Exception { MimeTree mimePartTree = folder.getMimePartTree(uids[0]); MimePart bodyPart = mimePartTree.getFromAddress(address); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); String bodyText = MessageBuilderHelper.createBodyText(bodyPart, bodyStream); boolean wasHtml; if (header.getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String quotedBody; // Quote original message - different methods for text and html if (model.isHtml()) { // Html: Insertion of text before and after original message // get necessary headerfields BasicHeader rfcHeader = new BasicHeader(folder.getHeaderFields( uids[0], headerfields)); String subject = rfcHeader.getSubject(); String date = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM).format(rfcHeader.getDate()); String from = AddressListRenderer.renderToHTMLWithLinks( new Address[] { rfcHeader.getFrom()}).toString(); String to = AddressListRenderer.renderToHTMLWithLinks( rfcHeader.getTo()).toString(); // build "quoted" message StringBuffer buf = new StringBuffer(); buf.append("<html><body><p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_start")); buf.append("<br>" + MailResourceLoader.getString("header", "header", "subject") + ": " + subject); buf.append("<br>" + MailResourceLoader.getString("header", "header", "date") + ": " + date); buf.append("<br>" + MailResourceLoader.getString("header", "header", "from") + ": " + from); buf.append("<br>" + MailResourceLoader.getString("header", "header", "to") + ": " + to); buf.append("</p>"); String htmlbody; if (wasHtml) { htmlbody = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(bodyText)); } else { htmlbody = HtmlParser.substituteSpecialCharacters(bodyText); } buf.append(htmlbody); buf.append("<p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_end")); buf.append("</p></body></html>"); quotedBody = buf.toString(); } else { if (wasHtml) { bodyText = HtmlParser.htmlToText(bodyText); } // Text: Addition of > before each line quotedBody = StreamUtils.readReader(new QuoteFilterReader( new StringReader(bodyText))).toString(); } return quotedBody; }
// in java/org/columba/mail/gui/composer/command/ReplyWithTemplateCommand.java
private String getTemplateBody() throws Exception, CommandCancelledException, IOException { // template folder has uid=107 IMailbox templateFolder = (IMailbox) FolderTreeModel .getInstance().getFolder("107"); // retrieve headerlist of tempate folder IHeaderList list = templateFolder.getHeaderList(); // choose template ChooseTemplateDialog d = new ChooseTemplateDialog(mediator.getView() .getFrame(), list); Object uid = null; if (d.isResult()) { // user pressed OK uid = d.getUid(); } else { throw new CommandCancelledException(); } // get bodytext of template message MimeTree tree = templateFolder.getMimePartTree(uid); XmlElement html = MailConfig.getInstance().getMainFrameOptionsConfig() .getRoot().getElement("/options/html"); // Which Bodypart shall be used? (html/plain) MimePart bodyPart = null; if (Boolean.valueOf(html.getAttribute("prefer")).booleanValue()) { bodyPart = tree.getFirstTextPart("html"); } else { bodyPart = tree.getFirstTextPart("plain"); } InputStream bodyStream = templateFolder.getMimePartBodyStream(uid, bodyPart .getAddress()); boolean wasHtml; if (bodyPart.getHeader().getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String body; if (model.isHtml()) { if (wasHtml) { body = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(StreamUtils.readCharacterStream(bodyStream) .toString())); } else { body = HtmlParser.substituteSpecialCharacters( StreamUtils.readCharacterStream(bodyStream).toString()); } } else { if (wasHtml) { body = HtmlParser.htmlToText(StreamUtils.readCharacterStream(bodyStream). toString()); } else { body = StreamUtils.readCharacterStream(bodyStream).toString(); } } bodyStream.close(); return body; }
// in java/org/columba/mail/gui/composer/command/ForwardInlineCommand.java
protected String createQuotedBody(MimeHeader header, IMailbox folder, Object[] uids, Integer[] address) throws IOException, Exception { MimeTree mimePartTree = folder.getMimePartTree(uids[0]); MimePart bodyPart = mimePartTree.getFromAddress(address); InputStream bodyStream = folder.getMimePartBodyStream(uids[0], address); String bodyText = MessageBuilderHelper.createBodyText(bodyPart, bodyStream); boolean wasHtml; if (header.getMimeType().getSubtype().equals("html")) wasHtml = true; else wasHtml = false; String quotedBody; // Quote original message - different methods for text and html if (model.isHtml()) { // Html: Insertion of text before and after original message // get necessary headerfields BasicHeader rfcHeader = new BasicHeader(folder.getHeaderFields( uids[0], headerfields)); String subject = rfcHeader.getSubject(); String date = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM).format(rfcHeader.getDate()); String from = AddressListRenderer.renderToHTMLWithLinks( new Address[] { rfcHeader.getFrom() }).toString(); String to = AddressListRenderer.renderToHTMLWithLinks( rfcHeader.getTo()).toString(); // build "quoted" message StringBuffer buf = new StringBuffer(); buf.append("<html><body><p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_start")); buf.append("<br>" + MailResourceLoader.getString("header", "header", "subject") + ": " + subject); buf.append("<br>" + MailResourceLoader.getString("header", "header", "date") + ": " + date); buf.append("<br>" + MailResourceLoader.getString("header", "header", "from") + ": " + from); buf.append("<br>" + MailResourceLoader.getString("header", "header", "to") + ": " + to); buf.append("</p>"); String htmlbody; if (wasHtml) { htmlbody = HtmlParser.removeComments(// comments are not displayed // correctly in composer HtmlParser.getHtmlBody(bodyText)); } else { htmlbody = HtmlParser.substituteSpecialCharacters(bodyText); } buf.append(htmlbody); buf.append("<p>"); buf.append(MailResourceLoader.getString("dialog", "composer", "original_message_end")); buf.append("</p></body></html>"); quotedBody = buf.toString(); } else { BasicHeader rfcHeader = new BasicHeader(folder.getHeaderFields( uids[0], headerfields)); String date = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM).format(rfcHeader.getDate()); String from = rfcHeader.getFrom().toString(); if (wasHtml) { bodyText = HtmlParser.htmlToText(bodyText); } // Text: Addition of > before each line StringBuffer buf = StreamUtils.readReader(new QuoteFilterReader( new StringReader(bodyText))); buf.insert(0, ">\n"); buf.insert(0, "> Date: " + date + "\n"); buf.insert(0, "> From: " + from + "\n"); quotedBody = buf.toString(); } return quotedBody; }
// in java/org/columba/mail/gui/composer/util/QuoteFilterReader.java
public int read() throws IOException { int result = -1; switch (mode) { case QUOTE: { if (quotePos < quotePrefix.length) { result = (int) quotePrefix[quotePos++]; } else { // reset mode = BODY; quotePos = 0; result = preRead; } break; } case BODYSTART: { mode = BODY; result = preRead; break; } case BODY: { result = in.read(); break; } } // Do we have to insert a quoteprefix? if (result == '\n') { preRead = in.read(); if (preRead == -1) { mode = BODYSTART; } else { mode = QUOTE; } } return result; }
// in java/org/columba/mail/gui/composer/util/QuoteFilterReader.java
public int read(char[] arg0, int arg1, int arg2) throws IOException { int next; for (int i = 0; i < arg2; i++) { next = read(); if (next == -1) { if (i == 0) { return -1; } else { return i; } } arg0[arg1 + i] = (char) next; } return arg2; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
public boolean startExternalEditor( final AbstractEditorController editController) throws IOException { /* * *20030906, karlpeder* Method signature changed to take an * AbstractEditorController (instead of an TextEditorView) as parameter * since the view is no longer directly available */ // write text to file File tmpFile = writeToFile(editController); // remember old font properties final Font OldFont = editController.getViewFont(); // create big size font to display in the composer textfield Font font = FontProperties.getTextFont(); font = font.deriveFont(30); editController.setViewFont(font); editController.setViewText(MailResourceLoader.getString("menu", "composer", "extern_editor_using_msg")); // execute application, enabling blocking ColumbaDesktop.getInstance().openAndWait(tmpFile); // rafter the user saved the file and closed the // external text editor, we read the new text from the file final String message = readFromFile(tmpFile); // set old font properties editController.setViewFont(OldFont); // set new text editController.setViewText(message); return true; }
// in java/org/columba/mail/gui/table/MessageReferencesTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/pop3/POP3Server.java
public void deleteMessage(Object uid) throws IOException, POP3Exception, CommandCancelledException { try { store.deleteMessage(uid); getHeaderList().remove(uid); // set dirty flag setCacheChanged(true); } catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; } }
// in java/org/columba/mail/pop3/POP3Server.java
public void deleteMessagesOlderThan(Date date) throws IOException, POP3Exception, CommandCancelledException { LOG.info("Removing message older than " + date); IHeaderList headerList = getHeaderList(); ICloseableIterator it = headerList.headerIterator(); while (it.hasNext()) { IColumbaHeader header = (IColumbaHeader) it.next(); if (((Date) header.get("columba.date")).before(date)) { deleteMessage(header.get("columba.uid")); } } it.close(); }
// in java/org/columba/mail/pop3/POP3Server.java
public void cleanUpServer() throws IOException, POP3Exception, CommandCancelledException { PopItem item = getAccountItem().getPopItem(); if (item.getBooleanWithDefault("leave_messages_on_server", false) && item.getBooleanWithDefault("remove_old_from_server", false)) { int days = item.getInteger("older_than"); long date = new Date().getTime(); date -= days * DAY_IN_MS; deleteMessagesOlderThan(new Date(date)); } else if (!item.getBooleanWithDefault("leave_messages_on_server", false)) { removeAllDownloadedMessages(); } }
// in java/org/columba/mail/pop3/POP3Server.java
private void removeAllDownloadedMessages() throws IOException, CommandCancelledException, POP3Exception { IHeaderList headerList = getHeaderList(); ICloseableIterator it = headerList.keyIterator(); while (it.hasNext()) { deleteMessage(it.next()); } it.close(); }
// in java/org/columba/mail/pop3/POP3Server.java
public ColumbaMessage getMessage(Object uid, IWorkerStatusController worker) throws IOException, POP3Exception, CommandCancelledException, ParserException { InputStream messageStream = new ProgressObservedInputStream(getStore() .fetchMessage(store.getIndex(uid)), worker, true); // Store the complete stream in a source so that we can parse it Source source = TempSourceFactory.createTempSource(messageStream, -1); // pipe through preprocessing filter // if (popItem.getBoolean("enable_pop3preprocessingfilter", false)) // rawString = modifyMessage(rawString); // UPDATE! @author fdietz // was: // Activate PreProcessor again with Source instead of String // new goal: // completely remove preprocessor -> we never change the message source! ColumbaMessage m; try { Header header = HeaderParser.parse(source); m = new ColumbaMessage(header); ColumbaHeader h = (ColumbaHeader) m.getHeader(); m.setSource(source); h.getAttributes().put("columba.pop3uid", uid); // message size should be at least 1 KB int size = Math.max(source.length() / 1024, 1); h.getAttributes().put("columba.size", new Integer(size)); // set the attachment flag h.getAttributes().put("columba.attachment", h.hasAttachments()); h.getAttributes().put("columba.fetchstate", Boolean.TRUE); h.getAttributes().put("columba.accountuid", new Integer(accountItem.getInteger("uid"))); getHeaderList().add(h, uid); } catch (ParserException e) { LOG .severe("Skipped message: Error parsing message. Message source:\n " + source); return null; } // set headercache dirty flag setCacheChanged(true); return m; }
// in java/org/columba/mail/pop3/POP3Server.java
public void dropConnection() throws IOException { store.dropConnection(); }
// in java/org/columba/mail/pop3/POP3Store.java
public int getSize(int index) throws IOException, POP3Exception, CommandCancelledException { try { return ((Integer) getSizeList().get(index)).intValue(); } catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); } catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); } }
// in java/org/columba/mail/pop3/POP3Store.java
private List getSizeList() throws IOException, POP3Exception, CommandCancelledException { if (sizeList == null) { ensureTransaction(); ScanListEntry[] sizes = protocol.list(); sizeList = new ArrayList(sizes.length + 1); // since the indices on the pop server start with 1 we add // a dummy null for the 0 element in the list sizeList.add(null); for (int i = 0; i < sizes.length; i++) { if (sizes[i].getIndex() > sizeList.size() - 1) { // fill with nulls for (int nextIndex = sizeList.size() - 1; nextIndex < sizes[i] .getIndex(); nextIndex++) { sizeList.add(null); } } // put size at the specified place sizeList.set(sizes[i].getIndex(), new Integer(sizes[i] .getSize())); } } return sizeList; }
// in java/org/columba/mail/pop3/POP3Store.java
public int getMessageCount() throws IOException, POP3Exception, CommandCancelledException { if (messageCount == -1) { ensureTransaction(); int[] stat = protocol.stat(); messageCount = stat[0]; } return messageCount; }
// in java/org/columba/mail/pop3/POP3Store.java
public boolean deleteMessage(Object uid) throws CommandCancelledException, IOException, POP3Exception { ensureTransaction(); return protocol.dele(getIndex(uid)); }
// in java/org/columba/mail/pop3/POP3Store.java
protected int getIndex(Object uid) throws IOException, POP3Exception, CommandCancelledException { if (getUidMap().containsKey(uid)) { return ((Integer) getUidMap().get(uid)).intValue(); } else { throw new MessageNotOnServerException(uid); } }
// in java/org/columba/mail/pop3/POP3Store.java
public InputStream fetchMessage(int index) throws IOException, POP3Exception, CommandCancelledException { ensureTransaction(); return protocol.retr(index, getSize(index)); }
// in java/org/columba/mail/pop3/POP3Store.java
public void logout() throws IOException, POP3Exception { if (protocol.getState() != POP3Protocol.NOT_CONNECTED) { protocol.quit(); } uidMap = null; sizeList = null; messageCount = -1; }
// in java/org/columba/mail/pop3/POP3Store.java
protected boolean isSupported(String command) throws IOException { fetchCapas(); for (int i = 0; i < capas.length; i++) { if (capas[i].startsWith(command)) { return true; } } return false; }
// in java/org/columba/mail/pop3/POP3Store.java
protected String getCapa(String command) throws IOException { fetchCapas(); for (int i = 0; i < capas.length; i++) { if (capas[i].startsWith(command)) { return capas[i]; } } return null; }
// in java/org/columba/mail/pop3/POP3Store.java
private void fetchCapas() throws IOException { if (capas == null) { try { capas = protocol.capa(); } catch (POP3Exception e) { // CAPA not supported capas = new String[] {}; } } }
// in java/org/columba/mail/pop3/POP3Store.java
protected void login() throws IOException, POP3Exception, CommandCancelledException { PasswordDialog dialog; boolean login = false; char[] password = new char[0]; boolean save = false; int loginMethod = getLoginMethod(); while (!login) { if ((password = Blowfish.decrypt(popItem.getRoot().getAttribute( "password", ""))).length == 0) { dialog = new PasswordDialog(); dialog.showDialog(MessageFormat .format(MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { popItem.get("user"), popItem.get("host") }), popItem.get("password"), popItem .getBoolean("save_password")); if (dialog.success()) { // ok pressed password = dialog.getPassword(); save = dialog.getSave(); } else { throw new CommandCancelledException(); } } else { save = popItem.getBoolean("save_password"); } try { if (loginMethod == AuthenticationManager.USER) { protocol.userPass(popItem.get("user"), password); login = true; } else if (loginMethod == AuthenticationManager.APOP) { try { protocol.apop(popItem.get("user"), password); } catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. } login = true; } else { try { // AUTH protocol.auth(AuthenticationManager .getSaslName(loginMethod), popItem.get("user"), password); login = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); } LOG.info("login=" + login); } popItem.setBoolean("save_password", save); if (save) { popItem.setString("password", Blowfish.encrypt(password)); } }
// in java/org/columba/mail/pop3/POP3Store.java
public List checkSupportedAuthenticationMethods() throws CommandCancelledException, IOException { ArrayList supportedMechanisms = new ArrayList(); // USER/PASS is always supported supportedMechanisms.add(new Integer(AuthenticationManager.USER)); try { ensureAuthorization(); // APOP? if (protocol.isApopSupported()) { supportedMechanisms .add(new Integer(AuthenticationManager.APOP)); } } catch (POP3Exception e) { // APOP not supported } try { String serverSaslMechansims = getCapa("SASL"); // AUTH? if (serverSaslMechansims != null) { List authMechanisms = AuthenticationFactory.getInstance() .getSupportedMechanisms(serverSaslMechansims); Iterator it = authMechanisms.iterator(); while (it.hasNext()) { supportedMechanisms.add(new Integer(AuthenticationManager .getSaslCode((String) it.next()))); } } } catch (IOException e) { e.printStackTrace(); } return supportedMechanisms; }
// in java/org/columba/mail/pop3/POP3Store.java
private int getLoginMethod() throws CommandCancelledException, IOException { String loginMethod = popItem.get("login_method"); int result = 0; try { result = Integer.parseInt(loginMethod); } catch (NumberFormatException e) { // Just use the default as fallback } if (result == 0) { List supported = checkSupportedAuthenticationMethods(); if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. result = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); result = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return result; }
// in java/org/columba/mail/pop3/POP3Store.java
public static void doPOPbeforeSMTP(PopItem popItem) throws IOException, POP3Exception, CommandCancelledException { POP3Store store = new POP3Store(popItem); store.ensureTransaction(); store.logout(); }
// in java/org/columba/mail/pop3/POP3Store.java
protected void ensureTransaction() throws IOException, POP3Exception, CommandCancelledException { ensureAuthorization(); if (protocol.getState() < POP3Protocol.TRANSACTION) { login(); } }
// in java/org/columba/mail/pop3/POP3Store.java
protected void ensureAuthorization() throws IOException, POP3Exception, CommandCancelledException { if (protocol.getState() < POP3Protocol.AUTHORIZATION) { openConnection(); } }
// in java/org/columba/mail/pop3/POP3Store.java
private void openConnection() throws IOException, POP3Exception, CommandCancelledException { int sslType = popItem.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = popItem.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || capas.length == 0) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/pop3/POP3Store.java
private Map getUidMap() throws CommandCancelledException, IOException, POP3Exception { if (uidMap == null) { if (getMessageCount() != 0) { ensureTransaction(); UidListEntry[] uidList = protocol.uidl(); uidMap = new Hashtable(); for (int i = 0; i < uidList.length; i++) { uidMap.put(uidList[i].getUid(), new Integer(uidList[i] .getIndex())); } } else { uidMap = new Hashtable(0); } } return uidMap; }
// in java/org/columba/mail/pop3/POP3Store.java
public void dropConnection() throws IOException { protocol.dropConnection(); }
// in java/org/columba/mail/imap/IMAPServer.java
public String getDelimiter() throws IOException, IMAPException, CommandCancelledException { if (delimiter == null) { // try to determine delimiter delimiter = fetchDelimiter(); } return delimiter; }
// in java/org/columba/mail/imap/IMAPServer.java
private void openConnection() throws IOException, IMAPException, CommandCancelledException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "connecting")); int sslType = item.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = item.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || isSupported("STARTTLS") || (capabilities.length == 0)) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (IMAPException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/imap/IMAPServer.java
public List checkSupportedAuthenticationMethods() throws IOException { ArrayList supportedMechanisms = new ArrayList(); // LOGIN is always supported supportedMechanisms.add(new Integer(AuthenticationManager.LOGIN)); try { String serverSaslMechansims[] = getCapas("AUTH"); // combine them to one string StringBuffer oneLine = new StringBuffer("AUTH"); for (int i = 0; i < serverSaslMechansims.length; i++) { oneLine.append(' '); oneLine.append(serverSaslMechansims[i].substring(5)); // remove // the // 'AUTH=' } // AUTH? if (serverSaslMechansims != null) { List authMechanisms = AuthenticationFactory.getInstance() .getSupportedMechanisms(oneLine.toString()); Iterator it = authMechanisms.iterator(); while (it.hasNext()) { supportedMechanisms.add(new Integer(AuthenticationManager .getSaslCode((String) it.next()))); } } } catch (IOException e) { } return supportedMechanisms; }
// in java/org/columba/mail/imap/IMAPServer.java
private String[] getCapas(String command) throws IOException { fetchCapas(); ArrayList list = new ArrayList(); for (int i = 0; i < capabilities.length; i++) { if (capabilities[i].startsWith(command)) { list.add(capabilities[i]); } } return (String[]) list.toArray(new String[0]); }
// in java/org/columba/mail/imap/IMAPServer.java
public boolean isSupported(String command) throws IOException { fetchCapas(); for (int i = 0; i < capabilities.length; i++) { if (capabilities[i].startsWith(command)) { return true; } } return false; }
// in java/org/columba/mail/imap/IMAPServer.java
private void fetchCapas() throws IOException { if (capabilities == null) { try { ensureConnectedState(); capabilities = protocol.capability(); } catch (IMAPException e) { // CAPA not supported capabilities = new String[0]; } catch (CommandCancelledException e) { } } }
// in java/org/columba/mail/imap/IMAPServer.java
private int getLoginMethod() throws CommandCancelledException, IOException { String loginMethod = item.get("login_method"); int result = 0; try { result = Integer.parseInt(loginMethod); } catch (NumberFormatException e) { // Just use the default as fallback } if (result == 0) { List supported = checkSupportedAuthenticationMethods(); if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. result = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); result = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return result; }
// in java/org/columba/mail/imap/IMAPServer.java
private void login() throws IOException, IMAPException, CommandCancelledException { PasswordDialog dialog = new PasswordDialog(); ensureConnectedState(); boolean authenticated = false; boolean first = true; char[] password = new char[0]; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "authenticating")); int loginMethod = getLoginMethod(); // Try to get Password from Configuration if (item.get("password").length() != 0) { password = Blowfish.decrypt(item.get("password")); } // Login loop until authenticated while (!authenticated) { // On the first try check if we need to show the password dialog // -> not necessary when password was stored if (!first || password.length == 0) { // Show the password dialog dialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { item.get("user"), item.get("host") }), new String(password), item.getBoolean("save_password")); if (dialog.success()) { // User pressed OK password = dialog.getPassword(); // Save or Clear the password in the configuration item.setBoolean("save_password", dialog.getSave()); if (dialog.getSave()) { item.setString("password", Blowfish.encrypt(password)); } else { item.setString("password", ""); } } else { // User cancelled authentication throw new CommandCancelledException(); } } // From this point we have a username and password // from configuration of from the dialog try { if (loginMethod == AuthenticationManager.LOGIN) { protocol.login(item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } else { try { // AUTH protocol.authenticate(AuthenticationManager .getSaslName(loginMethod), item.get("user"), password); // If no exception happened we have successfully logged // in authenticated = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof IMAPException) throw (IMAPException) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.LOGIN; item.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (IMAPException ex) { // login failed? IMAPResponse response = ex.getResponse(); if (response == null || !response.isNO()) { // This exception is not because wrong username or // password throw ex; } } first = false; } // Sync subscribed folders if this is the first login // in this session if (firstLogin) { if( firstLoginAction != null) { firstLoginAction.actionPerformed(); } } firstLogin = false; }
// in java/org/columba/mail/imap/IMAPServer.java
public void ensureSelectedState(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { // ensure that we are logged in already ensureLoginState(); String path = folder.getImapPath(); // if mailbox is not already selected select it if (protocol.getState() != IMAPProtocol.SELECTED || !protocol.getSelectedMailbox().equals(path)) { printStatusMessage(MessageFormat.format(MailResourceLoader .getString("statusbar", "message", "select"), new Object[] { folder.getName() })); // Here we get the new mailboxinfo for the folder messageFolderInfo = protocol.select(path); // Set the readOnly flag folder.setReadOnly(!messageFolderInfo.isWriteAccess()); // Convert to a MailboxStatus selectedStatus = new MailboxStatus(messageFolderInfo); statusDirty = false; selectedFolder = folder; // delete any cached information aktMimeTree = null; aktMessageUid = null; } }
// in java/org/columba/mail/imap/IMAPServer.java
public int getLargestRemoteUid(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { MailboxStatus status = getStatus(folder); return getLargestRemoteUid(folder, status); }
// in java/org/columba/mail/imap/IMAPServer.java
public int getLargestRemoteUid(IMAPFolder folder, MailboxStatus status) throws IOException, IMAPException, CommandCancelledException { if(status.getUidNext() < 0 && status.getMessages() > 0 ) { return fetchUid(new SequenceSet(status.getMessages()), folder); } else { return (int)(status.getUidNext() -1); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MailboxStatus getStatus(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); if (selectedFolder != null && selectedFolder.equals(folder) && !statusDirty) { // We don't need to issue a additional NOOP // here since the ensureLogin() call above // ensures also the correct Status in a // MIN_IDLE interval timeframe. return selectedStatus; } if( selectedFolder == null || protocol.getState() < IMAPProtocol.SELECTED) { // if none selected select this folder instead of getting the status ensureSelectedState(folder); return selectedStatus; } printStatusMessage(MessageFormat.format(MailResourceLoader.getString( "statusbar", "message", "status"), new Object[] { folder .getName() })); MailboxStatus result = protocol.status(folder.getImapPath(), new String[] { "MESSAGES", "UIDNEXT", "RECENT", "UNSEEN", "UIDVALIDITY" }); // No response means zero! if( result.getUnseen() == -1) result.setUnseen(0); if( result.getRecent() == -1) result.setRecent(0); statusDirty = false; return result; }
// in java/org/columba/mail/imap/IMAPServer.java
protected String fetchDelimiter() throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); try { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); } catch (IMAPDisconnectedException e1) { ListInfo[] listInfo = protocol.list("", ""); return listInfo[0].getDelimiter(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void createMailbox(String mailboxName, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { // make sure we are logged in ensureLoginState(); // concate the full name of the new mailbox String fullName; String path = (folder == null ? "" : folder.getImapPath()); if (path.length() > 0) fullName = path + getDelimiter() + mailboxName; else fullName = mailboxName; // check if the mailbox already exists -> subscribe only if (protocol.list("", fullName).length == 0) { // create the mailbox on the server protocol.create(fullName); } // subscribe to the new mailbox protocol.subscribe(fullName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void renameFolder(String oldMailboxName, String newMailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.rename(oldMailboxName, newMailboxName); protocol.unsubscribe(oldMailboxName); protocol.subscribe(newMailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void subscribeFolder(String mailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.subscribe(mailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void unsubscribeFolder(String mailboxName) throws IOException, IMAPException, CommandCancelledException { // make sure we are already logged in ensureLoginState(); protocol.unsubscribe(mailboxName); }
// in java/org/columba/mail/imap/IMAPServer.java
public void expunge(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); updatesEnabled = false; protocol.expunge(); updatesEnabled = true; statusDirty = true; }
// in java/org/columba/mail/imap/IMAPServer.java
public int fetchUid( SequenceSet set, IMAPFolder folder ) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); Integer[] result = protocol.fetchUid(set); if( result.length == 1) return result[0].intValue(); else return -1; }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] fetchUids(SequenceSet set, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { IStatusObservable observable = getObservable(); printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_uid_list")); ensureSelectedState(folder); if (messageFolderInfo.getExists() > 0) { SequenceSet[] packs = divide(set); Integer[] result = new Integer[set.getLength(messageFolderInfo .getExists())]; // update the progress if (observable != null) { observable.setCurrent(0); observable.setMax(result.length); } int pos = 0; for (int i = 0; i < packs.length; i++) { int packLength = packs[i].getLength(messageFolderInfo .getExists()); System.arraycopy(protocol.fetchUid(packs[i]), 0, result, pos, packLength); pos += packLength; // update the progress if (observable != null) { observable.setCurrent(pos); } } return result; } else { return new Integer[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public IMAPFlags[] fetchFlagsListStartFrom(int startIdx, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { IStatusObservable observable = getObservable(); ensureSelectedState(folder); if (selectedStatus.getMessages() - startIdx >= 0) { SequenceSet set = new SequenceSet(); set.addOpenRange(startIdx); SequenceSet[] packs = divide(set); // update the progress if (observable != null) { observable.setCurrent(0); observable.setMax(set.getLength(selectedStatus.getMessages())); } List allResults = new ArrayList(packs.length); int pos = 0; // store the intermediate results in a list for (int i = 0; i < packs.length; i++) { try { IMAPFlags[] r = protocol.fetchFlags(packs[i]); pos += r.length; allResults.add(r); } catch (IMAPException e) { // Entry does not exist on server // -> add nothing } // update the progress if (observable != null) { observable.setCurrent(pos); } } // Combine the results in one array IMAPFlags[] result = new IMAPFlags[pos]; Iterator it = allResults.iterator(); pos = 0; while (it.hasNext()) { IMAPFlags[] r = (IMAPFlags[]) it.next(); System.arraycopy(r, 0, result, pos, r.length); pos += r.length; } return result; } else { return new IMAPFlags[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public IMAPFlags[] fetchFlagsListStartFrom2(int startIdx, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); if (selectedStatus.getMessages() - startIdx >= 0) { SequenceSet set = new SequenceSet(); set.add(startIdx, Math.min(startIdx + 9, selectedStatus.getMessages())); IMAPFlags[] result = protocol.fetchFlags(set); return result; } else { return new IMAPFlags[0]; } }
// in java/org/columba/mail/imap/IMAPServer.java
public NamespaceCollection fetchNamespaces() throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); return protocol.namespace(); }
// in java/org/columba/mail/imap/IMAPServer.java
private void doFetchHeaderList(IHeaderList headerList, List list) throws IOException, IMAPException { // get list of user-defined headerfields String[] headerFields = CachedHeaderfields.getDefaultHeaderfields(); IMAPHeader[] headers = protocol.uidFetchHeaderFields(new SequenceSet( list), headerFields); for (int i = 0; i < headers.length; i++) { // add it to the headerlist ColumbaHeader header = new ColumbaHeader(headers[i].getHeader()); Object uid = headers[i].getUid(); header.getAttributes().put("columba.uid", uid); header.getAttributes().put("columba.size", headers[i].getSize()); header.getAttributes().put("columba.accountuid", getAccountUid()); // set the attachment flag header.getAttributes().put("columba.attachment", header.hasAttachments()); // make sure that we have a Message-ID String messageID = (String) header.get("Message-Id"); if (messageID != null) header.set("Message-ID", header.get("Message-Id")); headerList.add(header, uid); } }
// in java/org/columba/mail/imap/IMAPServer.java
protected synchronized void ensureConnectedState() throws CommandCancelledException, IOException, IMAPException { if (Math.abs(System.currentTimeMillis() - lastCommunication) > MIN_IDLE) { try { protocol.noop(); } catch (IOException e) { // Now the state of the procotol is more certain correct } catch (IMAPDisconnectedException e) { } } if (protocol.getState() < IMAPProtocol.NON_AUTHENTICATED) { printStatusMessage(MailResourceLoader .getString("statusbar", "message", "connecting")); openConnection(); } // update this point of time as last communication // since every functio calls this before communicating with // the server lastCommunication = System.currentTimeMillis(); }
// in java/org/columba/mail/imap/IMAPServer.java
protected void ensureLoginState() throws IOException, IMAPException, CommandCancelledException { ensureConnectedState(); if (protocol.getState() < IMAPProtocol.AUTHENTICATED) { printStatusMessage(MailResourceLoader .getString("statusbar", "message", "authenticating")); login(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MimeTree getMimeTree(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); // Use a caching mechanism for this if (aktMimeTree == null || !aktMessageUid.equals(uid)) { aktMimeTree = protocol.uidFetchBodystructure(((Integer) uid) .intValue()); aktMessageUid = uid; } return aktMimeTree; } catch (IMAPDisconnectedException e) { return getMimeTree(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMimePartBodyStream(Object uid, Integer[] address, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidFetchBody(((Integer) uid).intValue(), address); } catch (IMAPDisconnectedException e) { return getMimePartBodyStream(uid, address, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Header getHeaders(Object uid, String[] keys, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); IMAPHeader[] headers = protocol.uidFetchHeaderFields( new SequenceSet(((Integer) uid).intValue()), keys); return headers[0].getHeader(); } catch (IMAPDisconnectedException e) { return getHeaders(uid, keys, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Header getAllHeaders(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); IMAPHeader[] headers = protocol.uidFetchHeader(new SequenceSet( ((Integer) uid).intValue())); return headers[0].getHeader(); } catch (IMAPDisconnectedException e) { return getAllHeaders(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMimePartSourceStream(Object uid, Integer[] address, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); InputStream headerSource = protocol.uidFetchMimeHeaderSource( ((Integer) uid).intValue(), address); InputStream bodySource = protocol.uidFetchBody(((Integer) uid) .intValue(), address); return new SequenceInputStream(headerSource, bodySource); } catch (IMAPDisconnectedException e) { return getMimePartSourceStream(uid, address, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public InputStream getMessageSourceStream(Object uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidFetchMessage(((Integer) uid).intValue()); } catch (IMAPDisconnectedException e) { return getMessageSourceStream(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void markMessage(Object[] uids, int variant, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { if (uids == null || uids.length == 0) return; try { ensureSelectedState(folder); SequenceSet uidSet = new SequenceSet(Arrays.asList(uids)); protocol.uidStore(uidSet, variant > 0, convertToFlags(variant)); statusDirty = true; } catch (IMAPDisconnectedException e) { markMessage(uids, variant, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public void setFlags(Object[] uids, IMAPFlags flags, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SequenceSet uidSet = new SequenceSet(Arrays.asList(uids)); protocol.uidStore(uidSet, true, flags); } catch (IMAPDisconnectedException e) { setFlags(uids, flags, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public int getIndex(Integer uid, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SearchKey key = new SearchKey(SearchKey.UID, uid); Integer[] index = protocol.search(new SearchKey[] { key }); if (index.length > 0) { return index[0].intValue(); } else { return -1; } } catch (IMAPDisconnectedException e) { return getIndex(uid, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public Integer[] search(SearchKey key, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); return protocol.uidSearch(new SearchKey[] { key }); } catch (IMAPDisconnectedException e) { return search(key, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public List search(IFilterRule filterRule, IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { try { ensureSelectedState(folder); SearchKey[] searchRequest; searchRequest = createSearchKey(filterRule); Integer[] result = null; Charset charset = UTF8; while (result == null) { try { result = protocol.uidSearch(charset, searchRequest); } catch (IMAPException e) { if (e.getResponse().isNO() && charset != null) { // Server does not support UTF-8 // -> fall back to System default if ( charset.equals(UTF8)) { charset = DEFAULT; } else if (charset == DEFAULT) { // If this also does not work // -> fall back to no charset specified charset = null; } else { // something else is wrong throw e; } } else throw e; } } return Arrays.asList(result); } catch (IMAPDisconnectedException e) { return search(filterRule, folder); } }
// in java/org/columba/mail/imap/IMAPServer.java
public MailboxInfo getMessageFolderInfo(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureSelectedState(folder); return messageFolderInfo; }
// in java/org/columba/mail/imap/IMAPServer.java
public ListInfo[] fetchSubscribedFolders() throws IOException, IMAPException, CommandCancelledException { try { ensureLoginState(); ListInfo[] lsub = protocol.lsub("", "*"); // Also set the delimiter if (lsub.length > 0) { delimiter = lsub[0].getDelimiter(); } return lsub; } catch (IMAPDisconnectedException e) { return fetchSubscribedFolders(); } }
// in java/org/columba/mail/imap/IMAPServer.java
public boolean isSelected(IMAPFolder folder) throws IOException, IMAPException, CommandCancelledException { ensureLoginState(); return (protocol.getState() == IMAPProtocol.SELECTED && protocol .getSelectedMailbox().equals(folder.getImapPath())); }
// in java/org/columba/mail/spam/command/ScoreMessageCommand.java
private boolean scoreMessage(int j) throws Exception, IOException { // calculate message score boolean result = SpamController.getInstance().scoreMessage(srcFolder, uids[j]); // message belongs to which account? AccountItem item = CommandHelper .retrieveAccountItem(srcFolder, uids[j]); if (item.getSpamItem().checkAddressbook()) { // check if sender is already in addressbook boolean isInAddressbook = new AddressbookFilter().process( srcFolder, uids[j]); result = result && !isInAddressbook; } return result; }
// in java/org/columba/mail/parser/PassiveHeaderParserInputStream.java
public int read() throws IOException { int character = super.read(); if( mode == READING ) { if( character == -1 ) { // The Stream finished before the header was completely // read! // Create a emtpy header an back off header = new Header(); barrier.open(); } else { buffer.append((char)character); checkHeaderReadComplete(); } } return character; }
// in java/org/columba/mail/parser/PassiveHeaderParserInputStream.java
public int read(byte[] arg0, int arg1, int arg2) throws IOException { int read = super.read(arg0, arg1, arg2); if( mode == READING ) { if( read == -1 ) { // The Stream finished before the header was completely // read! // Create a emtpy header an back off header = new Header(); barrier.open(); } else { buffer.append(new String(arg0,0,read,"US-ASCII")); checkHeaderReadComplete(); } } return read; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
Object[] synchronizeHeaderlist() throws Exception, IOException, CommandCancelledException, IMAPException { Object[] result = new Object[0]; // do not sync folders which have a Noselect flag if (!getConfiguration().getBooleanWithDefault("selectable", true)) return result; // Check if the mailbox has changed MailboxStatus status = getServer().getStatus(this); if (status.getMessages() == 0) { purgeHeaderList(); syncMailboxInfo(status); return result; } if (!firstSync && status.getMessages() == this.getMessageFolderInfo() .getExists()) { return result; } List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); int largestLocalUid = localUids.size() > 0 ? ((Integer) localUids .get(localUids.size() - 1)).intValue() : -1; int largestRemoteUid = getServer().getLargestRemoteUid(this, status); if (localUids.size() == status.getMessages() && largestRemoteUid == largestLocalUid) { // Seems to be no change! if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } return result; } printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); largestRemoteUid = getServer().fetchUid( new SequenceSet(SequenceEntry.STAR), this); if (largestRemoteUid == -1) { largestRemoteUid = getServer().fetchUid( new SequenceSet(status.getMessages()), this); } int largestLocalUidIndex = findLargestLocalUidIndex(localUids); int newMessages = status.getMessages() - largestLocalUidIndex; /* * // Somehow there are new messages that // have a lower index -> out * of sync if (localUids.size() - status.getMessages() + newMessages < * 0) { * * LOG.severe("Folder " + getName() + " is out of sync -> recreating the * cache!"); purgeHeaderList(); // all messages are new newMessages = * status.getMessages(); // Set the index of the largest Uid to 0 // -> * ensure it works with the fetch of new // messages part below * largestLocalUidIndex = 0; largestLocalUid = -1; * * localUids.clear(); } */ LOG.fine("Found " + newMessages + " new Messages"); // If we have new messages add them to the headerlist if (newMessages > 0) { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "fetch_new_headers")); // Ensure sizes are correct getMessageFolderInfo().setExists(localUids.size()); getMessageFolderInfo().setUnseen( Math.min(getMessageFolderInfo().getUnseen(), localUids .size())); getMessageFolderInfo().setRecent(0); List newUids = fetchNewMessages(largestLocalUidIndex); localUids.addAll(newUids); if (newUids.size() < newMessages) { // There are still more messages to update // -> issue another fetch messages command CommandProcessor.getInstance().addOp( new FetchMessagesCommand( new MailFolderCommandReference(this), newMessages, largestLocalUidIndex, newUids .size())); } else { fetchDone(); } result = newUids.toArray(new Object[0]); } else { // Number of deleted messages is computed from exists on imap and // local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } } return result; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private int findLargestLocalUidIndex(List localUids) throws IOException, IMAPException, CommandCancelledException { int largestLocalUidIndex = -1; printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_messages")); // Compute the number of new messages if (localUids.size() > 0) { // Find the index of the largest local Uid int position = localUids.size() - 1; while (largestLocalUidIndex == -1 && position >= localUids.size() - 10 && position >= 0) { largestLocalUidIndex = getServer().getIndex( (Integer) localUids.get(position--), this); } // Still not found -> do a binary search if (largestLocalUidIndex == -1) { int a, b, c; int index; a = 0; b = position; while (b > a && b - a > 1) { c = Math.round((b - a) * 0.5f) + a; index = getServer().getIndex((Integer) localUids.get(c), this); if (index == -1) { b = c; } else { a = c; largestLocalUidIndex = index; } } // removedLocalUids = localUids.size() - 1 - position; } else { // -2 because of the decrement in line 317 // removedLocalUids = localUids.size() - 2 - position; } // Check if all local uids have been deleted if (largestLocalUidIndex == -1) { // all messages are new largestLocalUidIndex = 0; } } else { // all messages are new largestLocalUidIndex = 0; } return largestLocalUidIndex; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void findRemovedMessages(MailboxStatus status, List localUids) throws Exception, IOException, IMAPException, CommandCancelledException { int largestRemoteUid = getServer().getLargestRemoteUid(this); int deletedMessages = localUids.size() - status.getMessages(); LOG.fine("Found " + deletedMessages + " deleted Messages"); // Find the messages that have been deleted if (deletedMessages > 0) { int found = 0; // First deleted all local uids that // are larger than the largest remote uid while (localUids.size() > 0 && found != deletedMessages && ((Integer) localUids.get(localUids.size() - 1)) .intValue() > largestRemoteUid) { Flags flags = getHeaderList().remove( localUids.get(localUids.size() - 1)).getFlags(); fireMessageRemoved(localUids.remove(localUids.size() - 1), flags); found++; } // Search in packs beginning from newest to oldest // -> in most cases this should save us a lot of uid fetchings to // find the deleted messages // Pack size is min 10, max 200 else mailboxsize / 10 int packSize = Math.min(Math.max(deletedMessages, status .getMessages() / 10), 200); int upper = status.getMessages(); int localPointer = localUids.size() - 1; // Fetch Pack outer loop while (upper >= 1 && found != deletedMessages) { SequenceSet set = new SequenceSet(); set.add(Math.max(upper - packSize + 1, 1), upper); // Fetch these uids and compare them to the // local list Integer[] actUids = getServer().fetchUids(set, this); // Compare inner loop for (int i = actUids.length - 1; i >= 0 && found != deletedMessages; i--) { // Find missing uids loop while (found != deletedMessages && localPointer >= 0 && !localUids.get(localPointer).equals(actUids[i])) { // We found the uid of a deleted message // -> remove it from the headerlist getHeaderList().remove(localUids.get(localPointer)); found++; localPointer--; } // next position in the local uid list localPointer--; } upper = upper - packSize; } // All the other local mails are deleted while (found < deletedMessages && localPointer >= 0) { getHeaderList().remove(localUids.get(localPointer--)); found++; } if (found != deletedMessages) { LOG.severe("Assertion failed : found only " + found + " of " + deletedMessages); } } }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
List fetchNewMessages(int startIndex) throws IOException, IMAPException, CommandCancelledException, Exception { IMAPFlags[] newFlags = getServer().fetchFlagsListStartFrom2( startIndex + 1, this); List newUids = new ArrayList(newFlags.length); // Build a list of the new uids for (int i = 0; i < newFlags.length; i++) { // Update the list of new and local uids newUids.add(newFlags[i].getUid()); } // Fetch the headers of the new messages ... getServer().fetchHeaderList(getHeaderList(), newUids, this); // .. and set the flags setFlags(newFlags); // fire message added updates for (int i = 0; i < newFlags.length; i++) { fireMessageAdded(newFlags[i].getUid(), newFlags[i]); } return newUids; }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
private void synchronizeFlags(MailboxStatus status) throws Exception, IOException, CommandCancelledException, IMAPException { printStatusMessage(MailResourceLoader.getString("statusbar", "message", "sync_flags")); MailboxStatus flagStatus = new MailboxStatus(); flagStatus.setMessages(status.getMessages()); // Build the remote lists of messages that are UNSEEN, FLAGGED, DELETED, // JUNK SearchKey unseenKey = new SearchKey(SearchKey.UNSEEN); List remoteUnseenUids = Arrays.asList(getServer().search(unseenKey, this)); flagStatus.setUnseen(remoteUnseenUids.size()); SearchKey flaggedKey = new SearchKey(SearchKey.FLAGGED); List remoteFlaggedUids = Arrays.asList(getServer().search(flaggedKey, this)); SearchKey deletedKey = new SearchKey(SearchKey.DELETED); List remoteDeletedUids = Arrays.asList(getServer().search(deletedKey, this)); SearchKey recentKey = new SearchKey(SearchKey.RECENT); List remoteRecentUids = Arrays.asList(getServer().search(recentKey, this)); flagStatus.setRecent(remoteRecentUids.size()); SearchKey junkKey = new SearchKey(SearchKey.KEYWORD, "JUNK"); List remoteJunkUids = Arrays.asList(getServer().search(junkKey, this)); SearchKey answeredKey = new SearchKey(SearchKey.ANSWERED); List remoteAnsweredUids = Arrays.asList(getServer().search(answeredKey, this)); SearchKey draftKey = new SearchKey(SearchKey.DRAFT); List remoteDraftUids = Arrays.asList(getServer().search(draftKey, this)); // update the local flags and ensure that the MailboxInfo is correct ICloseableIterator headerIterator = getHeaderList().headerIterator(); int unseen = 0; int flagged = 0; int recent = 0; int deleted = 0; int junk = 0; int answered = 0; int draft = 0; while (headerIterator.hasNext()) { IColumbaHeader header = (IColumbaHeader) headerIterator.next(); Object uid = header.get("columba.uid"); Flags flag = header.getFlags(); Flags oldFlag = (Flags) flag.clone(); int index; index = Collections.binarySearch(remoteUnseenUids, uid); flag.setSeen(index < 0); if (!flag.getSeen()) { unseen++; } index = Collections.binarySearch(remoteDeletedUids, uid); flag.setDeleted(index >= 0); if (flag.getDeleted()) { deleted++; } index = Collections.binarySearch(remoteFlaggedUids, uid); flag.setFlagged(index >= 0); if (flag.getFlagged()) { flagged++; } index = Collections.binarySearch(remoteRecentUids, uid); flag.setRecent(index >= 0); if (flag.getRecent()) { recent++; } index = Collections.binarySearch(remoteJunkUids, uid); header.getAttributes().put("columba.spam", new Boolean(index >= 0)); if (index >= 0) { junk++; } index = Collections.binarySearch(remoteAnsweredUids, uid); flag.setAnswered(index >= 0); if (flag.getAnswered()) { answered++; } index = Collections.binarySearch(remoteDraftUids, uid); flag.setDraft(index >= 0); if (flag.getDraft()) { draft++; } if (!flag.equals(oldFlag)) { getHeaderList().update(uid, header); fireMessageFlagChanged(uid, oldFlag, 0); } } headerIterator.close(); if (remoteJunkUids.size() != junk || remoteRecentUids.size() != recent || remoteFlaggedUids.size() != flagged || remoteDeletedUids.size() != deleted || remoteUnseenUids.size() != unseen || remoteAnsweredUids.size() != answered || remoteDraftUids.size() != draft) { // Something is wrong // Sync again synchronizeHeaderlist(); return; } syncMailboxInfo(flagStatus); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public String getImapPath() throws IOException, IMAPException, CommandCancelledException { StringBuffer path = new StringBuffer(); path.append(getName()); IMailFolder child = this; while (true) { child = (IMailFolder) child.getParent(); if (child instanceof IMAPRootFolder) { break; } String n = ((IMAPFolder) child).getName(); path.insert(0, n + getServer().getDelimiter()); } return path.toString(); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
void fetchDone() throws IOException, CommandCancelledException, IMAPException, Exception { MailboxStatus status = getServer().getStatus(this); List localUids = new LinkedList(Arrays .asList(getHeaderList().getUids())); // Sort the uid list Collections.sort(localUids); // Number of deleted messages is computed from exists on imap and local // newMessages findRemovedMessages(status, localUids); if (firstSync) { firstSync = false; synchronizeFlags(status); } else { syncMailboxInfo(status); } // Apply filter if enabled ImapItem item = getServer().getItem(); boolean applyFilter = item.getBooleanWithDefault( "automatically_apply_filter", false); // if "automatically apply filter" is selected & there // are // new // messages if (applyFilter) { CommandProcessor.getInstance() .addOp( new ApplyFilterCommand( new MailFolderCommandReference(this))); } // Reenable Updating the mailbox mailboxSyncEnabled = true; }
// in java/org/columba/mail/folder/imap/IMAPCache.java
public void addMimeTree(IMAPFolder folder, Object uid, MimeTree mimeTree) throws IOException { cache.activeAdd(createMimeTreeKey(folder, uid), convertToStream(mimeTree)); }
// in java/org/columba/mail/folder/imap/IMAPCache.java
public MimeTree getMimeTree(IMAPFolder folder, Object uid) throws IOException { InputStream in = cache.get(createMimeTreeKey(folder, uid)); if (in == null) in = cache.get(createOldMimeTreeKey(folder, uid)); if( in != null ) { try { return (MimeTree) new ObjectInputStream(in).readObject(); } catch (Exception e) { return null; } } else { return null; } }
// in java/org/columba/mail/folder/imap/IMAPCache.java
private InputStream convertToStream(Object o) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(1024); new ObjectOutputStream(out).writeObject(o); return new ByteArrayInputStream(out.toByteArray()); }
// in java/org/columba/mail/folder/imap/IMAPCache.java
public InputStream addMimeBody(IMAPFolder folder, Object uid, Integer[] address, InputStream data ) throws IOException { return cache.passiveAdd(createMimeBodyKey(folder, uid, address), data); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
public void persist() throws IOException { closeDatabase(); }
// in java/org/columba/mail/folder/headercache/SyncHeaderList.java
public static void sync(AbstractMessageFolder folder, IHeaderList headerList) throws IOException { if (folder.getObservable() != null) { folder.getObservable().setMessage( folder.getName() + ": Syncing headercache..."); } IDataStorage ds = ((AbstractLocalFolder) folder) .getDataStorageInstance(); Object[] uids = ds.getMessageUids(); Object[] headerlistUids = headerList.getUids(); // First remove all headers that are in the headerlist but // not the Folder ArrayList uidsToRemove = new ArrayList(Arrays.asList(headerlistUids)); ListTools.substract(uidsToRemove, Arrays.asList(uids)); for( Object u : uidsToRemove) { headerList.remove(u); } Date today = Calendar.getInstance().getTime(); // parse all message files to recreate the header cache IColumbaHeader header = null; IMailboxInfo messageFolderInfo = folder.getMessageFolderInfo(); messageFolderInfo.setExists(0); messageFolderInfo.setRecent(0); messageFolderInfo.setUnseen(0); // headerList.clear(); folder.setChanged(true); if (folder.getObservable() != null) { folder.getObservable().setMax(uids.length); folder.getObservable().resetCurrent(); } for (int i = 0; i < uids.length; i++) { if ((folder.getObservable() != null) && ((i % 100) == 0)) { folder.getObservable().setCurrent(i); } if (!headerList.exists(uids[i])) { try { Source source = ds.getMessageSource(uids[i]); if (source.length() == 0) { ds.removeMessage(uids[i]); continue; } header = new ColumbaHeader(HeaderParser.parse(source)); // make sure that we have a Message-ID String messageID = (String) header.get("Message-Id"); if (messageID != null) header.set("Message-ID", header.get("Message-Id")); header = CachedHeaderfields.stripHeaders(header); if (isOlderThanOneWeek(today, ((Date) header .getAttributes().get("columba.date")))) { header.getFlags().set(Flags.SEEN); } // message size should be at least 1 KB int size = Math.max(source.length() / 1024, 1); header.getAttributes().put("columba.size", new Integer(size)); // set the attachment flag header.getAttributes().put("columba.attachment", header.hasAttachments()); header.getAttributes().put("columba.uid", uids[i]); headerList.add(header, uids[i]); source.close(); source = null; } catch (Exception ex) { ex.printStackTrace(); } } else { header = headerList.get(uids[i]); } try { messageFolderInfo.incExists(); if (header.getFlags().getRecent()) { messageFolderInfo.incRecent(); } if (!header.getFlags().getSeen()) { messageFolderInfo.incUnseen(); } } catch (MailboxInfoInvalidException e) { // Can't happen } ((AbstractLocalFolder) folder) .setNextMessageUid(((Integer) uids[uids.length - 1]) .intValue() + 1); if ((folder.getObservable() != null) && ((i % 100) == 0)) { folder.getObservable().setCurrent(i); } } // we are done if (folder.getObservable() != null) { folder.getObservable().resetCurrent(); } }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
protected void deleteFilePart(File file, long startpos, long length) throws IOException { RandomAccessFile ramFile = new RandomAccessFile(file, "rw"); long oldlength = file.length(); FileChannel channel1 = ramFile.getChannel(); FileChannel channel2 = new FileInputStream(file).getChannel(); channel2.position(startpos + length); channel1.transferFrom(channel2, startpos, oldlength - (length + startpos)); channel2.close(); channel1.truncate(oldlength - length); channel1.close(); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
protected void load() throws IOException { ObjectInputStream in = new ObjectInputStream(new FileInputStream( messageFile)); MboxMessage message; int size = in.readInt(); messages = new Hashtable(size); for (int i = 0; i < size; i++) { message = new MboxMessage(new Integer(in.readInt()), in.readLong(), in.readLong()); messages.put(message.getUid(), message); } in.close(); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
public void save() throws IOException { ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream( messageFile, false)); MboxMessage message; int size = messages.size(); out.writeInt(size); Enumeration message_enum = messages.elements(); for (int i = 0; i < size; i++) { message = (MboxMessage) message_enum.nextElement(); out.writeInt(((Integer) message.getUid()).intValue()); out.writeLong(message.getStart()); out.writeLong(message.getLength()); } out.close(); }
// in java/org/columba/mail/folder/mbox/MboxParser.java
public static MboxMessage[] parseMbox(Source mailboxSource) throws IOException { Matcher mboxHeaderMatcher = YEAR_DIGITS.matcher(""); List messages = new LinkedList(); CharSequenceSearcher searcher = new CharSequenceSearcher("From "); List boundaries = searcher.match(mailboxSource); Iterator it = boundaries.iterator(); int start = ((Integer) it.next()).intValue(); int lastEnd = findNext(mailboxSource, start + 5, '\n') + 1; int newUid = 0; while (it.hasNext()) { start = ((Integer) it.next()).intValue(); int possibleEnd = findNext(mailboxSource, start + 5, '\n') + 1; mboxHeaderMatcher.reset(mailboxSource.subSequence(start, possibleEnd-1)); while( !mboxHeaderMatcher.find() && it.hasNext()) { start = ((Integer) it.next()).intValue(); possibleEnd = findNext(mailboxSource, start + 5, '\n') + 1; mboxHeaderMatcher.reset(mailboxSource.subSequence(start, possibleEnd)); } messages.add(new MboxMessage(new Integer(newUid++), lastEnd, start - lastEnd)); lastEnd = possibleEnd; } messages.add(new MboxMessage(new Integer(newUid++), lastEnd, mailboxSource.length() - lastEnd)); return (MboxMessage[]) messages.toArray(new MboxMessage[0]); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
protected void createIndex() throws IOException { DiskIO.ensureDirectory(indexDir); IndexWriter indexWriter = new IndexWriter(indexDir, null, true); indexWriter.close(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
protected List search(Query query) throws IOException { LinkedList result = new LinkedList(); if (getFileReader().numDocs() > 0) { Hits hitsFile = new IndexSearcher(getFileReader()).search(query); for (int i = 0; i < hitsFile.length(); i++) { result.add(new Integer(hitsFile.doc(i).getField("uid") .stringValue())); } } if (getRAMReader().numDocs() > 0) { Hits hitsRAM = new IndexSearcher(getRAMReader()).search(query); for (int i = 0; i < hitsRAM.length(); i++) { result.add(new Integer(hitsRAM.doc(i).getField("uid") .stringValue())); } } return result; }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
protected void mergeRAMtoIndex() throws IOException { IndexReader ramReader = getRAMReader(); IndexReader fileReader = getFileReader(); LOG.fine("Lucene: Merging RAMIndex to FileIndex"); /* * Document doc; for( int i=0; i<ramReader.numDocs(); i++) { doc = * ramReader.document(i); if( !deleted.contains(new * Integer(ramReader.document(i).getField("uid").stringValue())) ) { * fileIndex.addDocument(doc); } } */ ListIterator it = deleted.listIterator(); while (it.hasNext()) { String uid = it.next().toString(); if (ramReader.delete(new Term("uid", uid)) == 0) { fileReader.delete(new Term("uid", uid)); } } fileReader.close(); ramReader.close(); IndexWriter fileIndex = new IndexWriter(luceneIndexDir, analyzer, false); fileIndex.addIndexes(new Directory[] { ramIndexDir }); fileIndex.optimize(); fileIndex.close(); initRAMDir(); deleted.clear(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
private void initRAMDir() throws IOException { ramIndexDir = new RAMDirectory(); IndexWriter writer = new IndexWriter(ramIndexDir, analyzer, true); writer.close(); ramLastModified = -1; }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
private void incOperationCounter() throws IOException { operationCounter++; if (operationCounter > OPTIMIZE_AFTER_N_OPERATIONS) { mergeRAMtoIndex(); operationCounter = 0; } }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
public void saveMessage(Object uid, InputStream source) throws IOException { File file = new File(folder.getDirectoryFile() + File.separator + (Integer) uid); OutputStream out = new FileOutputStream(file); StreamUtils.streamCopy(source, out); source.close(); out.close(); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
private String getDecodedMessageBody() throws IOException { int encoding = bodyHeader.getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64: { bodyStream = new Base64DecoderInputStream(bodyStream); break; } } // First determine which charset to use if (charset == null) { try { // get charset from message charset = Charset.forName(bodyHeader.getContentParameter("charset")); } catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); } } bodyStream = new CharsetDecoderInputStream(bodyStream, charset); return StreamUtils.readCharacterStream(bodyStream).toString(); }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
private void saveMsgBodyAsHtml(boolean inclAllHeaders, File file) throws IOException { // decode message body with respect to charset String decodedBody = getDecodedMessageBody(); String body; if (!bodyHeader.getMimeType().getSubtype().equals("html")) { try { // substitute special characters like: <,>,&,\t,\n body = HtmlParser.substituteSpecialCharacters(decodedBody); // parse for urls / email adr. and substite with HTML-code body = HtmlParser.substituteURL(body); body = HtmlParser.substituteEmailAddress(body); // mark quotings with special font body = DocumentParser.markQuotings(body); } catch (Exception e) { LOG.severe("Error parsing body: " + e.getMessage()); body = "<em>Error parsing body!!!</em>"; } // encapsulate bodytext in html-code String css = getDefaultStyleSheet(); body = "<html><head>" + NL + css + NL + "<title>E-mail saved by Columba</title>" + NL + "</head><body><p class=\"bodytext\">" + NL + body + NL + "</p></body></html>"; } else { // use body as is body = HtmlParser.validateHTMLString(decodedBody); } // headers String[][] headers = getHeadersToSave(inclAllHeaders); String msg = insertHtmlHeaderTable(body, headers); // save message try { DiskIO.saveStringInFile(file, msg); LOG.fine("Html msg saved as " + file.getAbsolutePath()); } catch (IOException ioe) { LOG.severe("Error saving message to file: " + ioe.getMessage()); } }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
private void saveMsgBodyAsText(boolean inclAllHeaders, File file) throws IOException { //DocumentParser parser = new DocumentParser(); // decode message body with respect to charset String decodedBody = getDecodedMessageBody(); String body; if (bodyHeader.getMimeType().getSubtype().equals("html")) { // strip tags //body = parser.stripHTMLTags(decodedBody, true); //body = parser.restoreSpecialCharacters(body); body = HtmlParser.htmlToText(decodedBody); } else { // use body as is body = decodedBody; } // headers String[][] headers = getHeadersToSave(inclAllHeaders); StringBuffer buf = new StringBuffer(); for (int i = 0; i < headers[0].length; i++) { buf.append(headers[0][i]); buf.append(": "); buf.append(headers[1][i]); buf.append(NL); } buf.append(NL); // message composed of headers and body String msg = buf.toString() + body; // save message DiskIO.saveStringInFile(file, msg); LOG.fine("Text msg saved as " + file.getAbsolutePath()); }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
private cPrintObject getPlainBodyPrintObject() throws IOException { // decode message body with respect to charset String decodedBody = getDecodedMessageBody(); // create a print object and return it cParagraph printBody = new cParagraph(); printBody.setTopMargin(new cCmUnit(1.0)); printBody.setText(decodedBody); return printBody; }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
private cPrintObject getHTMLBodyPrintObject() throws IOException { // decode message body with respect to charset String decodedBody = getDecodedMessageBody(); // try to fix broken html-strings String validated = HtmlParser.validateHTMLString(decodedBody); try { // create temporary file and save validated body File tempFile = TempFileStore.createTempFileWithSuffix("html"); DiskIO.saveStringInFile(tempFile, validated); URL url = tempFile.toURL(); boolean allowScaling = isScalingAllowed(); cHTMLPart htmlBody = new cHTMLPart(allowScaling); // true ~ scaling allowed htmlBody.setTopMargin(new cCmUnit(1.0)); htmlBody.setHTML(url); return htmlBody; } catch (MalformedURLException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; } catch (IOException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; } }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
private String getDecodedMessageBody() throws IOException { int encoding = bodyHeader.getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: { bodyStream = new QuotedPrintableDecoderInputStream(bodyStream); break; } case MimeHeader.BASE64: { bodyStream = new Base64DecoderInputStream(bodyStream); break; } } // First determine which charset to use if (charset == null) { try { // get charset from message charset = Charset.forName(bodyHeader.getContentParameter("charset")); } catch (Exception ex) { // decode using default charset charset = Charset.forName(System.getProperty("file.encoding")); } } bodyStream = new CharsetDecoderInputStream(bodyStream, charset); return StreamUtils.readCharacterStream(bodyStream).toString(); }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureConnected() throws IOException, SMTPException, CommandCancelledException { if (protocol.getState() == SMTPProtocol.NOT_CONNECTED) { // Start login procedure protocol.openPort(); initialize(); doSSL(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureAuthenticated() throws IOException, SMTPException, CommandCancelledException { String username; char[] password = new char[0]; boolean savePassword; // Init Values // user's email address fromAddress = identity.getAddress().getMailAddress(); usingSSL = smtpItem.getBoolean("enable_ssl"); int authMethod = getLoginMethod(); boolean authenticated = (authMethod == AuthenticationManager.NONE); if (authMethod == AuthenticationManager.POP_BEFORE_SMTP) { // no esmtp - use POP3-before-SMTP instead try { pop3Authentification(); } catch (POP3Exception e) { throw new SMTPException(e); } authenticated = true; } ensureConnected(); if (!authenticated) { username = smtpItem.get("user"); password = Blowfish.decrypt(smtpItem.getRoot().getAttribute("password", "")); savePassword = smtpItem.getBoolean("save_password"); if (username.length() == 0) { // there seems to be no username set in the smtp-options // -> use username from pop3 or imap options if (accountItem.isPopAccount()) { PopItem pop3Item = accountItem.getPopItem(); username = pop3Item.get("user"); } else { ImapItem imapItem = accountItem.getImapItem(); username = imapItem.get("user"); } } PasswordDialog passDialog = new PasswordDialog(); // ask password from user if (password.length == 0) { passDialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String(password), savePassword); if (passDialog.success()) { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } else { throw new CommandCancelledException(); } } // try to authenticate while (!authenticated) { try { try { protocol.auth(AuthenticationManager .getSaslName(authMethod), username, password); authenticated = true; } catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } } } catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } } } // authentication was successful // -> save name/password smtpItem.setString("user", username); smtpItem.setBoolean("save_password", savePassword); if (savePassword) { smtpItem.setString("password", Blowfish.encrypt(password)); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void doSSL() throws CommandCancelledException, IOException, SMTPException { if (smtpItem.getBoolean("enable_ssl")) { if (isSupported("STARTTLS")) { try { protocol.startTLS(); usingSSL = true; } catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); } } else { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader.getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(null, MailResourceLoader.getString("dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
public List checkSupportedAuthenticationMethods() throws IOException, SMTPException, CommandCancelledException { ensureConnected(); List supportedMechanisms = new ArrayList(); for (int i = 0; i < capas.length; i++) { if (capas[i].startsWith("AUTH")) { List authMechanisms = AuthenticationFactory.getInstance() .getSupportedMechanisms(capas[i]); Iterator it = authMechanisms.iterator(); while (it.hasNext()) { Integer saslCode = new Integer(AuthenticationManager .getSaslCode((String) it.next())); if (!saslCode.equals(-1)) supportedMechanisms.add(saslCode); } break; } } if( supportedMechanisms.size() == 0) { // Add a default PLAIN login as fallback supportedMechanisms.add(new Integer(AuthenticationManager.SASL_PLAIN)); } return supportedMechanisms; }
// in java/org/columba/mail/smtp/SMTPServer.java
private void initialize() throws IOException, SMTPException { try { capas = protocol.ehlo(InetAddress.getLocalHost()); } catch (SMTPException e1) { // EHLO not supported -> AUTH not supported if( protocol.getState() < SMTPProtocol.PLAIN ) { protocol.openPort(); } protocol.helo(InetAddress.getLocalHost()); capas = new String[] {}; } }
// in java/org/columba/mail/smtp/SMTPServer.java
private int getLoginMethod() throws IOException, SMTPException, CommandCancelledException { String authType = accountItem.getSmtpItem().get("login_method"); int method = 0; try { method = Integer.parseInt(authType); } catch (NumberFormatException e) { //Fallback to Securest Login method } if (method == 0) { List supported = checkSupportedAuthenticationMethods(); if (accountItem.isPopAccount()) { supported .add(new Integer(AuthenticationManager.POP_BEFORE_SMTP)); } if (supported.size() == 0) { // No Authentication available return AuthenticationManager.NONE; } if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. method = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); method = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return method; }
// in java/org/columba/mail/smtp/SMTPServer.java
protected void pop3Authentification() throws IOException, POP3Exception, CommandCancelledException { POP3Store.doPOPbeforeSMTP(accountItem.getPopItem()); }
// in java/org/columba/mail/smtp/SMTPServer.java
public void sendMessage(SendableMessage message, IWorkerStatusController workerStatusController) throws SMTPException, IOException, CommandCancelledException { ensureAuthenticated(); // send from address and recipient list to SMTP server // ->all addresses have to be normalized protocol.mail(identity.getAddress()); Iterator recipients = message.getRecipients().iterator(); while (recipients.hasNext()) { try { protocol.rcpt(Address.parse((String) recipients.next())); } catch (ParserException e1) { throw new SMTPException(e1); } } // now send message source protocol.data(new ProgressObservedInputStream( message.getSourceStream(), workerStatusController)); }
// in java/org/columba/mail/smtp/SMTPServer.java
public void dropConnection() throws IOException { protocol.dropConnection(); }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
public static String createBodyText(MimePart mimePart, InputStream body) throws IOException { StreamableMimePart bodyPart = (StreamableMimePart) mimePart; String charsetName = bodyPart.getHeader() .getContentParameter("charset"); int encoding = bodyPart.getHeader().getContentTransferEncoding(); switch (encoding) { case MimeHeader.QUOTED_PRINTABLE: { body = new QuotedPrintableDecoderInputStream(body); break; } case MimeHeader.BASE64: { body = new Base64DecoderInputStream(body); break; } } if (charsetName != null) { Charset charset; try { charset = Charset.forName(charsetName); } catch (UnsupportedCharsetException e) { charset = Charset.forName(System.getProperty("file.encoding")); } body = new CharsetDecoderInputStream(body, charset); } String bodyMsg = StreamUtils.readCharacterStream(body).toString(); body.close(); return bodyMsg; }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
public static String createQuotedBodyText(CharSequence bodyText, boolean html) throws IOException { // Quote according model type (text/html) String quotedBodyText; if (html) { // html - quoting is done by inserting a div around the // message formattet with a blue line at left edge // TODO (@author fdietz): Implement quoting (font color, stylesheet, // blockquote???) /* * String lcase = bodyText.toLowerCase(); StringBuffer buf = new * StringBuffer(); String quoteStart = " <blockquote> "; String * quoteEnd = " </blockquote> "; * * int pos = lcase.indexOf(" <body"); pos = lcase.indexOf("> ", pos) + * 1; buf.append(bodyText.substring(0, pos)); * buf.append(quoteStart); int end = lcase.indexOf(" </body"); * buf.append(bodyText.substring(pos, end)); buf.append(quoteEnd); * buf.append(bodyText.substring(end)); * * Logging.log.info("Source:\n" + bodyText); * Logging.log.info("Result:\n" + buf.toString()); * * quotedBodyText = buf.toString(); */ quotedBodyText = bodyText.toString(); } else { // plain text quotedBodyText = bodyText.toString().replaceAll("(?m)^(.*)$", "> $1"); } return quotedBodyText; }
// in java/org/columba/mail/composer/SendableMessage.java
public void setSourceStream(InputStream sourceStream) throws IOException { this.sourceStream = new CloneStreamMaster(sourceStream); }
64
            
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
catch (IOException ioe) { ioe.printStackTrace(); }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/gui/message/command/ViewMessageSourceCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/gui/tree/TreeController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/config/filter/ConfigFrame.java
catch (IOException ioe) { DialogFacade.showExceptionDialog(ioe); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/AttachmentController.java
catch (IOException e) { LOG.warning("Could not add the file '" + file + "' to the attachment list, due to:" + e); }
// in java/org/columba/mail/gui/composer/ComposerModel.java
catch (IOException e) { LOG.warning("Could not add the file '" + file + "' to the attachment list, due to:" + e); }
// in java/org/columba/mail/gui/composer/action/ExternalEditorAction.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/ComposerAttachmentTransferHandler.java
catch (IOException e) { LOG.warning("The data that was DnD into the attachment was no longer available."); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (ChangedCharSetException ccse) { // try again, but ignore charset specification in the html try { loadHtmlIntoView(text, true); } catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); } }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (IOException e) { LOG.severe("Error setting view content, " + "even after ignore charset spec: " + e.getMessage()); }
// in java/org/columba/mail/gui/composer/html/HtmlEditorController2.java
catch (IOException e) { // other IOExceptions than ChangedCharsetException LOG.severe("Error setting view content: " + e.getMessage()); }
// in java/org/columba/mail/gui/composer/SignatureView.java
catch (IOException ex) { textPane.setText(""); }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor."); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), "Error: Cannot write to temp file needed " + "for external editor:\n" + ex.getMessage()); return null; }
// in java/org/columba/mail/gui/composer/util/ExternalEditor.java
catch (java.io.IOException ex) { JOptionPane.showMessageDialog(null, "Error: Cannot read from temp file used " + "by external editor."); return ""; }
// in java/org/columba/mail/gui/table/TableController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/messageframe/MessageFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/messageframe/MessageFrameController.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (IOException e1) { }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { // Now the state of the procotol is more certain correct }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/spam/spamassassin/IPCHelper.java
catch (IOException ioe) { ioe.printStackTrace(); }
// in java/org/columba/mail/spellcheck/ASpellInterface.java
catch (IOException e) { String msg = "Cannot check selection.\nError (Interface) is: " + e.getMessage(); LOG.info(msg); checkedBuffer = null; }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot create aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/config/AccountList.java
catch (IOException e) { //Do nothing }
// in java/org/columba/mail/folder/imap/IMAPCache.java
catch (IOException e) { cache.clear(); }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); throw new RuntimeException("Mailbox is corrupted!"); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { JOptionPane.showMessageDialog(null, e.getLocalizedMessage(), "Error while creating Lucene Index", JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { // Remove of lock didn't work -> delete by hand File commitLock = new File(indexDir, "commit.lock"); if (commitLock.exists()) { commitLock.delete(); } File writeLock = new File(indexDir, "write.lock"); if (writeLock.exists()) { writeLock.delete(); } }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); try { reset(); } catch (Exception e1) { LOG.severe(e.getLocalizedMessage()); } }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { e.printStackTrace(); LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/search/LuceneQueryEngine.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
catch (IOException e) { throw new FolderInconsistentException(); }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe_) { }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe) { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString( "statusbar", "message", "err_export_messages_msg"), MailResourceLoader.getString("statusbar", "messages", "err_export_messages_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/ExportFolderCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/folder/command/CopyMessageCommand.java
catch (IOException ioe) { String[] options = new String[] { MailResourceLoader.getString("statusbar", "message", errorRetryMessage), MailResourceLoader.getString("statusbar", "message", errorIgnoreMessage), MailResourceLoader .getString("", "global", "cancel") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("statusbar", "message", errorCopyMessage), MailResourceLoader.getString("statusbar", "message", errorTitle), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]); switch (result) { case JOptionPane.YES_OPTION: //retry copy j--; break; case JOptionPane.CANCEL_OPTION: worker.cancel(); default: continue; } }
// in java/org/columba/mail/folder/command/SaveMessageBodyAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving message to file: " + ioe.getMessage()); }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { LOG.severe("Error saving msg source to file: " + ioe.getMessage()); JOptionPane.showMessageDialog(null, MailResourceLoader.getString("dialog", "saveas", "err_save_msg"), MailResourceLoader.getString("dialog", "saveas", "err_save_title"), JOptionPane.ERROR_MESSAGE); }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/folder/command/SaveMessageSourceAsCommand.java
catch (IOException ioe) { }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (IOException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (IOException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (IOException e1) { }
// in java/org/columba/mail/composer/MessageComposer.java
catch (IOException ex) { ex.printStackTrace(); return ""; }
// in java/org/columba/mail/composer/SendableMessage.java
catch (IOException e) { e.printStackTrace(); }
7
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot create aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/folder/imap/CheckForNewMessagesCommand.java
catch (IOException e) { imapFolder.setMailboxSyncEnabled(true); worker.cancel(); throw new CommandCancelledException(e); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); throw new RuntimeException("Mailbox is corrupted!"); }
// in java/org/columba/mail/folder/mh/MHDataStorage.java
catch (IOException e) { throw new FolderInconsistentException(); }
1
runtime (Lib) IllegalArgumentException 24
            
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
protected JComponent[] transformHeaderField(Header header, String key) { if (header == null) throw new IllegalArgumentException("header == null"); if (key == null) throw new IllegalArgumentException("key == null"); BasicHeader bHeader = new BasicHeader(header); // message doesn't contain this headerfield if (header.get(key) == null) { return new JComponent[0]; } // headerfield is empty if (((String) header.get(key)).length() == 0) { return new JComponent[0]; } if (key.equals("Subject")) { String str = bHeader.getSubject(); // substitute special characters like: // <,>,&,\t,\n," str = HtmlParser.substituteSpecialCharactersInHeaderfields(str); return new JComponent[] { new JLabel(str) }; } else if (key.equals("To")) { return createRecipientComponentArray(bHeader.getTo()); } else if (key.equals("Reply-To")) { return createRecipientComponentArray(bHeader.getReplyTo()); } else if (key.equals("Cc")) { return createRecipientComponentArray(bHeader.getCc()); } else if (key.equals("Bcc")) { return createRecipientComponentArray(bHeader.getBcc()); } else if (key.equals("From")) { return createRecipientComponentArray(new Address[] { (Address) bHeader .getFrom() }); } else if (key.equals("Date")) { String str = DATE_FORMATTER.format(bHeader.getDate()); // substitute special characters like: // <,>,&,\t,\n," str = HtmlParser.substituteSpecialCharactersInHeaderfields(str); return new JComponent[] { new JLabel(str) }; } else { String str = (String) header.get(key); // substitute special characters like: // <,>,&,\t,\n," str = HtmlParser.substituteSpecialCharactersInHeaderfields(str); return new JComponent[] { new JLabel(str) }; } }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
public void setHeader(Map keys) { if (keys == null) throw new IllegalArgumentException("keys == null"); this.keys = keys; }
// in java/org/columba/mail/gui/frame/ThreePaneMailFrameController.java
public void selectionChanged(SelectionChangedEvent e) { if (e instanceof TreeSelectionChangedEvent) { // tree selection event TreeSelectionChangedEvent event = (TreeSelectionChangedEvent) e; IMailFolder[] selectedFolders = event.getSelected(); if (isTreePopupEvent == false) { // view headerlist in message list viewer new ViewHeaderListAction(this).actionPerformed(null); // Unregister/register as Folder listener if (currentFolder != null) { currentFolder.removeFolderListener(this); currentFolder = null; } if (selectedFolders.length == 1 && selectedFolders[0] != null) { selectedFolders[0].addFolderListener(this); currentFolder = selectedFolders[0]; } // update frame title updateTreeDockableTitle(); } isTreePopupEvent = false; } else if (e instanceof TableSelectionChangedEvent) { if (isTablePopupEvent == false) // show message content new ViewMessageAction(this).actionPerformed(null); isTablePopupEvent = false; } else throw new IllegalArgumentException( "unknown selection changed event"); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
private AbstractColumbaAction getAction(String id, IFrameMediator controller) { if (id == null) throw new IllegalArgumentException("id == null"); if (controller == null) throw new IllegalArgumentException("controller == null"); IExtension extension = handler.getExtension(id); AbstractColumbaAction a = null; try { if (extension != null) a = (AbstractColumbaAction) extension .instanciateExtension(new Object[] { controller }); } catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); } return a; }
// in java/org/columba/mail/gui/composer/util/AddressCollector.java
public void addAllContacts(List<IHeaderItem> list, boolean includeGroup) { if ( list == null ) throw new IllegalArgumentException("list == null"); Iterator<IHeaderItem> it = list.iterator(); while (it.hasNext()) { IHeaderItem headerItem = it.next(); if (headerItem.isContact()) { // contacts item IContactItem item = (IContactItem) headerItem; addAddress(item.getName(), item); addAddress(item.getFirstName(), item); addAddress(item.getLastName(), item); addAddress(item.getEmailAddress(), item); } else { if (includeGroup) { // group item IGroupItem item = (IGroupItem) headerItem; addAddress(item.getName(), item); } } } }
// in java/org/columba/mail/gui/util/WelcomeMessage.java
public static void addWelcomeMessage(IMailFolder folder, String to, String accountUid) throws Exception { if ( folder == null) throw new IllegalArgumentException("folder == null"); if ( to == null || to.length() == 0) throw new IllegalArgumentException("to == nllu"); if ( accountUid == null ) throw new IllegalArgumentException("account uid == null"); // create message String message = createMessage(to, accountUid); // convert to inputstream InputStream is = new ByteArrayInputStream(message.getBytes("UTF-8")); // add to folder CommandProcessor.getInstance().addOp( new AddMessageCommand(new MailFolderCommandReference( folder), is)); }
// in java/org/columba/mail/main/MessageOptionParser.java
public static CharSequence[] tokenizeList(CharSequence input) { if (input == null) throw new IllegalArgumentException("input == null"); List<CharSequence> result = new ArrayList<CharSequence>(); boolean quoted = false; String current = ""; int start = 0; int i; char quotechar = '\0'; boolean escaped = false; for (i = 0; i < input.length(); i++) { char c = input.charAt(i); switch (c) { case '\"': case '\'': { if (!escaped && (!quoted || c == quotechar)) { current += input.subSequence(start, i); start = i + 1; quoted ^= true; quotechar = c; } break; } case '\\': if (!quoted) { escaped = true; current += input.subSequence(start, i); start = i + 1; break; } case ',': { if (!escaped && !quoted) { result.add(current + input.subSequence(start, i)); current = ""; start = i + 1; } break; } } if (c != '\\') escaped = false; } if (start < i) { current += input.subSequence(start, i); } if (!current.equals("")) { result.add(current); } return (CharSequence[]) result.toArray(new CharSequence[0]); }
// in java/org/columba/mail/main/MessageOptionParser.java
public static Map<String,Object> parse(String in) { if (in == null) throw new IllegalArgumentException("in == null"); Hashtable<String, Object> map = new Hashtable<String, Object>(); CharSequence[] sequence = tokenizeList(in); for (int i = 0; i < sequence.length; i++) { String s = (String) sequence[i]; // remove whitespaces s = s.trim(); // split key/value pairs int index = s.indexOf('='); if (index != -1) { String key = s.substring(0, index); String value = s.substring(index + 1, s.length()); // split values CharSequence[] sequencevalues = tokenizeList(value); if (sequencevalues.length == 1) map.put(key, value); else { String []values = new String[sequencevalues.length]; for (int j = 0; j < values.length; j++) values[j] = (String)sequencevalues[j]; map.put(key, values); } } } return map; }
// in java/org/columba/mail/parser/NormalizeRecipientListParser.java
public List<String> normalizeRCPTVector(List<String> list) { if (list == null) throw new IllegalArgumentException("list == null"); String mailaddress = ""; String new_address = ""; List<String> out = new Vector<String>(); for (Iterator it = list.iterator(); it.hasNext();) { mailaddress = (String) it.next(); // skip if ((mailaddress == null) || (mailaddress.length() == 0)) { continue; } StringTokenizer strToken = new StringTokenizer(mailaddress, "<"); if (strToken.countTokens() == 2) { // the first token is irrelevant strToken.nextToken(); // the next token is an token with the whole Mailaddress new_address = "<" + strToken.nextToken(); } else { // just look if the first character alrady an < // so can use this mailaddress as the correct address if (mailaddress.charAt(0) == '<') { new_address = mailaddress; } else { new_address = "<" + mailaddress + ">"; } } out.add(new_address); new_address = ""; } return out; }
// in java/org/columba/mail/parser/ListBuilder.java
public static List<String> createFlatList(List<String> list) { if (list == null) throw new IllegalArgumentException("list == null"); List<String> result = new Vector<String>(); Iterator<String> it = list.iterator(); while (it.hasNext()) { String str = it.next(); // remove leading or trailing whitespaces str = str.trim(); IContactItem contactItem = retrieveContactItem(str); if (contactItem != null) { // found contact item in contact component String address = contactItem.getEmailAddress(); if ((address == null) || address.equals("")) continue; result.add(address); } else { // check if its a group item IGroupItem groupItem = retrieveGroupItem(str); if (groupItem != null) { List<IContactItem> contactItemList = groupItem .getContacts(); Iterator<IContactItem> it2 = contactItemList.iterator(); while (it2.hasNext()) { IContactItem i = it2.next(); String address = i.getEmailAddress(); if ((address == null) || address.equals("")) { continue; } result.add(address); } } else { result.add(str); } } } return result; }
// in java/org/columba/mail/parser/ListParser.java
public static List<String> createListFromString(String str) { if (str == null) throw new IllegalArgumentException("str == null"); List<String> result = new Vector<String>(); if (str.length() == 0) return result; int pos = 0; boolean bracket = false; // Remove the ending separator and whitespace, if any exist str = str.trim(); if (str.endsWith(SEPARATOR_STRING)) str = str.substring(0, str.length()-1); StringBuffer buf = new StringBuffer(); while (pos < str.length()) { char ch = str.charAt(pos); if ((ch == SEPARATOR_CHAR) && (bracket == false)) { // found new message String address = buf.toString().trim(); result.add(address); buf = new StringBuffer(); } else if (ch == '"') { // Remove the double-quote characters from around the addresses in the string bracket = !bracket; } else { buf.append(ch); } pos++; } String address = buf.toString().trim(); // remove whitespaces address = address.trim(); result.add(address); return result; }
// in java/org/columba/mail/parser/ListParser.java
public static String createStringFromList(List<String> list, String separator, boolean trailingSeperator) { if (list == null) throw new IllegalArgumentException("list == null"); if (separator == null) throw new IllegalArgumentException("separator == null"); StringBuffer output = new StringBuffer(); String seperatorstring = ""; for (Iterator it = list.iterator(); it.hasNext();) { String address = (String) it.next(); if (address == null || address.equals("")) { continue; } // Remote double-quotes StringBuffer addrSB = new StringBuffer(address); while (true) { int doubleQuote = addrSB.indexOf("\""); if (doubleQuote >= 0) addrSB.deleteCharAt(doubleQuote); else break; } // If address contains a comma, enclose the display name portion in double-quotes int comma = addrSB.indexOf(","); int endDoubleQuote = addrSB.length(); if (comma >= 0) { int addrStart = addrSB.indexOf(" <"); if (addrStart >= 0) endDoubleQuote = addrStart; addrSB.insert(endDoubleQuote, '"'); addrSB.insert(0, '"'); } address = addrSB.toString(); output.append(seperatorstring); output.append(address); seperatorstring = separator + " "; } if (trailingSeperator) output.append(seperatorstring); return output.toString(); }
// in java/org/columba/mail/search/MailSearchProvider.java
public ICriteriaRenderer getCriteriaRenderer( String searchCriteriaTechnicalName) { if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_BODY_CONTAINS)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_BODY_CONTAINS, ""), this); else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SUBJECT_CONTAINS)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_SUBJECT_CONTAINS, ""), this); else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_FROM_CONTAINS)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_FROM_CONTAINS, ""), this); else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SIZE_GREATER_THAN)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_SIZE_GREATER_THAN, ""), this); else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SIZE_SMALLER_THAN)) return new StringCriteriaRenderer(getCriteria( MailSearchProvider.CRITERIA_SIZE_SMALLER_THAN, ""), this); else throw new IllegalArgumentException("no renderer available for <" + searchCriteriaTechnicalName + ">"); }
// in java/org/columba/mail/search/MailSearchProvider.java
private FilterCriteria createFilterCriteria(String searchTerm, String searchCriteriaTechnicalName) { FilterCriteria criteria = null; if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_BODY_CONTAINS)) { criteria = MailFilterFactory.createBodyContains(searchTerm); } else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SUBJECT_CONTAINS)) { criteria = MailFilterFactory.createSubjectContains(searchTerm); } else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_FROM_CONTAINS)) { criteria = MailFilterFactory.createFromContains(searchTerm); } else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SIZE_GREATER_THAN)) { criteria = MailFilterFactory.createSizeIsBigger(Integer .parseInt(searchTerm)); } else if (searchCriteriaTechnicalName .equals(MailSearchProvider.CRITERIA_SIZE_SMALLER_THAN)) { criteria = MailFilterFactory.createSizeIsSmaller(Integer .parseInt(searchTerm)); } else throw new IllegalArgumentException("no criteria <" + searchCriteriaTechnicalName + "> found"); return criteria; }
// in java/org/columba/mail/search/MailSearchProvider.java
public void showAllResults(IFrameMediator mediator, String searchTerm, String searchCriteriaTechnicalName) { VirtualFolder vFolder = lastSearchFolder; // if complex use the last search folder if (searchCriteriaTechnicalName == null) { vFolder = searchFolders.values().iterator().next(); } else vFolder = searchFolders.get(searchCriteriaTechnicalName); if (vFolder == null) throw new IllegalArgumentException("vFolder for search critera <" + searchCriteriaTechnicalName + "> not found"); // ensure that we are currently in the mail component IFrameMediator newMediator = null; try { newMediator = FrameManager.getInstance().switchView( mediator.getContainer(), "ThreePaneMail"); } catch (PluginLoadingFailedException e) { e.printStackTrace(); } // select invisible virtual folder ((TreeViewOwner) newMediator).getTreeController().setSelected(vFolder); // update message list CommandProcessor.getInstance().addOp( new ViewHeaderListCommand(newMediator, new MailFolderCommandReference(vFolder))); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public boolean tryToGetLock(Object locker) { // IMAP Folders have no own lock ,but share the lock from the Root // to ensure that only one operation can be processed simultanous IMailFolder root = getRootFolder(); if (root == null) throw new IllegalArgumentException("IMAPRoot is null"); return root.tryToGetLock(locker); }
// in java/org/columba/mail/folder/imap/IMAPFolder.java
public void releaseLock(Object locker) { IMailFolder root = getRootFolder(); if (root == null) throw new IllegalArgumentException("IMAPRoot is null"); root.releaseLock(locker); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
public Set keySet() { try { openDatabase(); } catch (DatabaseException e) { LOG.severe(e.getMessage()); return new HashSet(); } if( keyType == Integer.class ) { return new StoredKeySet(db, integerBinding, false); } else if( keyType == String.class) { return new StoredKeySet(db, stringBinding, false); } throw new IllegalArgumentException("keyType not implemented!"); }
// in java/org/columba/mail/folder/command/CreateFilterOnMessageCommand.java
public Filter createFilter(String filterDescr, String headerField, String pattern) { Filter filter = FilterFactory.createEmptyFilter(); filter.setName(filterDescr); if (headerField.equals(FILTER_ON_SUBJECT)) { filter.getFilterRule().add( MailFilterFactory.createSubjectContains(pattern)); } else if (headerField.equals(FILTER_ON_FROM)) { filter.getFilterRule().add( MailFilterFactory.createFromContains(pattern)); } else if (headerField.equals(FILTER_ON_TO)) { filter.getFilterRule().add( MailFilterFactory.createToContains(pattern)); } else throw new IllegalArgumentException("unsupported operation"); filter.getFilterActionList().addEmptyAction(); return filter; }
0 0 2
            
// in java/org/columba/mail/gui/table/TableView.java
catch (IllegalArgumentException e) { }
// in java/org/columba/mail/folder/headercache/DefaultHeaderBinding.java
catch (IllegalArgumentException e) { }
0 0
unknown (Lib) IllegalCharsetNameException 0 0 0 1
            
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
catch (IllegalCharsetNameException e) { charsetName = System.getProperty("file.encoding"); charset = Charset.forName(charsetName); }
0 0
unknown (Lib) IndexOutOfBoundsException 0 0 1
            
// in java/org/columba/mail/gui/config/filter/FilterListDataModel.java
public void addFilter(Filter newFilter) throws IndexOutOfBoundsException { int row = filterList.count(); filterList.add(newFilter); fireTableRowsInserted(row, row); }
2
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); }
// in java/org/columba/mail/folder/headercache/DefaultHeaderBinding.java
catch (IndexOutOfBoundsException e) { }
1
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); }
0
unknown (Lib) InterruptedException 0 0 0 3
            
// in java/org/columba/mail/gui/message/command/SaveAttachmentTemporaryCommand.java
catch (InterruptedException e) { LOG.warning("The thread waiting for the Save Attachment Temporary command was interrupted."); }
// in java/org/columba/mail/main/MailMain.java
catch (InterruptedException e) { LOG.severe(e.getMessage()); }
// in java/org/columba/mail/folder/outbox/SendListManager.java
catch (InterruptedException e) { }
0 0
unknown (Lib) JSCFException 0 0 3
            
// in java/org/columba/mail/pgp/JSCFController.java
public JSCFConnection getConnection(String userID) throws JSCFException { SecurityItem pgpItem = MailConfig.getInstance().getAccountList() .getDefaultAccount().getPGPItem(); JSCFConnection con = (JSCFConnection) connectionMap.get(userID); if (con == null) { LOG.fine("no connection for userID (" + userID + ") found. Creating a new Connection."); // let us hard coding the gpg for each connection. Later we should // support also other variants (like smime) con = JSCFDriverManager.getConnection("jscf:gpg:"); // getting the path to gpg IExtensionHandler handler = null; String path = null; try { LOG.fine("try to get the handler"); handler = PluginManager .getInstance().getExtensionHandler( "org.columba.core.externaltools"); LOG.fine("recived Handler ... getting path from it"); path = ExternalToolsManager.getInstance() .getLocationOfExternalTool("gpg").getPath(); LOG.fine("setting path: " + path); } catch (PluginHandlerNotFoundException e) { LOG.fine("PluginHandler not found" + e); if (Logging.DEBUG) { e.printStackTrace(); } } /* * if (path == null) { throw new ProgramNotFoundException("invalid * path"); } */ Properties props = con.getProperties(); if (path == null) { throw new ProgramNotFoundException("invalid path"); } props.put("PATH", path); if (handler != null) { IExtension extension = handler.getExtension("gpg"); LOG.fine("gpg userId: " + extension.getMetadata().getId()); } LOG.info("gpg path: " + props.get("PATH")); props.put("USERID", pgpItem.get("id")); LOG.info("current gpg userID: " + props.get("USERID")); con.setProperties(props); connectionMap.put(userID, con); } return con; }
// in java/org/columba/mail/pgp/JSCFController.java
public JSCFConnection getConnection() throws JSCFException { SecurityItem pgpItem = MailConfig.getInstance().getAccountList() .getDefaultAccount().getPGPItem(); return getConnection(pgpItem.get("id")); }
// in java/org/columba/mail/pgp/PGPPassChecker.java
public boolean checkPassphrase(JSCFConnection con) throws JSCFException { boolean stmtCheck = false; JSCFStatement stmt = con.createStatement(); // loop until signing was sucessful or the user cancels the passphrase // dialog Properties props = con.getProperties(); while (!stmtCheck && (this.checkPassphraseDialog(con) == true)) { stmtCheck = stmt.checkPassphrase(); if (!stmtCheck) { this.passwordMap.remove(props.get("USERID")); } } return stmtCheck; }
4
            
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (JSCFException e) { e.printStackTrace(); LOG.severe(e.getMessage()); pgpMode = SecurityStatusViewer.DECRYPTION_FAILURE; pgpMessage = e.getMessage(); // just show the encrypted raw message decryptedStream = encryptedPart; }
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (JSCFException e) { if (Logging.DEBUG) e.printStackTrace(); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; pgpMessage = e.getMessage(); // something really got wrong here -> show error dialog // JOptionPane.showMessageDialog(null, e.getMessage()); pgpMode = SecurityStatusViewer.VERIFICATION_FAILURE; }
// in java/org/columba/mail/pgp/JSCFController.java
catch (JSCFException e) { e.printStackTrace(); }
// in java/org/columba/mail/smtp/command/SendMessageCommand.java
catch (JSCFException e1) { if (e1 instanceof CancelledException) { // user cancelled sending operation // open composer view showComposer = true; return; } else { JOptionPane.showMessageDialog(FrameManager.getInstance() .getActiveFrame(), e1.getMessage()); // open composer view showComposer = true; return; } }
0 0
unknown (Lib) MailboxInfoInvalidException 1
            
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
private void sanityCheck() throws MailboxInfoInvalidException { if( !isSane() ) throw new MailboxInfoInvalidException(); }
0 7
            
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void incExists() throws MailboxInfoInvalidException { mailboxInfo.setExists(mailboxInfo.getExists()+1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void decExists() throws MailboxInfoInvalidException { mailboxInfo.setExists(mailboxInfo.getExists()-1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void incRecent() throws MailboxInfoInvalidException { mailboxInfo.setRecent(mailboxInfo.getRecent()+1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void decRecent() throws MailboxInfoInvalidException { mailboxInfo.setRecent(mailboxInfo.getRecent()-1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void incUnseen() throws MailboxInfoInvalidException { mailboxInfo.setUnseen(mailboxInfo.getUnseen()+1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
public void decUnseen() throws MailboxInfoInvalidException { mailboxInfo.setUnseen(mailboxInfo.getUnseen()-1); sanityCheck(); }
// in java/org/columba/mail/folder/ColumbaMailboxInfo.java
private void sanityCheck() throws MailboxInfoInvalidException { if( !isSane() ) throw new MailboxInfoInvalidException(); }
4
            
// in java/org/columba/mail/folder/headercache/SyncHeaderList.java
catch (MailboxInfoInvalidException e) { // Can't happen }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (MailboxInfoInvalidException e) { recreateMessageFolderInfo(); }
0 0
unknown (Lib) MalformedURLException 0 0 0 6
            
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (MalformedURLException mue) { return null; }
// in java/org/columba/mail/gui/config/filter/ConfigFrame.java
catch (MalformedURLException mue) { DialogFacade.showExceptionDialog(mue); }
// in java/org/columba/mail/spam/spamassassin/SpamAssassinExternalToolPlugin.java
catch (MalformedURLException mue) { }
// in java/org/columba/mail/spam/spamassassin/SpamcExternalToolPlugin.java
catch (MalformedURLException mue) { }
// in java/org/columba/mail/spam/spamassassin/SALearnExternalToolPlugin.java
catch (MalformedURLException mue) { }
// in java/org/columba/mail/folder/command/PrintMessageCommand.java
catch (MalformedURLException e) { LOG.warning("Error loading html for print: " + e.getMessage()); return null; }
0 0
unknown (Lib) MessageNotOnServerException 3
            
// in java/org/columba/mail/pop3/POP3Store.java
public int getSize(int index) throws IOException, POP3Exception, CommandCancelledException { try { return ((Integer) getSizeList().get(index)).intValue(); } catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); } catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); } }
// in java/org/columba/mail/pop3/POP3Store.java
protected int getIndex(Object uid) throws IOException, POP3Exception, CommandCancelledException { if (getUidMap().containsKey(uid)) { return ((Integer) getUidMap().get(uid)).intValue(); } else { throw new MessageNotOnServerException(uid); } }
2
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); }
0 0 0 0
unknown (Lib) MissingResourceException 0 0 0 1
            
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (MissingResourceException ex) { name = item.getString("property", "name"); }
0 0
unknown (Lib) NoSuchAlgorithmException 0 0 0 2
            
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (NoSuchAlgorithmException nsae) { }
// in java/org/columba/mail/spam/MacchiatoPlugin.java
catch (NoSuchAlgorithmException nsae) { }
0 0
unknown (Lib) NoSuchMethodException 0 0 0 5
            
// in java/org/columba/mail/gui/config/mailboximport/PluginStep.java
catch (NoSuchMethodException nsme) { }
// in java/org/columba/mail/gui/config/accountwizard/IdentityStep.java
catch (NoSuchMethodException nsme) {}
// in java/org/columba/mail/gui/config/accountwizard/IncomingServerStep.java
catch (NoSuchMethodException nsme) { }
// in java/org/columba/mail/gui/config/accountwizard/IncomingServerStep.java
catch (NoSuchMethodException nsme) { }
// in java/org/columba/mail/gui/config/accountwizard/OutgoingServerStep.java
catch (NoSuchMethodException nsme) { }
0 0
runtime (Lib) NullPointerException 0 0 0 1
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); }
1
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); }
0
unknown (Lib) NumberFormatException 0 0 0 9
            
// in java/org/columba/mail/gui/config/account/IncomingServerPanel.java
catch (NumberFormatException e) { }
// in java/org/columba/mail/gui/config/account/OutgoingServerPanel.java
catch (NumberFormatException e) { }
// in java/org/columba/mail/pop3/POP3Store.java
catch (NumberFormatException e) { // Just use the default as fallback }
// in java/org/columba/mail/imap/IMAPServer.java
catch (NumberFormatException e) { // Just use the default as fallback }
// in java/org/columba/mail/filter/plugins/AccountFilter.java
catch (NumberFormatException e) { criteriaAccountUid = -1; }
// in java/org/columba/mail/filter/plugins/ColorFilter.java
catch (NumberFormatException e) { criteriaRGB = 0; }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (NumberFormatException e) { }
// in java/org/columba/mail/folder/AbstractFolder.java
catch (NumberFormatException ex) { node.setInteger("uid", nextUid++); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (NumberFormatException e) { //Fallback to Securest Login method }
0 0
unknown (Lib) POP3Exception 0 0 19
            
// in java/org/columba/mail/pop3/POP3Server.java
public void deleteMessage(Object uid) throws IOException, POP3Exception, CommandCancelledException { try { store.deleteMessage(uid); getHeaderList().remove(uid); // set dirty flag setCacheChanged(true); } catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; } }
// in java/org/columba/mail/pop3/POP3Server.java
public void deleteMessagesOlderThan(Date date) throws IOException, POP3Exception, CommandCancelledException { LOG.info("Removing message older than " + date); IHeaderList headerList = getHeaderList(); ICloseableIterator it = headerList.headerIterator(); while (it.hasNext()) { IColumbaHeader header = (IColumbaHeader) it.next(); if (((Date) header.get("columba.date")).before(date)) { deleteMessage(header.get("columba.uid")); } } it.close(); }
// in java/org/columba/mail/pop3/POP3Server.java
public void cleanUpServer() throws IOException, POP3Exception, CommandCancelledException { PopItem item = getAccountItem().getPopItem(); if (item.getBooleanWithDefault("leave_messages_on_server", false) && item.getBooleanWithDefault("remove_old_from_server", false)) { int days = item.getInteger("older_than"); long date = new Date().getTime(); date -= days * DAY_IN_MS; deleteMessagesOlderThan(new Date(date)); } else if (!item.getBooleanWithDefault("leave_messages_on_server", false)) { removeAllDownloadedMessages(); } }
// in java/org/columba/mail/pop3/POP3Server.java
private void removeAllDownloadedMessages() throws IOException, CommandCancelledException, POP3Exception { IHeaderList headerList = getHeaderList(); ICloseableIterator it = headerList.keyIterator(); while (it.hasNext()) { deleteMessage(it.next()); } it.close(); }
// in java/org/columba/mail/pop3/POP3Server.java
public ColumbaMessage getMessage(Object uid, IWorkerStatusController worker) throws IOException, POP3Exception, CommandCancelledException, ParserException { InputStream messageStream = new ProgressObservedInputStream(getStore() .fetchMessage(store.getIndex(uid)), worker, true); // Store the complete stream in a source so that we can parse it Source source = TempSourceFactory.createTempSource(messageStream, -1); // pipe through preprocessing filter // if (popItem.getBoolean("enable_pop3preprocessingfilter", false)) // rawString = modifyMessage(rawString); // UPDATE! @author fdietz // was: // Activate PreProcessor again with Source instead of String // new goal: // completely remove preprocessor -> we never change the message source! ColumbaMessage m; try { Header header = HeaderParser.parse(source); m = new ColumbaMessage(header); ColumbaHeader h = (ColumbaHeader) m.getHeader(); m.setSource(source); h.getAttributes().put("columba.pop3uid", uid); // message size should be at least 1 KB int size = Math.max(source.length() / 1024, 1); h.getAttributes().put("columba.size", new Integer(size)); // set the attachment flag h.getAttributes().put("columba.attachment", h.hasAttachments()); h.getAttributes().put("columba.fetchstate", Boolean.TRUE); h.getAttributes().put("columba.accountuid", new Integer(accountItem.getInteger("uid"))); getHeaderList().add(h, uid); } catch (ParserException e) { LOG .severe("Skipped message: Error parsing message. Message source:\n " + source); return null; } // set headercache dirty flag setCacheChanged(true); return m; }
// in java/org/columba/mail/pop3/POP3Store.java
public int getSize(int index) throws IOException, POP3Exception, CommandCancelledException { try { return ((Integer) getSizeList().get(index)).intValue(); } catch (IndexOutOfBoundsException e) { throw new MessageNotOnServerException(new Integer(index)); } catch (NullPointerException e) { throw new MessageNotOnServerException(new Integer(index)); } }
// in java/org/columba/mail/pop3/POP3Store.java
private List getSizeList() throws IOException, POP3Exception, CommandCancelledException { if (sizeList == null) { ensureTransaction(); ScanListEntry[] sizes = protocol.list(); sizeList = new ArrayList(sizes.length + 1); // since the indices on the pop server start with 1 we add // a dummy null for the 0 element in the list sizeList.add(null); for (int i = 0; i < sizes.length; i++) { if (sizes[i].getIndex() > sizeList.size() - 1) { // fill with nulls for (int nextIndex = sizeList.size() - 1; nextIndex < sizes[i] .getIndex(); nextIndex++) { sizeList.add(null); } } // put size at the specified place sizeList.set(sizes[i].getIndex(), new Integer(sizes[i] .getSize())); } } return sizeList; }
// in java/org/columba/mail/pop3/POP3Store.java
public int getMessageCount() throws IOException, POP3Exception, CommandCancelledException { if (messageCount == -1) { ensureTransaction(); int[] stat = protocol.stat(); messageCount = stat[0]; } return messageCount; }
// in java/org/columba/mail/pop3/POP3Store.java
public boolean deleteMessage(Object uid) throws CommandCancelledException, IOException, POP3Exception { ensureTransaction(); return protocol.dele(getIndex(uid)); }
// in java/org/columba/mail/pop3/POP3Store.java
protected int getIndex(Object uid) throws IOException, POP3Exception, CommandCancelledException { if (getUidMap().containsKey(uid)) { return ((Integer) getUidMap().get(uid)).intValue(); } else { throw new MessageNotOnServerException(uid); } }
// in java/org/columba/mail/pop3/POP3Store.java
public InputStream fetchMessage(int index) throws IOException, POP3Exception, CommandCancelledException { ensureTransaction(); return protocol.retr(index, getSize(index)); }
// in java/org/columba/mail/pop3/POP3Store.java
public void logout() throws IOException, POP3Exception { if (protocol.getState() != POP3Protocol.NOT_CONNECTED) { protocol.quit(); } uidMap = null; sizeList = null; messageCount = -1; }
// in java/org/columba/mail/pop3/POP3Store.java
protected void login() throws IOException, POP3Exception, CommandCancelledException { PasswordDialog dialog; boolean login = false; char[] password = new char[0]; boolean save = false; int loginMethod = getLoginMethod(); while (!login) { if ((password = Blowfish.decrypt(popItem.getRoot().getAttribute( "password", ""))).length == 0) { dialog = new PasswordDialog(); dialog.showDialog(MessageFormat .format(MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { popItem.get("user"), popItem.get("host") }), popItem.get("password"), popItem .getBoolean("save_password")); if (dialog.success()) { // ok pressed password = dialog.getPassword(); save = dialog.getSave(); } else { throw new CommandCancelledException(); } } else { save = popItem.getBoolean("save_password"); } try { if (loginMethod == AuthenticationManager.USER) { protocol.userPass(popItem.get("user"), password); login = true; } else if (loginMethod == AuthenticationManager.APOP) { try { protocol.apop(popItem.get("user"), password); } catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. } login = true; } else { try { // AUTH protocol.auth(AuthenticationManager .getSaslName(loginMethod), popItem.get("user"), password); login = true; } catch (AuthenticationException e) { // If the cause is a IMAPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof POP3Exception) throw (POP3Exception) e.getCause(); // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { loginMethod = AuthenticationManager.USER; popItem.setString("login_method", Integer .toString(loginMethod)); } else { throw new CommandCancelledException(); } } } } catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); } LOG.info("login=" + login); } popItem.setBoolean("save_password", save); if (save) { popItem.setString("password", Blowfish.encrypt(password)); } }
// in java/org/columba/mail/pop3/POP3Store.java
public static void doPOPbeforeSMTP(PopItem popItem) throws IOException, POP3Exception, CommandCancelledException { POP3Store store = new POP3Store(popItem); store.ensureTransaction(); store.logout(); }
// in java/org/columba/mail/pop3/POP3Store.java
protected void ensureTransaction() throws IOException, POP3Exception, CommandCancelledException { ensureAuthorization(); if (protocol.getState() < POP3Protocol.TRANSACTION) { login(); } }
// in java/org/columba/mail/pop3/POP3Store.java
protected void ensureAuthorization() throws IOException, POP3Exception, CommandCancelledException { if (protocol.getState() < POP3Protocol.AUTHORIZATION) { openConnection(); } }
// in java/org/columba/mail/pop3/POP3Store.java
private void openConnection() throws IOException, POP3Exception, CommandCancelledException { int sslType = popItem.getIntegerWithDefault("ssl_type", IncomingItem.TLS); boolean sslEnabled = popItem.getBoolean("enable_ssl"); // open a port to the server if (sslEnabled && sslType == IncomingItem.IMAPS_POP3S) { try { protocol.openSSLPort(); usingSSL = true; } catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); } } else { protocol.openPort(); } // shall we switch to SSL? if (!usingSSL && sslEnabled && sslType == IncomingItem.TLS) { // if CAPA was not support just give it a try... if (isSupported("STLS") || capas.length == 0) { try { protocol.startTLS(); usingSSL = true; LOG.info("Switched to SSL"); } catch (IOException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); // reopen the port protocol.openPort(); } catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } else { // CAPAs say that SSL is not supported int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/pop3/POP3Store.java
private Map getUidMap() throws CommandCancelledException, IOException, POP3Exception { if (uidMap == null) { if (getMessageCount() != 0) { ensureTransaction(); UidListEntry[] uidList = protocol.uidl(); uidMap = new Hashtable(); for (int i = 0; i < uidList.length; i++) { uidMap.put(uidList[i].getUid(), new Integer(uidList[i] .getIndex())); } } else { uidMap = new Hashtable(0); } } return uidMap; }
// in java/org/columba/mail/smtp/SMTPServer.java
protected void pop3Authentification() throws IOException, POP3Exception, CommandCancelledException { POP3Store.doPOPbeforeSMTP(accountItem.getPopItem()); }
7
            
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { // CAPA not supported capas = new String[] {}; }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e1) { // some server have a bogus apop // try user/pass to check if the password is // correct protocol.userPass(popItem.get("user"), password); LOG .warning(popItem.get("host") + " : bogus APOP implementation -> falling back to USER/PASS."); // user/pass worked -> this is indeed // a bogus server. }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { JOptionPane.showMessageDialog(null, e.getMessage(), "Authorization failed!", JOptionPane.ERROR_MESSAGE); popItem.setString("password", ""); }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { // APOP not supported }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (POP3Exception e) { throw new SMTPException(e); }
3
            
// in java/org/columba/mail/pop3/POP3Server.java
catch (POP3Exception e) { if ((e instanceof MessageNotOnServerException) || (e.getResponse() != null && e.getResponse().isERR())) { // Message already deleted from server getHeaderList().remove(uid); setCacheChanged(true); } else throw e; }
// in java/org/columba/mail/pop3/POP3Store.java
catch (POP3Exception e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (POP3Exception e) { throw new SMTPException(e); }
0
unknown (Lib) ParseException 0 0 0 3
            
// in java/org/columba/mail/gui/config/filter/plugins/DateCriteriaRow.java
catch (ParseException e) { // Fall back to today date = new Date(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (java.text.ParseException ex) { // should never happen ex.printStackTrace(); }
// in java/org/columba/mail/filter/plugins/DateFilter.java
catch (java.text.ParseException ex) { // should never happen LOG.severe("Date unparsable: "+pattern); searchPattern = new Date(); }
0 0
unknown (Lib) ParserException 0 0 3
            
// in java/org/columba/mail/pop3/POP3Server.java
public ColumbaMessage getMessage(Object uid, IWorkerStatusController worker) throws IOException, POP3Exception, CommandCancelledException, ParserException { InputStream messageStream = new ProgressObservedInputStream(getStore() .fetchMessage(store.getIndex(uid)), worker, true); // Store the complete stream in a source so that we can parse it Source source = TempSourceFactory.createTempSource(messageStream, -1); // pipe through preprocessing filter // if (popItem.getBoolean("enable_pop3preprocessingfilter", false)) // rawString = modifyMessage(rawString); // UPDATE! @author fdietz // was: // Activate PreProcessor again with Source instead of String // new goal: // completely remove preprocessor -> we never change the message source! ColumbaMessage m; try { Header header = HeaderParser.parse(source); m = new ColumbaMessage(header); ColumbaHeader h = (ColumbaHeader) m.getHeader(); m.setSource(source); h.getAttributes().put("columba.pop3uid", uid); // message size should be at least 1 KB int size = Math.max(source.length() / 1024, 1); h.getAttributes().put("columba.size", new Integer(size)); // set the attachment flag h.getAttributes().put("columba.attachment", h.hasAttachments()); h.getAttributes().put("columba.fetchstate", Boolean.TRUE); h.getAttributes().put("columba.accountuid", new Integer(accountItem.getInteger("uid"))); getHeaderList().add(h, uid); } catch (ParserException e) { LOG .severe("Skipped message: Error parsing message. Message source:\n " + source); return null; } // set headercache dirty flag setCacheChanged(true); return m; }
// in java/org/columba/mail/parser/MailUrlParser.java
public static Map parse(String in) throws ParserException { Hashtable result = new Hashtable(); StringBuffer temp = new StringBuffer(); Matcher matcher = mailtoPattern.matcher(in); if( matcher.matches() ) { if( matcher.group(1) != null ) { temp.append("To: "); temp.append(decodeHTML(matcher.group(1))); temp.append("\r\n"); } if( matcher.group(2) != null) { matcher = headerPattern.matcher(matcher.group(2)); while( matcher.find()) { String key = matcher.group(1).toLowerCase(); if( key.equals("to") || key.equals("cc") || key.equals("bcc") || key.equals("subject")) { temp.append(matcher.group(1)); temp.append(": "); temp.append(decodeHTML(matcher.group(2))); temp.append("\r\n"); } else if( key.equals("body")) { result.put("body", decodeHTML(matcher.group(2))); } else { LOG.warning("Unsafe header in mailto-URL: " + matcher.group()); } } } BasicHeader header = new BasicHeader( HeaderParser.parse(new CharSequenceSource(temp))); // Convert to MessageOptions Address[] addresses = header.getTo(); List addressList = new ArrayList(); for(int i=0; i<addresses.length; i++ ) { addressList.add(addresses[i].toString()); } result.put("to", addressList.toArray(new String[0])); addresses = header.getCc(); if( addresses.length > 0) { addressList.clear(); for(int i=0; i<addresses.length; i++ ) { addressList.add(addresses[i].toString()); } result.put("cc", addressList.toArray(new String[0])); } addresses = header.getBcc(); if( addresses.length > 0) { addressList.clear(); for(int i=0; i<addresses.length; i++ ) { addressList.add(addresses[i].toString()); } result.put("bcc", addressList.toArray(new String[0])); } if( header.getSubject() != null) { result.put("subject", header.getSubject()); } } return result; }
17
            
// in java/org/columba/mail/gui/message/filter/PGPMessageFilter.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/message/action/AddToAddressbookAction.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/config/account/IdentityPanel.java
catch (ParserException pe) {}
// in java/org/columba/mail/gui/config/account/IdentityPanel.java
catch (ParserException pe) { JOptionPane.showMessageDialog(this, MailResourceLoader.getString("dialog", "account", "invalidaddress")); return false; }
// in java/org/columba/mail/gui/config/accountwizard/IdentityStep.java
catch (ParserException pe) { return null; }
// in java/org/columba/mail/gui/composer/command/SaveMessageCommand.java
catch (ParserException e) { addresses[i] = addresses[i - 1]; }
// in java/org/columba/mail/main/MailMain.java
catch (ParserException e1) { LOG.warning(e1.getLocalizedMessage()); }
// in java/org/columba/mail/pop3/POP3Server.java
catch (ParserException e) { LOG .severe("Skipped message: Error parsing message. Message source:\n " + source); return null; }
// in java/org/columba/mail/config/AccountItem.java
catch (ParserException ex) { ex.printStackTrace(); }
// in java/org/columba/mail/parser/PassiveHeaderParserInputStream.java
catch (ParserException e) { //TODO (@author tstich): do something }
// in java/org/columba/mail/folder/headercache/DefaultHeaderBinding.java
catch (ParserException e) { }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
catch (ParserException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (ParserException e1) { throw new SMTPException(e1); }
// in java/org/columba/mail/composer/MessageComposer.java
catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/composer/MessageComposer.java
catch (ParserException e) { if (Logging.DEBUG) e.printStackTrace(); }
2
            
// in java/org/columba/mail/folder/AbstractLocalFolder.java
catch (ParserException e1) { LOG.fine(e1.getSource().toString()); throw e1; }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (ParserException e1) { throw new SMTPException(e1); }
0
unknown (Lib) PluginException 0 0 0 8
            
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginException e1) { LOG.severe("Error while loading plugin: " + e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/config/mailboximport/PluginStep.java
catch (PluginException e) { if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/gui/config/mailboximport/MailboxImporter.java
catch (PluginException e1) { if (Logging.DEBUG) e1.printStackTrace(); return; }
// in java/org/columba/mail/gui/action/ReceiveSendAction.java
catch (PluginException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (PluginException e1) { e1.printStackTrace(); }
0 0
unknown (Lib) PluginHandlerNotFoundException 0 0 1 18
            
// in java/org/columba/mail/gui/message/command/OpenAttachmentCommand.java
catch (PluginHandlerNotFoundException e2) { LOG.severe("Error while loading plugin: " + e2.getMessage()); if (Logging.DEBUG) e2.printStackTrace(); }
// in java/org/columba/mail/gui/message/viewer/TextViewer.java
catch (PluginHandlerNotFoundException e) { LOG.severe("Error while loading viewer plugin: " + e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/gui/tree/FolderTreeModel.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/CriteriaList.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/plugins/DefaultActionRow.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/ActionList.java
catch (PluginHandlerNotFoundException ex) { if (Logging.DEBUG) { ex.printStackTrace(); } }
// in java/org/columba/mail/gui/config/filter/util/CriteriaComboBoxRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/filter/util/ActionComboBoxRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/mailboximport/ImportWizardLauncher.java
catch (PluginHandlerNotFoundException ex) { throw new RuntimeException(ex); }
// in java/org/columba/mail/gui/config/mailboximport/PluginListCellRenderer.java
catch (PluginHandlerNotFoundException ex) { ErrorDialog.createDialog(ex.getMessage(), ex); }
// in java/org/columba/mail/gui/config/general/MailOptionsDialog.java
catch (PluginHandlerNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/action/ReceiveSendAction.java
catch (PluginHandlerNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/html/HtmlToolbar.java
catch (PluginHandlerNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/table/TableView.java
catch (PluginHandlerNotFoundException ex) { ex.printStackTrace(); }
// in java/org/columba/mail/pgp/JSCFController.java
catch (PluginHandlerNotFoundException e) { LOG.fine("PluginHandler not found" + e); if (Logging.DEBUG) { e.printStackTrace(); } }
// in java/org/columba/mail/spam/SpamController.java
catch (PluginHandlerNotFoundException e) { LOG.severe(e.getMessage()); if (Logging.DEBUG) e.printStackTrace(); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (PluginHandlerNotFoundException phnfe) { throw new RuntimeException(phnfe); }
// in java/org/columba/mail/folderoptions/FolderOptionsController.java
catch (PluginHandlerNotFoundException e) { // TODO (@author fdietz): show error dialoghere e.printStackTrace(); }
2
            
// in java/org/columba/mail/gui/config/mailboximport/ImportWizardLauncher.java
catch (PluginHandlerNotFoundException ex) { throw new RuntimeException(ex); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (PluginHandlerNotFoundException phnfe) { throw new RuntimeException(phnfe); }
2
unknown (Lib) PluginLoadingFailedException 0 0 0 3
            
// in java/org/columba/mail/gui/tagging/MailTagList.java
catch (PluginLoadingFailedException e) { e.printStackTrace(); }
// in java/org/columba/mail/main/MailMain.java
catch (PluginLoadingFailedException e) { LOG.severe(e.getLocalizedMessage()); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (PluginLoadingFailedException e) { e.printStackTrace(); }
0 0
unknown (Domain) ProgramNotFoundException
public class ProgramNotFoundException extends JSCFException
{
  /**
   * Creates a new ProgramNotFoundException and give it the reason in the arg0
   * variable.
   * 
   * @param arg0
   *          The reason as a string.
   */
  public ProgramNotFoundException (String arg0)
  {
    super(arg0);
  }

}
1
            
// in java/org/columba/mail/pgp/JSCFController.java
public JSCFConnection getConnection(String userID) throws JSCFException { SecurityItem pgpItem = MailConfig.getInstance().getAccountList() .getDefaultAccount().getPGPItem(); JSCFConnection con = (JSCFConnection) connectionMap.get(userID); if (con == null) { LOG.fine("no connection for userID (" + userID + ") found. Creating a new Connection."); // let us hard coding the gpg for each connection. Later we should // support also other variants (like smime) con = JSCFDriverManager.getConnection("jscf:gpg:"); // getting the path to gpg IExtensionHandler handler = null; String path = null; try { LOG.fine("try to get the handler"); handler = PluginManager .getInstance().getExtensionHandler( "org.columba.core.externaltools"); LOG.fine("recived Handler ... getting path from it"); path = ExternalToolsManager.getInstance() .getLocationOfExternalTool("gpg").getPath(); LOG.fine("setting path: " + path); } catch (PluginHandlerNotFoundException e) { LOG.fine("PluginHandler not found" + e); if (Logging.DEBUG) { e.printStackTrace(); } } /* * if (path == null) { throw new ProgramNotFoundException("invalid * path"); } */ Properties props = con.getProperties(); if (path == null) { throw new ProgramNotFoundException("invalid path"); } props.put("PATH", path); if (handler != null) { IExtension extension = handler.getExtension("gpg"); LOG.fine("gpg userId: " + extension.getMetadata().getId()); } LOG.info("gpg path: " + props.get("PATH")); props.put("USERID", pgpItem.get("id")); LOG.info("current gpg userID: " + props.get("USERID")); con.setProperties(props); connectionMap.put(userID, con); } return con; }
0 0 0 0 0
runtime (Lib) RuntimeException 11
            
// in java/org/columba/mail/gui/config/mailboximport/ImportWizardLauncher.java
public void launchWizard() { final IExtensionHandler pluginHandler; try { pluginHandler = PluginManager.getInstance().getExtensionHandler( "org.columba.mail.import"); } catch (PluginHandlerNotFoundException ex) { throw new RuntimeException(ex); } DataModel data = new DataModel(); data.registerDataLookup("Plugin.handler", new DataLookup() { public Object lookupData() { return pluginHandler; } }); WizardModel model = new DefaultWizardModel(new Step[] { new PluginStep(data), new LocationStep(mediator, data) }); model.addWizardModelListener(new MailboxImporter(data)); Wizard wizard = new Wizard(model, MailResourceLoader.getString("dialog", "mailboximport", "title"), ImageLoader.getIcon(IconKeys.PREFERENCES)); wizard.setStepListRenderer(null); CSH.setHelpIDString(wizard, "organising_and_managing_your_email_1"); JavaHelpSupport.enableHelp(wizard, HelpManager.getInstance().getHelpBroker()); wizard.pack(); wizard.setLocationRelativeTo(null); wizard.setVisible(true); }
// in java/org/columba/mail/gui/config/accountwizard/AccountCreator.java
public void wizardFinished(WizardModelEvent e) { String type = (String) data.getData("IncomingServer.type"); AccountItem account = MailConfig.getInstance().getAccountList() .addEmptyAccount(type.toLowerCase()); if (account == null) { // this should not happen, the templates seem to be missing throw new RuntimeException("Account templates missing!"); } account.setName((String) data.getData("Identity.accountName")); account.getIdentity().setAddress( (Address) data.getData("Identity.address")); IMailFolder folder = null; if (type.equals("POP3")) { PopItem pop = account.getPopItem(); pop.setString("host", (String) data.getData("IncomingServer.host")); pop .setString("user", (String) data .getData("IncomingServer.login")); POP3ServerCollection.getInstance().add(account); folder = FolderTreeModel.getInstance().getFolder("101"); } else { ImapItem imap = account.getImapItem(); imap .setString("host", (String) data .getData("IncomingServer.host")); imap.setString("user", (String) data .getData("IncomingServer.login")); // TODO (@author fdietz): All this code for creating a new // IMAPRootFolder should // be moved to a FolderFactory // -> this way "path" would be handled in the factory, too // parent directory for mail folders // for example: ".columba/mail/" // String path = // MailConfig.getInstance().getConfigDirectory().getPath(); try { // IMAPRootFolder parentFolder = FolderFactory.getInstance() // .createIMAPRootFolder(account); // IMailFolder inbox = FolderFactory.getInstance() // .createIMAPFolder(parentFolder, "INBOX"); IMailFolder inbox = FolderFactory.getInstance().createIMAPRootFolder(account); folder = inbox; } catch (FolderCreationException e1) { e1.printStackTrace(); } // try { // IMAPRootFolder parentFolder = new IMAPRootFolder(account, path); // ((IMailFolder) // FolderTreeModel.getInstance().getRoot()).add(parentFolder); // ((IMailFolder) FolderTreeModel.getInstance().getRoot()) // .getConfiguration().getRoot().addElement( // parentFolder.getConfiguration().getRoot()); // // IMailFolder inbox = new IMAPFolder("INBOX", "IMAPFolder", // path); // parentFolder.add(inbox); // parentFolder.getConfiguration().getRoot().addElement( // inbox.getConfiguration().getRoot()); // folder = inbox; // } catch (Exception e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } } // add welcome message to new account inbox try { Address adr = (Address) data.getData("Identity.address"); WelcomeMessage.addWelcomeMessage(folder, adr.toString(), new Integer(account.getUid()).toString()); } catch (Exception e1) { e1.printStackTrace(); } // add account to mail-checking manager MailCheckingManager.getInstance().add(account); // notify all observers MailCheckingManager.getInstance().update(); account.getSmtpItem().setString("host", (String) data.getData("OutgoingServer.host")); // generally we can just use the same login for both servers account.getSmtpItem().setString("user", (String) data.getData("IncomingServer.login")); }
// in java/org/columba/mail/search/MailSearchProvider.java
public List<ISearchResult> query(String searchTerm, String searchCriteriaTechnicalName, boolean searchInside, int startIndex, int resultCount) { LOG.info("searchTerm=" + searchTerm); LOG.info("criteriaName=" + searchCriteriaTechnicalName); LOG.info("searchInside=" + searchInside); List<ISearchResult> result = new Vector<ISearchResult>(); indizes = new Vector<SearchIndex>(); // create search criteria FilterCriteria criteria = createFilterCriteria(searchTerm, searchCriteriaTechnicalName); // remember request id for "search in results" String searchRequestId = searchCriteriaTechnicalName; // remove memorized search folders if (!searchInside) { lastSearchFolder = null; //searchFolders.remove(searchRequestId); } // return empty result, in case the criteria doesn't match the search // term if (criteria == null) return result; try { // Iterator<String> it3 = searchFolders.keySet().iterator(); // while (it3.hasNext()) { // String key = it3.next(); // VirtualFolder f = searchFolders.get(key); // LOG.info("current cache id=" + key + ":" + f.getId()); // } VirtualFolder folder = null; // create virtual folder for criteria if (searchInside) { if (lastSearchFolder != null) { LOG.info("reuse existing virtual folder"); // get first one VirtualFolder vFolder = lastSearchFolder; // create new search folder, but re-use old search folder folder = SearchFolderFactory.prepareSearchFolder(criteria, vFolder); } else { totalResultCount = 0; return result; } } else { LOG.info("create new virtual folder"); IMailFolder rootFolder = (IMailFolder) FolderTreeModel .getInstance().getRoot(); folder = SearchFolderFactory.createSearchFolder(criteria, rootFolder); } // do the search IHeaderList headerList = folder.getHeaderList(); Object[] uids = headerList.getUids(); LOG.info("result count=" + uids.length); for (int i = 0; i < uids.length; i++) { SearchIndex idx = new SearchIndex(folder, uids[i]); // System.out.println("--> idx.folder="+idx.folder.getId()); // System.out.println("--> idx.message="+idx.messageId); indizes.add(idx); } // retrieve the actual search result data List<ISearchResult> l = retrieveResultData(indizes, startIndex, resultCount); result.addAll(l); // sort all the results Collections.sort(result, new MyComparator()); // remember search folder for "show total results" action searchFolders.put(searchRequestId, folder); lastSearchFolder = folder; LOG.info("cache search folder=" + searchRequestId); } catch (Exception e) { throw new RuntimeException(e); } // memorize total result count totalResultCount = indizes.size(); singleCriteriaSearch = true; return result; }
// in java/org/columba/mail/search/MailSearchProvider.java
public List<ISearchResult> query(List<ISearchRequest> list, boolean matchAll, boolean searchInside, int startIndex, int resultCount) { List<ISearchResult> result = new Vector<ISearchResult>(); indizes = new Vector<SearchIndex>(); // remove all memorized search folders if (!searchInside) { lastSearchFolder = null; } // create search criteria FilterRule rule = new FilterRule(); if (matchAll) rule.setCondition(FilterRule.MATCH_ALL); else rule.setCondition(FilterRule.MATCH_ANY); Iterator<ISearchRequest> it = list.iterator(); StringBuffer buf = new StringBuffer(); while (it.hasNext()) { ISearchRequest r = it.next(); String searchCriteriaTechnicalName = r.getCriteria(); buf.append(searchCriteriaTechnicalName); String searchTerm = r.getSearchTerm(); FilterCriteria criteria = createFilterCriteria(searchTerm, searchCriteriaTechnicalName); rule.add(criteria); } // remember request id for "search in results" String searchRequestId = buf.toString(); try { VirtualFolder folder = null; // create virtual folder for each criteria IMailFolder rootFolder = (IMailFolder) FolderTreeModel .getInstance().getRoot(); if (searchInside && (lastSearchFolder != null) ) { folder = lastSearchFolder; SearchFolderFactory.prepareSearchFolder(rule, folder); } else { folder = SearchFolderFactory.createSearchFolder(rule, rootFolder); } // do the search IHeaderList headerList = folder.getHeaderList(); Object[] uids = headerList.getUids(); for (int i = 0; i < uids.length; i++) { SearchIndex idx = new SearchIndex(folder, uids[i]); // System.out.println("--> idx.folder="+idx.folder.getId()); // System.out.println("--> idx.message="+idx.messageId); indizes.add(idx); } // retrieve the actual search result data List<ISearchResult> l = retrieveResultData(indizes, startIndex, resultCount); result.addAll(l); // sort all the results Collections.sort(result, new MyComparator()); // remember search folder for "show total results" action searchFolders.put(searchRequestId, folder); lastSearchFolder = folder; } catch (Exception e) { throw new RuntimeException(e); } // memorize total result count totalResultCount = indizes.size(); singleCriteriaSearch = false; return result; }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
public ICloseableIterator headerIterator() { try { openDatabase(); } catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); } return new BerkeleyDBIterator( (StoredIterator)new StoredValueSet(db,headerBinding, false).iterator()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
public ICloseableIterator keyIterator() { try { openDatabase(); } catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); } return new BerkeleyDBIterator( (StoredIterator)new StoredKeySet(db, integerBinding, false).iterator()); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
public void update(Object uid, IColumbaHeader header) { try { openDatabase(); } catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); } DatabaseEntry key = getDatabaseEntry(uid); try { db.delete(null, key); db.put(null, key, getDatabaseEntry(header)); } catch (DatabaseException e) { LOG.severe(e.getMessage()); fireHeaderListCorrupted(); } }
// in java/org/columba/mail/folder/FolderFactory.java
public static FolderFactory getInstance() { if (instance == null) { try { instance = new FolderFactory(); } catch (PluginHandlerNotFoundException phnfe) { throw new RuntimeException(phnfe); } } return instance; }
// in java/org/columba/mail/facade/DialogFacade.java
public void openMessage(URI location) { // example: "columba://org.columba.mail/<folder-id>/<message-id>" String s = location.toString(); // TODO: @author fdietz replace with regular expression int index = s.lastIndexOf('/'); String messageId = s.substring(index + 1, s.length()); String folderId = s.substring(s.lastIndexOf('/', index - 1) + 1, index); IContainer[] container = FrameManager.getInstance().getOpenFrames(); if (container == null || container.length == 0) throw new RuntimeException("No frames available"); IFrameMediator mailFrameMediator = null; for (int i = 0; i < container.length; i++) { IFrameMediator mediator = container[i].getFrameMediator(); if (mediator.getId().equals("ThreePaneMail")) { // found mail component frame mailFrameMediator = mediator; } } if (mailFrameMediator == null) throw new RuntimeException("No mail frame mediator found"); // type-cast here is safe MessageFrameController c = new MessageFrameController( (ThreePaneMailFrameController) mailFrameMediator); new DefaultContainer(c); IMailbox folder = (IMailbox) FolderTreeModel.getInstance().getFolder( folderId); IMailFolderCommandReference r = new MailFolderCommandReference(folder, new Object[] { Integer.parseInt(messageId) }); c.setTreeSelection(r); c.setTableSelection(r); CommandProcessor.getInstance().addOp(new ViewMessageCommand(c, r)); }
8
            
// in java/org/columba/mail/gui/config/mailboximport/ImportWizardLauncher.java
catch (PluginHandlerNotFoundException ex) { throw new RuntimeException(ex); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/search/MailSearchProvider.java
catch (Exception e) { throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/headercache/BerkeleyDBHeaderList.java
catch (DatabaseException e) { LOG.severe(e.getMessage()); throw new RuntimeException(e); }
// in java/org/columba/mail/folder/mbox/MboxDataStorage.java
catch (IOException e) { LOG.severe(e.getLocalizedMessage()); throw new RuntimeException("Mailbox is corrupted!"); }
// in java/org/columba/mail/folder/FolderFactory.java
catch (PluginHandlerNotFoundException phnfe) { throw new RuntimeException(phnfe); }
0 3
            
// in java/org/columba/mail/gui/tree/TreeView.java
catch (RuntimeException re) { e.dropComplete(false); }
// in java/org/columba/mail/main/MailMain.java
catch (RuntimeException e) { e.printStackTrace(); }
// in java/org/columba/mail/parser/text/HtmlParser.java
catch (RuntimeException e) { }
0 0
unknown (Lib) SMTPException 2
            
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureAuthenticated() throws IOException, SMTPException, CommandCancelledException { String username; char[] password = new char[0]; boolean savePassword; // Init Values // user's email address fromAddress = identity.getAddress().getMailAddress(); usingSSL = smtpItem.getBoolean("enable_ssl"); int authMethod = getLoginMethod(); boolean authenticated = (authMethod == AuthenticationManager.NONE); if (authMethod == AuthenticationManager.POP_BEFORE_SMTP) { // no esmtp - use POP3-before-SMTP instead try { pop3Authentification(); } catch (POP3Exception e) { throw new SMTPException(e); } authenticated = true; } ensureConnected(); if (!authenticated) { username = smtpItem.get("user"); password = Blowfish.decrypt(smtpItem.getRoot().getAttribute("password", "")); savePassword = smtpItem.getBoolean("save_password"); if (username.length() == 0) { // there seems to be no username set in the smtp-options // -> use username from pop3 or imap options if (accountItem.isPopAccount()) { PopItem pop3Item = accountItem.getPopItem(); username = pop3Item.get("user"); } else { ImapItem imapItem = accountItem.getImapItem(); username = imapItem.get("user"); } } PasswordDialog passDialog = new PasswordDialog(); // ask password from user if (password.length == 0) { passDialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String(password), savePassword); if (passDialog.success()) { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } else { throw new CommandCancelledException(); } } // try to authenticate while (!authenticated) { try { try { protocol.auth(AuthenticationManager .getSaslName(authMethod), username, password); authenticated = true; } catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } } } catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } } } // authentication was successful // -> save name/password smtpItem.setString("user", username); smtpItem.setBoolean("save_password", savePassword); if (savePassword) { smtpItem.setString("password", Blowfish.encrypt(password)); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
public void sendMessage(SendableMessage message, IWorkerStatusController workerStatusController) throws SMTPException, IOException, CommandCancelledException { ensureAuthenticated(); // send from address and recipient list to SMTP server // ->all addresses have to be normalized protocol.mail(identity.getAddress()); Iterator recipients = message.getRecipients().iterator(); while (recipients.hasNext()) { try { protocol.rcpt(Address.parse((String) recipients.next())); } catch (ParserException e1) { throw new SMTPException(e1); } } // now send message source protocol.data(new ProgressObservedInputStream( message.getSourceStream(), workerStatusController)); }
2
            
// in java/org/columba/mail/smtp/SMTPServer.java
catch (POP3Exception e) { throw new SMTPException(e); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (ParserException e1) { throw new SMTPException(e1); }
7
            
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureConnected() throws IOException, SMTPException, CommandCancelledException { if (protocol.getState() == SMTPProtocol.NOT_CONNECTED) { // Start login procedure protocol.openPort(); initialize(); doSSL(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void ensureAuthenticated() throws IOException, SMTPException, CommandCancelledException { String username; char[] password = new char[0]; boolean savePassword; // Init Values // user's email address fromAddress = identity.getAddress().getMailAddress(); usingSSL = smtpItem.getBoolean("enable_ssl"); int authMethod = getLoginMethod(); boolean authenticated = (authMethod == AuthenticationManager.NONE); if (authMethod == AuthenticationManager.POP_BEFORE_SMTP) { // no esmtp - use POP3-before-SMTP instead try { pop3Authentification(); } catch (POP3Exception e) { throw new SMTPException(e); } authenticated = true; } ensureConnected(); if (!authenticated) { username = smtpItem.get("user"); password = Blowfish.decrypt(smtpItem.getRoot().getAttribute("password", "")); savePassword = smtpItem.getBoolean("save_password"); if (username.length() == 0) { // there seems to be no username set in the smtp-options // -> use username from pop3 or imap options if (accountItem.isPopAccount()) { PopItem pop3Item = accountItem.getPopItem(); username = pop3Item.get("user"); } else { ImapItem imapItem = accountItem.getImapItem(); username = imapItem.get("user"); } } PasswordDialog passDialog = new PasswordDialog(); // ask password from user if (password.length == 0) { passDialog.showDialog(MessageFormat.format(MailResourceLoader .getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String(password), savePassword); if (passDialog.success()) { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } else { throw new CommandCancelledException(); } } // try to authenticate while (!authenticated) { try { try { protocol.auth(AuthenticationManager .getSaslName(authMethod), username, password); authenticated = true; } catch (AuthenticationException e) { // If the cause is a SMTPExcpetion then only password // wrong // else bogus authentication mechanism if (e.getCause() instanceof SMTPException) { int errorCode = ((SMTPException) e.getCause()).getCode(); // Authentication is not supported if( errorCode == 504 ) { //TODO: Add dialog to inform user that the smtp server // does not support authentication JOptionPane .showMessageDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( MailResourceLoader .getString( "dialog", "error", "authentication_not_supported")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.INFORMATION_MESSAGE); //Turn off authentication for the future smtpItem.setString("login_method", Integer .toString(AuthenticationManager.NONE)); return; } } else { throw (SMTPException) e.getCause(); } // Some error in the client/server communication // --> fall back to default login process int result = JOptionPane .showConfirmDialog( FrameManager.getInstance() .getActiveFrame(), new MultiLineLabel( e.getMessage() + "\n" + MailResourceLoader .getString( "dialog", "error", "authentication_fallback_to_default")), MailResourceLoader.getString("dialog", "error", "authentication_process_error"), JOptionPane.OK_CANCEL_OPTION); if (result == JOptionPane.OK_OPTION) { authMethod = AuthenticationManager.SASL_PLAIN; smtpItem.setString("login_method", Integer .toString(authMethod)); } else { throw new CommandCancelledException(); } } } catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } } } // authentication was successful // -> save name/password smtpItem.setString("user", username); smtpItem.setBoolean("save_password", savePassword); if (savePassword) { smtpItem.setString("password", Blowfish.encrypt(password)); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
private void doSSL() throws CommandCancelledException, IOException, SMTPException { if (smtpItem.getBoolean("enable_ssl")) { if (isSupported("STARTTLS")) { try { protocol.startTLS(); usingSSL = true; } catch (Exception e) { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader .getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(FrameManager.getInstance() .getActiveFrame(), MailResourceLoader.getString("dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); protocol.openPort(); initialize(); } } else { Object[] options = new String[] { MailResourceLoader.getString("", "global", "ok") .replaceAll("&", ""), MailResourceLoader.getString("", "global", "cancel") .replaceAll("&", "") }; int result = JOptionPane.showOptionDialog(null, MailResourceLoader.getString("dialog", "error", "ssl_not_supported") + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off"), "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future smtpItem.setBoolean("enable_ssl", false); } } }
// in java/org/columba/mail/smtp/SMTPServer.java
public List checkSupportedAuthenticationMethods() throws IOException, SMTPException, CommandCancelledException { ensureConnected(); List supportedMechanisms = new ArrayList(); for (int i = 0; i < capas.length; i++) { if (capas[i].startsWith("AUTH")) { List authMechanisms = AuthenticationFactory.getInstance() .getSupportedMechanisms(capas[i]); Iterator it = authMechanisms.iterator(); while (it.hasNext()) { Integer saslCode = new Integer(AuthenticationManager .getSaslCode((String) it.next())); if (!saslCode.equals(-1)) supportedMechanisms.add(saslCode); } break; } } if( supportedMechanisms.size() == 0) { // Add a default PLAIN login as fallback supportedMechanisms.add(new Integer(AuthenticationManager.SASL_PLAIN)); } return supportedMechanisms; }
// in java/org/columba/mail/smtp/SMTPServer.java
private void initialize() throws IOException, SMTPException { try { capas = protocol.ehlo(InetAddress.getLocalHost()); } catch (SMTPException e1) { // EHLO not supported -> AUTH not supported if( protocol.getState() < SMTPProtocol.PLAIN ) { protocol.openPort(); } protocol.helo(InetAddress.getLocalHost()); capas = new String[] {}; } }
// in java/org/columba/mail/smtp/SMTPServer.java
private int getLoginMethod() throws IOException, SMTPException, CommandCancelledException { String authType = accountItem.getSmtpItem().get("login_method"); int method = 0; try { method = Integer.parseInt(authType); } catch (NumberFormatException e) { //Fallback to Securest Login method } if (method == 0) { List supported = checkSupportedAuthenticationMethods(); if (accountItem.isPopAccount()) { supported .add(new Integer(AuthenticationManager.POP_BEFORE_SMTP)); } if (supported.size() == 0) { // No Authentication available return AuthenticationManager.NONE; } if (usingSSL) { // NOTE if SSL is possible we just need the plain login // since SSL does the encryption for us. method = ((Integer) supported.get(0)).intValue(); } else { Collections.sort(supported, new AuthenticationSecurityComparator()); method = ((Integer) supported.get(supported.size() - 1)) .intValue(); } } return method; }
// in java/org/columba/mail/smtp/SMTPServer.java
public void sendMessage(SendableMessage message, IWorkerStatusController workerStatusController) throws SMTPException, IOException, CommandCancelledException { ensureAuthenticated(); // send from address and recipient list to SMTP server // ->all addresses have to be normalized protocol.mail(identity.getAddress()); Iterator recipients = message.getRecipients().iterator(); while (recipients.hasNext()) { try { protocol.rcpt(Address.parse((String) recipients.next())); } catch (ParserException e1) { throw new SMTPException(e1); } } // now send message source protocol.data(new ProgressObservedInputStream( message.getSourceStream(), workerStatusController)); }
3
            
// in java/org/columba/mail/gui/config/account/OutgoingServerPanel.java
catch (SMTPException e1) { LOG.severe("Server does not support the CAPA command"); }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e1) { // EHLO not supported -> AUTH not supported if( protocol.getState() < SMTPProtocol.PLAIN ) { protocol.openPort(); } protocol.helo(InetAddress.getLocalHost()); capas = new String[] {}; }
1
            
// in java/org/columba/mail/smtp/SMTPServer.java
catch (SMTPException e) { passDialog.showDialog(MessageFormat.format( MailResourceLoader.getString("dialog", "password", "enter_password"), new Object[] { username, smtpItem.get("host") }), new String( password), savePassword); if (!passDialog.success()) { throw new CommandCancelledException(); } else { password = passDialog.getPassword(); savePassword = passDialog.getSave(); } }
0
unknown (Lib) SSLException 0 0 0 2
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
2
            
// in java/org/columba/mail/pop3/POP3Store.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == JOptionPane.CANCEL_OPTION) { throw new CommandCancelledException(); } // turn off SSL for the future popItem.setBoolean("enable_ssl", false); popItem.setInteger("port", POP3Protocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
// in java/org/columba/mail/imap/IMAPServer.java
catch (SSLException e) { int result = showErrorDialog(MailResourceLoader.getString( "dialog", "error", "ssl_handshake_error") + ": " + e.getLocalizedMessage() + "\n" + MailResourceLoader.getString("dialog", "error", "ssl_turn_off")); if (result == 1) { throw new CommandCancelledException(); } // turn off SSL for the future item.setBoolean("enable_ssl", false); item.setInteger("port", IMAPProtocol.DEFAULT_PORT); // reopen the port protocol.openPort(); }
0
unknown (Lib) ServiceNotFoundException 0 0 3
            
// in java/org/columba/mail/connector/ServiceConnector.java
public static IContactFacade getContactFacade() throws ServiceNotFoundException { return (IContactFacade) ServiceFacadeRegistry.getInstance().getService( IContactFacade.class); }
// in java/org/columba/mail/connector/ServiceConnector.java
public static IFolderFacade getFolderFacade() throws ServiceNotFoundException { return (IFolderFacade) ServiceFacadeRegistry.getInstance().getService( IFolderFacade.class); }
// in java/org/columba/mail/connector/ServiceConnector.java
public static IModelFacade getModelFacade() throws ServiceNotFoundException { return (IModelFacade) ServiceFacadeRegistry.getInstance().getService( IModelFacade.class); }
16
            
// in java/org/columba/mail/gui/message/action/AddToAddressbookAction.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return; }
// in java/org/columba/mail/gui/message/viewer/HeaderViewer.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/contact/list/ContactDNDListView.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/search/ResultList.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/search/ResultList.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/HeaderController.java
catch (ServiceNotFoundException e) { }
// in java/org/columba/mail/gui/composer/HeaderController.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/contact/SelectAddressDialog.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/contact/SelectAddressDialog.java
catch (ServiceNotFoundException e1) { e1.printStackTrace(); }
// in java/org/columba/mail/gui/composer/contact/FolderComboBox.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/filter/plugins/AddressbookFilter.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return false; }
// in java/org/columba/mail/parser/ListBuilder.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/parser/ListBuilder.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return; }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
catch (ServiceNotFoundException e) { e.printStackTrace(); return; }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (ServiceNotFoundException e) { e.printStackTrace(); }
0 0
unknown (Lib) SocketException 0 0 0 1
            
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); }
2
            
// in java/org/columba/mail/pop3/command/FetchNewMessagesCommand.java
catch (SocketException e) { if (!worker.cancelled()) throw e; else throw new CommandCancelledException(); }
0
checked (Domain) SpellException
public class SpellException extends Exception {
    /** A wrapped <code>Throwable</code> */
    protected Throwable rootCause;

    /**
 * <p>
 * This will create an <code>Exception</code>.
 * </p>
 */
    public SpellException() {
        super("Error occurred in spell application.");
    }

    /**
 * <p>
 * This will create an <code>Exception</code> with the given message.
 * </p>
 *
 * @param message <code>String</code> message indicating
 *                the problem that occurred.
 */
    public SpellException(String message) {
        super(message);
    }

    /**
 * <p>
 * This will create an <code>Exception</code> with the given message
 *   and wrap another <code>Exception</code>.  This is useful when
 *   the originating <code>Exception</code> should be held on to.
 * </p>
 *
 * @param message <code>String</code> message indicating
 *                the problem that occurred.
 * @param exception <code>Exception</code> that caused this
 *                  to be thrown.
 */
    public SpellException(String message, Throwable rootCause) {
        super(message);
        this.rootCause = rootCause;
    }

    /**
 * <p>
 * This returns the message for the <code>Exception</code>. If
 *   there is a root cause, the message associated with the root
 *   <code>Exception</code> is appended.
 * </p>
 *
 * @return <code>String</code> - message for <code>Exception</code>.
 */
    public String getMessage() {
        if (rootCause != null) {
            return super.getMessage() + ": " + rootCause.getMessage();
        } else {
            return super.getMessage();
        }
    }

    /**
 * <p>
 * This prints the stack trace of the <code>Exception</code>. If
 *   there is a root cause, the stack trace of the root
 *   <code>Exception</code> is printed right after.
 * </p>
 */
    public void printStackTrace() {
        super.printStackTrace();

        if (rootCause != null) {
            System.err.print("Root cause: ");
            rootCause.printStackTrace();
        }
    }

    /**
 * <p>
 * This prints the stack trace of the <code>Exception</code> to the given
 *   PrintStream. If there is a root cause, the stack trace of the root
 *   <code>Exception</code> is printed right after.
 * </p>
 */
    public void printStackTrace(PrintStream s) {
        super.printStackTrace(s);

        if (rootCause != null) {
            s.print("Root cause: ");
            rootCause.printStackTrace(s);
        }
    }

    /**
 * <p>
 * This prints the stack trace of the <code>Exception</code> to the given
 *   PrintWriter. If there is a root cause, the stack trace of the root
 *   <code>Exception</code> is printed right after.
 * </p>
 */
    public void printStackTrace(PrintWriter w) {
        super.printStackTrace(w);

        if (rootCause != null) {
            w.print("Root cause: ");
            rootCause.printStackTrace(w);
        }
    }

    /**
 * <p>
 * This will return the root cause <code>Throwable</code>, or null
 *   if one does not exist.
 * </p>
 *
 * @return <code>Throwable</code> - the wrapped <code>Throwable</code>.
 */
    public Throwable getRootCause() {
        return rootCause;
    }
}
3
            
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
public boolean checkFile(BufferedReader input, BufferedWriter output) throws SpellException { try { String line = input.readLine(); while (line != null) { String checkedLine; if (line.trim().equals("")) { checkedLine = line; } else { List results = _getSpellEngine().checkLine(line); checkedLine = _getSpellValidator().validate(line, results); if (checkedLine == null) { return false; } } output.write(checkedLine); line = input.readLine(); // Force that the last line in buffer does NOT have a newline if (line != null) { output.write('\n'); } } } catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } } return true; }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
public List checkLine(String line) throws SpellException { try { List results = new ArrayList(); final String spellCheckLinePrefix = "^"; _aSpellWriter.write(spellCheckLinePrefix + line); _aSpellWriter.newLine(); _aSpellWriter.flush(); String response = _aSpellReader.readLine(); while ((response != null) && !response.equals("")) { Result result = new Result(response); results.add(result); response = _aSpellReader.readLine(); } return results; } catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); } }
3
            
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot create aspell process."; throw new SpellException(msg, e); }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); }
4
            
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
public boolean checkFile(BufferedReader input, BufferedWriter output) throws SpellException { try { String line = input.readLine(); while (line != null) { String checkedLine; if (line.trim().equals("")) { checkedLine = line; } else { List results = _getSpellEngine().checkLine(line); checkedLine = _getSpellValidator().validate(line, results); if (checkedLine == null) { return false; } } output.write(checkedLine); line = input.readLine(); // Force that the last line in buffer does NOT have a newline if (line != null) { output.write('\n'); } } } catch (Exception e) { stop(); if (e instanceof SpellException) { throw (SpellException) e; } else { throw new SpellException("Error communicating with the aspell subprocess", e); } } return true; }
// in java/org/columba/mail/spellcheck/cswilly/FileSpellChecker.java
private Engine _getSpellEngine() throws SpellException { if (_spellEngine == null) { String aSpellCommandLine = _aspellExeFilename + " pipe"; _spellEngine = new AspellEngine(aSpellCommandLine); } return _spellEngine; }
// in java/org/columba/mail/spellcheck/cswilly/AspellEngine.java
public List checkLine(String line) throws SpellException { try { List results = new ArrayList(); final String spellCheckLinePrefix = "^"; _aSpellWriter.write(spellCheckLinePrefix + line); _aSpellWriter.newLine(); _aSpellWriter.flush(); String response = _aSpellReader.readLine(); while ((response != null) && !response.equals("")) { Result result = new Result(response); results.add(result); response = _aSpellReader.readLine(); } return results; } catch (IOException e) { String msg = "Cannot access aspell process."; throw new SpellException(msg, e); } }
1
            
// in java/org/columba/mail/spellcheck/ASpellInterface.java
catch (SpellException e) { String msg = "Cannot check selection.\nError (Aspell) is: " + e.getMessage(); LOG.info(msg); checkedBuffer = null; }
0 0
unknown (Lib) StoreException 0 0 0 5
            
// in java/org/columba/mail/gui/message/action/AddToAddressbookAction.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/gui/composer/HeaderController.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddSenderToAddressbookCommand.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/AddAllSendersToAddressbookCommand.java
catch (StoreException e) { e.printStackTrace(); }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (StoreException e) { e.printStackTrace(); }
0 0
unknown (Lib) URISyntaxException 0 0 0 3
            
// in java/org/columba/mail/gui/composer/ComposerModel.java
catch (URISyntaxException e) { // if this is no URI addFileAttachment(new File(s)); }
// in java/org/columba/mail/search/SearchResultBuilder.java
catch (URISyntaxException e) { e.printStackTrace(); }
// in java/org/columba/mail/folder/command/TagMessageCommand.java
catch (URISyntaxException e) { e.printStackTrace(); }
0 0
unknown (Lib) UnsupportedCharsetException 0 0 0 9
            
// in java/org/columba/mail/gui/message/viewer/MessageParser.java
catch (UnsupportedCharsetException e) { charsetName = System.getProperty("file.encoding"); charset = Charset.forName(charsetName); }
// in java/org/columba/mail/gui/charset/CharacterEncodingSubMenu.java
catch (UnsupportedCharsetException e) { if (Logging.DEBUG) e.printStackTrace(); result[i] = null; }
// in java/org/columba/mail/gui/composer/ComposerController.java
catch (UnsupportedCharsetException ex) { // ignore this }
// in java/org/columba/mail/gui/composer/command/RedirectCommand.java
catch( UnsupportedCharsetException e ) { // Stick with the default charset }
// in java/org/columba/mail/gui/composer/command/OpenMessageWithComposerCommand.java
catch( UnsupportedCharsetException e ) { // Stick with the default charset }
// in java/org/columba/mail/gui/composer/command/ReplyCommand.java
catch( UnsupportedCharsetException e ) { // Stick with the default charset }
// in java/org/columba/mail/gui/composer/command/ForwardInlineCommand.java
catch( UnsupportedCharsetException e ) { // Stick with the default charset }
// in java/org/columba/mail/folder/AbstractMessageFolder.java
catch (UnsupportedCharsetException e) { charset = Charset.forName(System.getProperty("file.encoding")); }
// in java/org/columba/mail/composer/MessageBuilderHelper.java
catch (UnsupportedCharsetException e) { charset = Charset.forName(System.getProperty("file.encoding")); }
0 0
unknown (Lib) UnsupportedEncodingException 0 0 0 1
            
// in java/org/columba/mail/shutdown/ClearRecentFlagPlugin.java
catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }
0 0
unknown (Lib) UnsupportedFlavorException 4
            
// in java/org/columba/mail/gui/tree/util/CTransferableTreePath.java
public synchronized Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (flavor.isMimeTypeEqual(TREEPATH_FLAVOR.getMimeType())) { // DataFlavor.javaJVMLocalObjectMimeType)) return _path; } else { throw new UnsupportedFlavorException(flavor); } }
// in java/org/columba/mail/gui/tree/FolderTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/config/filter/ObjectArrayTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/table/MessageReferencesTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
0 4
            
// in java/org/columba/mail/gui/tree/util/CTransferableTreePath.java
public synchronized Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (flavor.isMimeTypeEqual(TREEPATH_FLAVOR.getMimeType())) { // DataFlavor.javaJVMLocalObjectMimeType)) return _path; } else { throw new UnsupportedFlavorException(flavor); } }
// in java/org/columba/mail/gui/tree/FolderTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/config/filter/ObjectArrayTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
// in java/org/columba/mail/gui/table/MessageReferencesTransfer.java
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!isDataFlavorSupported(flavor)) { throw new UnsupportedFlavorException(flavor); } return this; }
1
            
// in java/org/columba/mail/gui/composer/ComposerAttachmentTransferHandler.java
catch (UnsupportedFlavorException e) { LOG.warning("A transferable with unsupported flavors tried to import data into the attachment gui."); }
0 0
unknown (Domain) WrongPassphraseException
public class WrongPassphraseException extends JSCFException {

    /**
     * @param arg0
     */
    public WrongPassphraseException(String arg0) {
        super(arg0);
        
    }

}
1
            
// in java/org/columba/mail/pgp/MultipartSignedRenderer.java
public InputStream render(MimePart part) throws Exception { Vector streams = new Vector((2 * 2) + 3); MimeHeader header = part.getHeader(); // Create boundary to separate the mime-parts String boundary = createUniqueBoundary().toString(); header.putContentParameter("boundary", boundary); byte[] startBoundary = ("\r\n--" + boundary + "\r\n").getBytes(); byte[] endBoundary = ("\r\n--" + boundary + "--\r\n").getBytes(); // Add pgp-specific content-parameters // we take as default hash-algo SHA1 header.putContentParameter("micalg", "pgp-sha1"); header.putContentParameter("protocol", "application/pgp-signature"); // Create the header and body of the multipart streams.add(header.getHeader().getInputStream()); // Add the MimePart that will be signed streams.add(new ByteArrayInputStream(startBoundary)); CloneStreamMaster signedPartCloneModel = new CloneStreamMaster( MimeTreeRenderer.getInstance().renderMimePart(part.getChild(0))); streams.add(signedPartCloneModel.getClone()); // Add the signature streams.add(new ByteArrayInputStream(startBoundary)); StreamableMimePart signatureMimePart; signatureMimePart = null; JSCFController controller = JSCFController.getInstance(); JSCFConnection con = controller.getConnection(); PGPPassChecker passCheck = PGPPassChecker.getInstance(); boolean check = passCheck.checkPassphrase(con); if (!check) { throw new WrongPassphraseException("wrong passphrase"); } JSCFStatement stmt = con.createStatement(); JSCFResultSet res = stmt.executeSign(signedPartCloneModel.getClone()); signatureMimePart = new InputStreamMimePart(this.signatureHeader, res .getResultStream()); streams.add(MimeTreeRenderer.getInstance().renderMimePart( signatureMimePart)); // Create the closing boundary streams.add(new ByteArrayInputStream(endBoundary)); return new SequenceInputStream(streams); }
0 0 0 0 0

Miscellanous Metrics

nF = Number of Finally 5
nF = Number of Try-Finally (without catch) 0
Number of Methods with Finally (nMF) 4 / 3443 (0.1%)
Number of Finally with a Continue 0
Number of Finally with a Return 0
Number of Finally with a Throw 0
Number of Finally with a Break 0
Number of different exception types thrown 13
Number of Domain exception types thrown 5
Number of different exception types caught 43
Number of Domain exception types caught 3
Number of exception declarations in signatures 786
Number of different exceptions types declared in method signatures 20
Number of library exceptions types declared in method signatures 18
Number of Domain exceptions types declared in method signatures 2
Number of Catch with a continue 1
Number of Catch with a return 43
Number of Catch with a Break 1
nbIf = Number of If 2465
nbFor = Number of For 305
Number of Method with an if 1047 / 3443
Number of Methods with a for 255 / 3443
Number of Method starting with a try 44 / 3443 (1.3%)
Number of Expressions 42264
Number of Expressions in try 3300 (7.8%)