[ http://issues.apache.org/jira/browse/JAMES-461?page=all ]
Joachim Draeger updated JAMES-461: ---------------------------------- Attachment: UIDPlusFolderMailRepository1.zip This is my proposal for the Maildir access in James. For better traceability i have extendet Alexander's and Norman's efforts. I think it's the right approach to access Maildir through the existing implementation (javamaildir) and if needed contribute back to it. By the way, Javamail would be a sufficient backend for a imap, one of the most missed features in James. I have made some progress getting the existing imap code to run that way, more to it later. My solution to the "James message key to Javamail message" problem depends on the UID capabilities of Javamail and Javamaildir. That is managed by the UIDFolder http://java.sun.com/products/javamail/javadocs/javax/mail/UIDFolder.html interface which is implemented by MaildirFolder. Unfortunately Javamail has imho a few design deficiencies. You cannot determine which uid a stored message is assigned. The IMAPFolder has such methods: http://java.sun.com/products/javamail/javadocs/com/sun/mail/imap/IMAPFolder.html#appendUIDMessages(javax.mail.Message[]) Why the didn't they encapsulate that important functionality in an extra interface? I wrote a patch for javamaildir-0.6.2 (just a few lines) to implement that imaginary interface (UIDPlusFolder) and a MailRepository implementation which should work with any Javamail store which Folder implements that UIDPlusFolder interface. Imo at the moment there is no way to implement this in pure Javamail. Maybe it is possible to implement an universal Javamail store adapter for James depending on MD5 sums etc, but that would cost the biggest Maildir advantage: speed. I guess it is no problem to ask to include that few new methods in javamaildir, which allow getting UIDs for added messages. Asking for including UIDPlusFolder in Javamail is an attempt worth, but will surely take years. Without common interface there are these ugly licensing problems and dependencies again. But we shouldn't get slow down by that. In a worst case needed methods could be called via reflection. (i hate the word impossible) Maven2 could maybe make things easier, too. What do you think, could this be an solution to fulfill the James MailStore contract? Some notes for running the code: * The code is some kind of "proof-of-concept" and not really testet. (messages are stored and loaded, log looks good) * I run it in a test enviroment using trunk r399103 (it should run with newer/older versions too) * It depends on javamail-1.4.0. * The java-maildir-0.6.2-UIDPlusFolder.patch has to be applied to the archive from http://devel.priocom.com/~zhukov/javamaildir/ the resulting jar is needed to compile UIDPlusFolderMailRepository because of the UIDPlusFolder interface (I can send you a copy of the resulting jar by private email, just ask) Joachim Draeger <jd at joachim-draeger.de> Cologne, Germany, 2006-05-16 > Maildir support > --------------- > > Key: JAMES-461 > URL: http://issues.apache.org/jira/browse/JAMES-461 > Project: James > Type: New Feature > Components: MailStore & MailRepository > Reporter: Norman Maurer > Fix For: 2.4.0 > Attachments: JavamailStoreMailRepository.java, MaildirMailRepository.java, > MaildirMailRepository.java, UIDPlusFolderMailRepository1.zip > > Add Maildir support.. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]