Author: bago
Date: Tue Aug 9 16:00:40 2005
New Revision: 231133
URL: http://svn.apache.org/viewcvs?rev=231133&view=rev
Log:
Don't keep all mailboxes in-memory forever (JAMES-138).
Changed the HashMap in ReferenceMap.
Also cleaned imports, unused variables, unnecessary classcasts, unused fields
in the 2 involved files.
Modified:
james/server/trunk/src/java/org/apache/james/James.java
james/server/trunk/src/java/org/apache/james/core/AvalonMailStore.java
Modified: james/server/trunk/src/java/org/apache/james/James.java
URL:
http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/James.java?rev=231133&r1=231132&r2=231133&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/James.java (original)
+++ james/server/trunk/src/java/org/apache/james/James.java Tue Aug 9 16:00:40
2005
@@ -31,14 +31,13 @@
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
+import org.apache.commons.collections.ReferenceMap;
import org.apache.james.context.AvalonContextUtilities;
import org.apache.james.core.MailHeaders;
import org.apache.james.core.MailImpl;
import org.apache.james.services.*;
import org.apache.james.userrepository.DefaultJamesUser;
-import org.apache.mailet.RFC2822Headers;
-import org.apache.mailet.dates.RFC822DateFormat;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.apache.mailet.MailetContext;
@@ -46,11 +45,8 @@
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
import java.io.ByteArrayInputStream;
-import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.net.InetAddress;
@@ -114,11 +110,6 @@
private SpoolRepository spool;
/**
- * The repository that stores the user inboxes.
- */
- private MailRepository localInbox;
-
- /**
* The root URL used to get mailboxes from the repository
*/
private String inboxRootURL;
@@ -179,11 +170,6 @@
protected Context myContext;
/**
- * An RFC822 date formatter used to format dates in mail headers
- */
- private RFC822DateFormat rfc822DateFormat = new RFC822DateFormat();
-
- /**
* @see
org.apache.avalon.framework.context.Contextualizable#contextualize(Context)
*/
public void contextualize(final Context context) {
@@ -195,7 +181,7 @@
*/
public void service(ServiceManager comp) {
compMgr = new DefaultServiceManager(comp);
- mailboxes = new HashMap(31);
+ mailboxes = new ReferenceMap();
}
/**
@@ -328,7 +314,7 @@
//Get localusers
try {
- localusers = (UsersRepository)
usersStore.getRepository("LocalUsers");
+ localusers = usersStore.getRepository("LocalUsers");
} catch (Exception e) {
getLogger().error("Cannot open private UserRepository");
throw e;
@@ -339,8 +325,10 @@
Configuration inboxConf = conf.getChild("inboxRepository");
Configuration inboxRepConf = inboxConf.getChild("repository");
+ // we could delete this block. I didn't remove this because I'm not
sure
+ // wether we need the "check" of the inbox repository here, or not.
try {
- localInbox = (MailRepository) mailstore.select(inboxRepConf);
+ mailstore.select(inboxRepConf);
} catch (Exception e) {
getLogger().error("Cannot open private MailRepository");
throw e;
@@ -490,7 +478,7 @@
* @return the POP3 inbox for the user
*/
public synchronized MailRepository getUserInbox(String userName) {
- MailRepository userInbox = (MailRepository) null;
+ MailRepository userInbox = null;
userInbox = (MailRepository) mailboxes.get(userName);
Modified: james/server/trunk/src/java/org/apache/james/core/AvalonMailStore.java
URL:
http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/core/AvalonMailStore.java?rev=231133&r1=231132&r2=231133&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/core/AvalonMailStore.java
(original)
+++ james/server/trunk/src/java/org/apache/james/core/AvalonMailStore.java Tue
Aug 9 16:00:40 2005
@@ -31,11 +31,13 @@
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.commons.collections.ReferenceMap;
import org.apache.james.services.MailRepository;
import org.apache.james.services.MailStore;
import org.apache.james.services.SpoolRepository;
import java.util.HashMap;
+import java.util.Map;
/**
* Provides a registry of mail repositories. A mail repository is uniquely
@@ -54,13 +56,13 @@
private static long id;
// map of [destinationURL + type]->Repository
- private HashMap repositories;
+ private Map repositories;
// map of [protocol(destinationURL) + type ]->classname of repository;
- private HashMap classes;
+ private Map classes;
// map of [protocol(destinationURL) + type ]->default config for
repository.
- private HashMap defaultConfigs;
+ private Map defaultConfigs;
/**
* The Avalon context used by the instance
@@ -113,14 +115,14 @@
throws Exception {
getLogger().info("JamesMailStore init...");
- repositories = new HashMap();
+ repositories = new ReferenceMap();
classes = new HashMap();
defaultConfigs = new HashMap();
Configuration[] registeredClasses
= configuration.getChild("repositories").getChildren("repository");
for ( int i = 0; i < registeredClasses.length; i++ )
{
- registerRepository((Configuration) registeredClasses[i]);
+ registerRepository(registeredClasses[i]);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]