[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Classpathx-javamail] Rework of mbox provider

From: Countach
Subject: Re: [Classpathx-javamail] Rework of mbox provider
Date: Wed, 27 Apr 2005 08:45:15 +1000
User-agent: Mozilla Thunderbird 1.0 (Windows/20041206)

I think encouraging or defaulting the use of platform specific separators is just as bad as merely allowing them. If the important methods like getFullname() return platform specific, then you are encouraging the embedding of these platform specific things into config files and preferences files and so forth.

It seems to me that whatever absolute file path names you initially pass into JavaMail, have nothing whatsoever to do with the MBOX separator character. As far as MBOX is concerned they should be treated as opaque blobs or strings. You shouldn't have a need to disassemble them. I know there could be a need if you call Store.getFolder() with an absolute path name, but maybe you should exercise your option under the spec not to implement that. If someone wants to open individual files separately they should either open a new Store for each file, or else open a Store higher up in the hierarchy and pass in relative file names. Then you could stick 100% to a standardised separator and not mess with multiple separators.

Anyway, that's a side issue. The bigger issue is that JavaMail tries to put a consistent interface onto lots of different types of folder hierarchies whether they be IMAP or directories of MBOXes or whatever. I'm not convinced that users want to see different naming because of the platform, anymore than they would want to when looking at IMAP servers hosted on different platforms. JavaMail is not trying to be a convenience veneer around local file systems, it is trying to be a consistent interface across multiple mail sources.

Chris Burdess wrote:

Countach wrote:

If I understand the new code correctly, the MBOX code will now name folders differently depending on the platform. i.e. the hierarchy separator is backslash for windows platform and forword slash for Unix.

I wonder if this isn't a step backwards? Previously the MBOX hierarchy separator was always forward slash regardless of platform (just like URLs),

Actually there was an inconsistency in the old code: the hierarchy separator was always reported as being the platform separator, but folder paths were only interpreted as if the separator was a slash.

and code that uses it doesn't have to worry about what platform it is on. Now with this setup, the clients of this library have to do a lot more work to get the same level of platform independance.

I agree. I've applied a patch which allows you to use either a slash or the platform separator. The Folder.getFullName method will report the platform separator though, as will getSeparator. You can also use URLNames to reference your mailboxes, which always use slashes in their pathnames.

This code change gives you more options with DOS/Windows filenames; in particular, you should be able to do something like

  Folder f = store.getFolder("C:\\My Mailboxes\\My Inbox.mbx");

as well as

  Folder f = store.getFolder("C:/My Mailboxes/My Inbox.mbx");


Folder f = store.getFolder(new URLName("mbox:///C%3A/My%20Mailboxes/My%20Inbox.mbx"));

reply via email to

[Prev in Thread] Current Thread [Next in Thread]