Stefano Bagnara wrote:

1. Why MailRepository gets configured on startup?

Every MAIL repository used by ToRepository and FromRepository mailets, the SPOOL repository used by RemoteDelivery and the main SPOOL repository used by the JamesSpoolManager (localspoolrepository) are created/configured when the components are initialized.

On startup a MailRepository object gets configured with destinationURL="whatever://var/mail/inboxes/" and initialized. That MailRepository object won't ever be used. So I shouldn't do anything in initialize method at that time, but how can I determine that?

Can you tell me where does this happens?
I cannot find this in the code.

I don't know where and why it happens exactly. But I found something in the mailstore.log: (at startup)

24/05/06 13:42:15 INFO  mailstore: JamesMailStore init...
24/05/06 13:42:15 INFO mailstore: Registering Repository instance of class org.apache.james.mailrepository.AvalonMailRepository to handle file protocol requests for repositories of type MAIL 24/05/06 13:42:15 INFO mailstore: Registering Repository instance of class org.apache.james.mailrepository.AvalonSpoolRepository to handle file protocol requests for repositories of type SPOOL
...
24/05/06 13:42:15 INFO mailstore: Registering Repository instance of class org.apache.james.mailrepository.UIDPlusFolderMailRepository to handle maildir protocol requests for repositories of type MAIL
...
24/05/06 13:42:17 DEBUG mailstore: obtained repository: org.apache.james.mailrepository.UIDPlusFolderMailRepository to handle: maildir,MAIL
24/05/06 13:42:17 DEBUG mailstore: maildir service
24/05/06 13:42:17 DEBUG mailstore: maildir configure
24/05/06 13:42:17 DEBUG mailstore: MaildirMailRepository.destinationURL: maildir://var/mail/inboxes/ 24/05/06 13:42:17 DEBUG mailstore: destination: maildir:///apps/james/var/mail/inboxes/Maildir/
24/05/06 13:42:17 DEBUG mailstore: maildir configured
24/05/06 13:42:17 DEBUG mailstore: maildir initialized

And when it's demanded for a specific user:

24/05/06 13:44:51 DEBUG mailstore: obtained repository: org.apache.james.mailrepository.UIDPlusFolderMailRepository to handle: maildir,MAIL
24/05/06 13:44:51 DEBUG mailstore: maildir service
24/05/06 13:44:51 DEBUG mailstore: maildir configure
24/05/06 13:44:51 DEBUG mailstore: MaildirMailRepository.destinationURL: maildir://var/mail/inboxes/joachim2/ 24/05/06 13:44:51 DEBUG mailstore: destination: maildir:///apps/james/var/mail/inboxes/joachim2/Maildir/
24/05/06 13:44:51 DEBUG mailstore: maildir configured
24/05/06 13:44:51 DEBUG mailstore: maildir initialized
24/05/06 13:44:51 INFO mailstore: added repository: maildir://var/mail/inboxes/joachim2/MAIL->org.apache.james.mailrepository.UIDPlusFolderMailRepository

I think that happens to every MailRepository that is configured in config.xml.

<config>
   <James>
      <inboxRepository>
<repository destinationURL="maildir://var/mail/inboxes/" type="MAIL"/>
      </inboxRepository>
   </James>
   <mailstore>
      <repositories>
<repository class="org.apache.james.mailrepository.UIDPlusFolderMailRepository ">
            <protocols>
               <protocol>maildir</protocol>
            </protocols>
            <types>
               <type>MAIL</type>
            </types>
         </repository>
      </repositories>
   </mailstore>
</config>


When a MailRepository is demanded for a specific user it get's configured with destinationURL="whatever://var/mail/inboxes/username".

Of course I can add "if (!open) open();" to every store, list, remove method, but I just wonder if there is a better way.

What is "open()" ?
MailRepository does not have an open method.

Sorry, just pseudo code. open() creates the the mailbox structure on disk. It's like "lazy loading". This can't happen in initialize method because that gets called on James start up

