[ 
http://issues.apache.org/jira/browse/JAMES-502?page=comments#action_12415934 ] 

Joachim Draeger commented on JAMES-502:
---------------------------------------

2006-06-13

Hi everybody,

after a lot of javamaildir and JavaMailStoreMailRepository i found some time 
for IMAP again.

To safely share the JavaMail Store between MailRepository and possibly multiple 
instances of IMAP i wrote a StoreGateKeeper in additional to the 
FolderGateKeeper to care for caching and opening/closing Folders.
It looks a bit complicated because everything goes through a few wrappers but 
it makes it possible to keep parts separated.
The reason is that javamaildir allows access by multiple threads but not at 
multiple instances of one Folder. Additionally a Folder has to be closed after 
a session to write Flags.
To say it again: There is no strong dependency to JavaMail Store or 
javamaildir. 
I've implemented two existing interfaces: ImapMailbox and ImapHost.

This time I followed a bit the TDD and exploratory testing. It really sucks to 
always build a jar launch James start Thunderbird and search through the logs 
until you find an exception or the right debug message. 
After writing a few very simple stubs/mocks I could start the server directly 
through a static void main! (see test 
org.apache.james.imapserver.util.ImapServerLauncher) Just create a tcp 
directory  choose run from eclipse and have fun. Or just run it in the 
debugger. The traffic gets logged into tcp.

In org.apache.james.imapserver.handler.session.SessionTest I'm just using a 
ByteArrayStream pair and process it via ImapRequestHandler.handleRequest();
Using debugger is very useful here too.

I preferred first writing my own tests (exploratory) in favor of the existing 
original ones. But now I understand them much better and I'm sure many of them 
could be reanimated.

For two reasons I decided to setup a public svn repository.
1. Putting out a "release" takes much time, even it is only a probosal.
2. I hope more people will join now

But of course I would like to see Imap server playing in the james sandbox 
soon.  :-)

http://svn.joachim-draeger.de/repos/james/

It contains the latest (my) versions of javamaildir, 
javamailstore-mailrepository and imap. The latest versions of all three are 
needed at the moment. But they should be easy to build.
Just download a few libs and use ant. Or just make a few clicks in sure IDE and 
wire the source folders together.
I had to block the directories including mixed licensed jars for known reasons.
javamaildir just needs junit,activation and javamail. 
javamailstore-mailrepository is well documentated. :-)
imap needs log4j, junit, jmock 1.1.0RC1, commons-io and many jars from the 
james lib directory.
I hope to have a convenient build like in javamailstore-mailrepositroy soon. 
Please ask if you have any questions.

To get startet in IMAP I found this document very useful: 
http://www.cs.nyu.edu/artg/internet/Spring2003/assignments/rfc2060_with_changes-04-23.pdf
(with highlighted important parts and comments)

At the moment I will concentrate on Thunderbird 1.5 as client.
For a reference it is quite helpful to watch "real life" imap sessions with a 
packet sniffer like ethereal. As a reference server I prefer courier. If you 
don't have access to a suitable account I could create one for you at my server.

The next tasks will be:

1. creating a build script
2. reanimate existing tests
3. maybe some fancy UML
4. bringing more commands to life
5. think of a James Imap compatible MessageRepository

I'm looking forward for your input and questions! :-) 

Joachim


> IMAP support
> ------------
>
>          Key: JAMES-502
>          URL: http://issues.apache.org/jira/browse/JAMES-502
>      Project: James
>         Type: New Feature

>   Components: IMAPServer
>     Reporter: Stefano Bagnara
>      Fix For: 3.0
>  Attachments: james-imap2-proposal-extended1.zip, james-imap2-proposal.zip
>
> James needs a working IMAP implementations. This is just a container for the 
> IMAP efforts and updates.
> Many times in the list people ask the current status, the missing steps, and 
> more. We should add subtasks to this issue to clear up things.
> If you're willing to help with IMAP support for James please read mailing 
> list archives and this issue history and discuss in the list what you're 
> willing to do.
> I (Stefano) will be happy to help for everything related the James/Avalon 
> integration and the correct service interactions, but I don't know anything 
> about the IMAP protocol itself.

-- 
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]

Reply via email to