Joachim
24/05/06 13:42:15 INFO  mailstore: JamesMailStore init...
24/05/06 13:42:15 INFO  mailstore: Registering Repository instance of class 
org.apache.james.mailrepository.AvalonMailRepository to handle file protocol 
requests for repositories of type MAIL
24/05/06 13:42:15 INFO  mailstore: Registering Repository instance of class 
org.apache.james.mailrepository.AvalonSpoolRepository to handle file protocol 
requests for repositories of type SPOOL
24/05/06 13:42:15 INFO  mailstore: Registering Repository instance of class 
org.apache.james.mailrepository.JDBCMailRepository to handle db protocol 
requests for repositories of type MAIL
24/05/06 13:42:15 INFO  mailstore: Registering Repository instance of class 
org.apache.james.mailrepository.JDBCSpoolRepository to handle db protocol 
requests for repositories of type SPOOL
24/05/06 13:42:15 INFO  mailstore: Registering Repository instance of class 
org.apache.james.mailrepository.JDBCMailRepository to handle dbfile protocol 
requests for repositories of type MAIL
24/05/06 13:42:15 INFO  mailstore: Registering Repository instance of class 
org.apache.james.mailrepository.JDBCSpoolRepository to handle dbfile protocol 
requests for repositories of type SPOOL
24/05/06 13:42:15 INFO  mailstore: Registering Repository instance of class 
org.apache.james.mailrepository.MBoxMailRepository to handle mbox protocol 
requests for repositories of type MAIL
24/05/06 13:42:15 INFO  mailstore: Registering Repository instance of class 
org.apache.james.mailrepository.UIDPlusFolderMailRepository to handle maildir 
protocol requests for repositories of type MAIL
24/05/06 13:42:17 DEBUG mailstore: obtained repository: 
org.apache.james.mailrepository.JDBCSpoolRepository to handle: dbfile,SPOOL
24/05/06 13:42:17 DEBUG mailstore: 
org.apache.james.mailrepository.JDBCSpoolRepository.compose()
24/05/06 13:42:17 DEBUG mailstore: 
org.apache.james.mailrepository.JDBCSpoolRepository.configure()
24/05/06 13:42:17 DEBUG mailstore: Parsed URL: table = 'spool', repositoryName 
= 'spool'
24/05/06 13:42:17 DEBUG mailstore: Got filestore for JdbcMailRepository: 
file://var/dbmail
24/05/06 13:42:17 DEBUG mailstore: 
org.apache.james.mailrepository.JDBCSpoolRepository created according to 
dbfile://maildb/spool/spool/
24/05/06 13:42:17 DEBUG mailstore: 
org.apache.james.mailrepository.JDBCSpoolRepository.initialize()
24/05/06 13:42:17 DEBUG mailstore: Reading SQL resources from file: 
B:\java\jamesws\JamesNewTrunk\dist\james-2.4-dev\apps\james\conf\sqlResources.xml,
 section org.apache.james.mailrepository.JDBCSpoolRepository.
24/05/06 13:42:17 INFO  mailstore: JdbcMailRepository 'spool, table 'spool': 
JDBC Mail Attributes support ready.
24/05/06 13:42:17 INFO  mailstore: added repository: 
dbfile://maildb/spool/spoolSPOOL->org.apache.james.mailrepository.JDBCSpoolRepository
24/05/06 13:42:17 DEBUG mailstore: obtained repository: 
org.apache.james.mailrepository.UIDPlusFolderMailRepository to handle: 
maildir,MAIL
24/05/06 13:42:17 DEBUG mailstore: maildir service
24/05/06 13:42:17 DEBUG mailstore: maildir configure
24/05/06 13:42:17 DEBUG mailstore: MaildirMailRepository.destinationURL: 
maildir://var/mail/inboxes/
24/05/06 13:42:17 DEBUG mailstore: destination: 
maildir:///apps/james/var/mail/inboxes/Maildir/
24/05/06 13:42:17 DEBUG mailstore: maildir configured
24/05/06 13:42:17 DEBUG mailstore: maildir initialized
24/05/06 13:42:17 INFO  mailstore: added repository: 
maildir://var/mail/inboxes/MAIL->org.apache.james.mailrepository.UIDPlusFolderMailRepository
24/05/06 13:42:17 DEBUG mailstore: obtained repository: 
org.apache.james.mailrepository.AvalonMailRepository to handle: file,MAIL
24/05/06 13:42:17 DEBUG mailstore: AvalonMailRepository.destinationURL: 
file://var/mail/error/
24/05/06 13:42:17 DEBUG mailstore: 
org.apache.james.mailrepository.AvalonMailRepository created in 
file://var/mail/error/
24/05/06 13:42:17 INFO  mailstore: added repository: 
file://var/mail/error/MAIL->org.apache.james.mailrepository.AvalonMailRepository
24/05/06 13:42:17 DEBUG mailstore: obtained repository: 
org.apache.james.mailrepository.AvalonSpoolRepository to handle: file,SPOOL
24/05/06 13:42:17 DEBUG mailstore: AvalonMailRepository.destinationURL: 
file://var/mail/outgoing/
24/05/06 13:42:17 DEBUG mailstore: 
org.apache.james.mailrepository.AvalonSpoolRepository created in 
file://var/mail/outgoing/
24/05/06 13:42:17 INFO  mailstore: added repository: 
file://var/mail/outgoing/SPOOL->org.apache.james.mailrepository.AvalonSpoolRepository
24/05/06 13:42:17 DEBUG mailstore: obtained repository: 
org.apache.james.mailrepository.AvalonMailRepository to handle: file,MAIL
24/05/06 13:42:17 DEBUG mailstore: AvalonMailRepository.destinationURL: 
file://var/mail/spam/
24/05/06 13:42:17 DEBUG mailstore: 
org.apache.james.mailrepository.AvalonMailRepository created in 
file://var/mail/spam/
24/05/06 13:42:17 INFO  mailstore: added repository: 
file://var/mail/spam/MAIL->org.apache.james.mailrepository.AvalonMailRepository
24/05/06 13:42:17 DEBUG mailstore: obtained repository: 
org.apache.james.mailrepository.AvalonMailRepository to handle: file,MAIL
24/05/06 13:42:17 DEBUG mailstore: AvalonMailRepository.destinationURL: 
file://var/mail/address-error/
24/05/06 13:42:17 DEBUG mailstore: 
org.apache.james.mailrepository.AvalonMailRepository created in 
file://var/mail/address-error/
24/05/06 13:42:17 INFO  mailstore: added repository: 
file://var/mail/address-error/MAIL->org.apache.james.mailrepository.AvalonMailRepository
24/05/06 13:42:17 DEBUG mailstore: obtained repository: 
org.apache.james.mailrepository.AvalonMailRepository to handle: file,MAIL
24/05/06 13:42:17 DEBUG mailstore: AvalonMailRepository.destinationURL: 
file://var/mail/relay-denied/
24/05/06 13:42:17 DEBUG mailstore: 
org.apache.james.mailrepository.AvalonMailRepository created in 
file://var/mail/relay-denied/
24/05/06 13:42:17 INFO  mailstore: added repository: 
file://var/mail/relay-denied/MAIL->org.apache.james.mailrepository.AvalonMailRepository
24/05/06 13:44:51 DEBUG mailstore: obtained repository: 
org.apache.james.mailrepository.UIDPlusFolderMailRepository to handle: 
maildir,MAIL
24/05/06 13:44:51 DEBUG mailstore: maildir service
24/05/06 13:44:51 DEBUG mailstore: maildir configure
24/05/06 13:44:51 DEBUG mailstore: MaildirMailRepository.destinationURL: 
maildir://var/mail/inboxes/joachim2/
24/05/06 13:44:51 DEBUG mailstore: destination: 
maildir:///apps/james/var/mail/inboxes/joachim2/Maildir/
24/05/06 13:44:51 DEBUG mailstore: maildir configured
24/05/06 13:44:51 DEBUG mailstore: maildir initialized
24/05/06 13:44:51 INFO  mailstore: added repository: 
maildir://var/mail/inboxes/joachim2/MAIL->org.apache.james.mailrepository.UIDPlusFolderMailRepository
24/05/06 13:44:51 DEBUG mailstore: UIDPlusFolder list
24/05/06 13:44:51 INFO  mailstore: list: UIDValidity: 1148045725656 UID: 2 
Key:james-uid:1148045725656;2;1148471091875;-2604109196052168574
24/05/06 13:44:51 DEBUG mailstore: UIDPlusFolder retrieve 
james-uid:1148045725656;2;1148471091875;-2604109196052168574
24/05/06 13:44:51 INFO  mailstore: getMessageFromInbox: UIDValidity: 
1148045725656 UID: 2 
Key:james-uid:1148045725656;2;1148471091875;-2604109196052168574
24/05/06 13:45:35 DEBUG mailstore: UIDPlusFolder remove by Collection 0

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to