Author: norman
Date: Fri Dec 17 18:38:33 2010
New Revision: 1050464
URL: http://svn.apache.org/viewvc?rev=1050464&view=rev
Log:
File repository implementations are now instanced directly and not load via
MailStore. This is the first step to get rid of InstanceFactory in MailStore
and make MailStore interface easier to use
Modified:
james/server/trunk/container-spring/src/main/config/examples/mailstore.xml
james/server/trunk/container-spring/src/main/config/james/mailstore.xml
james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
james/server/trunk/mail-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java
james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
james/server/trunk/mail-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
james/server/trunk/mail-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java
Modified:
james/server/trunk/container-spring/src/main/config/examples/mailstore.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/examples/mailstore.xml?rev=1050464&r1=1050463&r2=1050464&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/examples/mailstore.xml
(original)
+++ james/server/trunk/container-spring/src/main/config/examples/mailstore.xml
Fri Dec 17 18:38:33 2010
@@ -30,7 +30,7 @@
<type>MAIL</type>
</types>
<!-- Set if the messages should be listed sorted. False by default
-->
- <config FIFO="false"/>
+ <config FIFO="false" CACHEKEYS="true"/>
</repository>
<!-- JDBC based repositories. These repositories store all message
data -->
@@ -80,33 +80,6 @@
<config FIFO="false"/>
</repository>
- <repository
class="org.apache.james.filepair.FilePersistentObjectRepository">
- <protocols>
- <protocol>file</protocol>
- </protocols>
- <types>
- <type>OBJECT</type>
- </types>
- <models>
- <model>SYNCHRONOUS</model>
- <model>ASYNCHRONOUS</model>
- <model>CACHE</model>
- </models>
- </repository>
-
- <repository
class="org.apache.james.filepair.FilePersistentStreamRepository">
- <protocols>
- <protocol>file</protocol>
- </protocols>
- <types>
- <type>STREAM</type>
- </types>
- <models>
- <model>SYNCHRONOUS</model>
- <model>ASYNCHRONOUS</model>
- <model>CACHE</model>
- </models>
- </repository>
<!-- If you enable this you need to make sure that embedded Jackrabbit
instance is started as well. Check the container configuration -->
<!--
Modified:
james/server/trunk/container-spring/src/main/config/james/mailstore.xml
URL:
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/mailstore.xml?rev=1050464&r1=1050463&r2=1050464&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/mailstore.xml
(original)
+++ james/server/trunk/container-spring/src/main/config/james/mailstore.xml Fri
Dec 17 18:38:33 2010
@@ -23,13 +23,7 @@
<mailstore>
<repositories>
<repository
class="org.apache.james.mailrepository.file.FileMailRepository">
- <protocols>
- <protocol>file</protocol>
- </protocols>
- <types>
- <type>MAIL</type>
- </types>
- <config FIFO="false"/>
+ <config FIFO="false" CACHEKEYS="true"/>
</repository>
<repository
class="org.apache.james.mailrepository.jdbc.JDBCMailRepository">
<protocols>
@@ -63,31 +57,5 @@
</types>
<config FIFO="false"/>
</repository>
- <repository
class="org.apache.james.repository.file.FilePersistentObjectRepository">
- <protocols>
- <protocol>file</protocol>
- </protocols>
- <types>
- <type>OBJECT</type>
- </types>
- <models>
- <model>SYNCHRONOUS</model>
- <model>ASYNCHRONOUS</model>
- <model>CACHE</model>
- </models>
- </repository>
- <repository
class="org.apache.james.repository.file.FilePersistentStreamRepository">
- <protocols>
- <protocol>file</protocol>
- </protocols>
- <types>
- <type>STREAM</type>
- </types>
- <models>
- <model>SYNCHRONOUS</model>
- <model>ASYNCHRONOUS</model>
- <model>CACHE</model>
- </models>
- </repository>
</repositories>
</mailstore>
Modified:
james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java?rev=1050464&r1=1050463&r2=1050464&view=diff
==============================================================================
---
james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
(original)
+++
james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
Fri Dec 17 18:38:33 2010
@@ -21,21 +21,6 @@
package org.apache.james.mailrepository.file;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
-import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.core.MimeMessageCopyOnWriteProxy;
-import org.apache.james.core.MimeMessageWrapper;
-import org.apache.james.mailrepository.lib.AbstractMailRepository;
-import org.apache.james.mailstore.api.MailStore;
-import org.apache.james.repository.api.ObjectRepository;
-import org.apache.james.repository.api.StreamRepository;
-import org.apache.mailet.Mail;
-
-import javax.annotation.PostConstruct;
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
@@ -45,6 +30,21 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.core.MimeMessageCopyOnWriteProxy;
+import org.apache.james.core.MimeMessageWrapper;
+import org.apache.james.mailrepository.lib.AbstractMailRepository;
+import org.apache.james.repository.file.FilePersistentObjectRepository;
+import org.apache.james.repository.file.FilePersistentStreamRepository;
+import org.apache.james.resolver.api.FileSystem;
+import org.apache.mailet.Mail;
+
/**
* Implementation of a MailRepository on a FileSystem.
*
@@ -59,13 +59,18 @@ import java.util.Set;
public class FileMailRepository
extends AbstractMailRepository {
- private StreamRepository streamRepository;
- private ObjectRepository objectRepository;
+ private FilePersistentStreamRepository streamRepository;
+ private FilePersistentObjectRepository objectRepository;
private String destination;
private Set keys;
private boolean fifo;
private boolean cacheKeys; // experimental: for use with write mostly
repositories such as spam and error
+ private FileSystem fs;
+ @Resource(name="filesystem")
+ public void setFileSystem(FileSystem fs) {
+ this.fs = fs;
+ }
@Override
protected void doConfigure(HierarchicalConfiguration config)
@@ -73,16 +78,7 @@ public class FileMailRepository
super.doConfigure(config);
destination = config.getString("[...@destinationurl]");
if (getLogger().isDebugEnabled()) {
- getLogger().debug("AvalonMailRepository.destinationURL: " +
destination);
- }
- String checkType = config.getString("[...@type]");
- if (! (checkType.equals("MAIL") || checkType.equals("SPOOL")) ) {
- String exceptionString = "Attempt to configure
AvalonMailRepository as " +
- checkType;
- if (getLogger().isWarnEnabled()) {
- getLogger().warn(exceptionString);
- }
- throw new ConfigurationException(exceptionString);
+ getLogger().debug("FileMailRepository.destinationURL: " +
destination);
}
fifo = config.getBoolean("[...@fifo]", false);
cacheKeys = config.getBoolean("[...@cachekeys]", true);
@@ -94,9 +90,21 @@ public class FileMailRepository
public void init()
throws Exception {
try {
- objectRepository = (ObjectRepository) selectRepository(store,
"OBJECT");
- streamRepository = (StreamRepository) selectRepository(store,
"STREAM");
+ DefaultConfigurationBuilder reposConfiguration = new
DefaultConfigurationBuilder();
+ reposConfiguration.addProperty("[...@destinationurl]",
destination);
+ objectRepository = new FilePersistentObjectRepository();
+ objectRepository.setLog(getLogger());
+ objectRepository.setFileSystem(fs);
+ objectRepository.configure(reposConfiguration);
+ objectRepository.init();
+
+ streamRepository = new FilePersistentStreamRepository();
+ streamRepository.setLog(getLogger());
+ streamRepository.setFileSystem(fs);
+ streamRepository.configure(reposConfiguration);
+ streamRepository.init();
+
if (cacheKeys) keys = Collections.synchronizedSet(new HashSet());
//Finds non-matching pairs and deletes the extra files
@@ -146,16 +154,6 @@ public class FileMailRepository
}
}
- private Object selectRepository(MailStore store, String type) throws
Exception {
- DefaultConfigurationBuilder objectConfiguration
- = new DefaultConfigurationBuilder();
-
- objectConfiguration.addProperty("[...@destinationurl]", destination);
- objectConfiguration.addProperty("[...@type]", type);
- objectConfiguration.addProperty("[...@model]", "SYNCHRONOUS");
- return store.select(objectConfiguration);
- }
-
/**
* @see
org.apache.james.mailrepository.lib.AbstractMailRepository#internalStore(Mail)
*/
Modified:
james/server/trunk/mail-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mail-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java?rev=1050464&r1=1050463&r2=1050464&view=diff
==============================================================================
---
james/server/trunk/mail-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java
(original)
+++
james/server/trunk/mail-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java
Fri Dec 17 18:38:33 2010
@@ -24,9 +24,6 @@ import org.apache.commons.configuration.
import org.apache.commons.logging.impl.SimpleLog;
import org.apache.james.mailrepository.api.MailRepository;
import org.apache.james.mailrepository.file.FileMailRepository;
-import org.apache.james.mailstore.mock.MockMailStore;
-import org.apache.james.repository.file.FilePersistentObjectRepository;
-import org.apache.james.repository.file.FilePersistentStreamRepository;
import org.apache.james.resolver.api.mock.MockFileSystem;
public class FileMailRepositoryTest extends AbstractMailRepositoryTest {
@@ -40,27 +37,7 @@ public class FileMailRepositoryTest exte
protected MailRepository getMailRepository() throws Exception {
MockFileSystem fs = new MockFileSystem();
FileMailRepository mr = new FileMailRepository();
- MockMailStore mockStore = new MockMailStore();
- FilePersistentStreamRepository file_Persistent_Stream_Repository = new
FilePersistentStreamRepository();
- file_Persistent_Stream_Repository.setFileSystem(fs);
- file_Persistent_Stream_Repository.setLog(new SimpleLog("MockLog"));
-
- DefaultConfigurationBuilder defaultConfiguration2 = new
DefaultConfigurationBuilder();
- defaultConfiguration2.addProperty( "[...@destinationurl]",
"file://target/var/mr");
- file_Persistent_Stream_Repository.configure(defaultConfiguration2);
- file_Persistent_Stream_Repository.init();
-
- mockStore.add("STREAM.mr", file_Persistent_Stream_Repository);
- FilePersistentObjectRepository file_Persistent_Object_Repository = new
FilePersistentObjectRepository();
- file_Persistent_Object_Repository.setFileSystem(fs);
- file_Persistent_Object_Repository.setLog(new SimpleLog("MockLog"));
- DefaultConfigurationBuilder defaultConfiguration22 = new
DefaultConfigurationBuilder();
- defaultConfiguration22.addProperty( "[...@destinationurl]",
"file://target/var/mr");
- file_Persistent_Object_Repository.configure(defaultConfiguration22);
- file_Persistent_Object_Repository.init();
- mockStore.add("OBJECT.mr", file_Persistent_Object_Repository);
- mr.setStore(mockStore);
-
+ mr.setFileSystem(fs);
mr.setLog(new SimpleLog("MockLog"));
DefaultConfigurationBuilder defaultConfiguration = new
DefaultConfigurationBuilder();
defaultConfiguration.addProperty(
"[...@destinationurl]","file://target/var/mr");
Modified:
james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java?rev=1050464&r1=1050463&r2=1050464&view=diff
==============================================================================
---
james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
(original)
+++
james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
Fri Dec 17 18:38:33 2010
@@ -28,7 +28,7 @@ import org.apache.james.core.MailImpl;
import org.apache.james.core.MimeMessageCopyOnWriteProxy;
import org.apache.james.core.MimeMessageWrapper;
import org.apache.james.mailrepository.lib.AbstractMailRepository;
-import org.apache.james.repository.api.StreamRepository;
+import org.apache.james.repository.file.FilePersistentStreamRepository;
import org.apache.james.resolver.api.FileSystem;
import org.apache.james.util.sql.JDBCUtil;
import org.apache.james.util.sql.SqlResources;
@@ -100,7 +100,7 @@ public class JDBCMailRepository
/**
* The stream repository used in dbfile mode
*/
- private StreamRepository sr = null;
+ private FilePersistentStreamRepository sr = null;
/**
@@ -248,10 +248,13 @@ public class JDBCMailRepository
= new DefaultConfigurationBuilder();
streamConfiguration.addProperty( "[...@destinationurl]",
filestore );
- streamConfiguration.addProperty( "[...@type]", "STREAM" );
- streamConfiguration.addProperty( "[...@model]", "SYNCHRONOUS"
);
- sr = (StreamRepository) store.select(streamConfiguration);
-
+
+ sr = new FilePersistentStreamRepository();
+ sr.setLog(getLogger());
+ sr.setFileSystem(fileSystem);
+ sr.configure(streamConfiguration);
+ sr.init();
+
if (getLogger().isDebugEnabled()) {
getLogger().debug("Got filestore for JdbcMailRepository: "
+ filestore);
}
Modified:
james/server/trunk/mail-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mail-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java?rev=1050464&r1=1050463&r2=1050464&view=diff
==============================================================================
---
james/server/trunk/mail-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
(original)
+++
james/server/trunk/mail-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
Fri Dec 17 18:38:33 2010
@@ -29,8 +29,6 @@ import org.apache.derby.jdbc.EmbeddedDri
import org.apache.james.mailrepository.AbstractMailRepositoryTest;
import org.apache.james.mailrepository.api.MailRepository;
import org.apache.james.mailrepository.jdbc.JDBCMailRepository;
-import org.apache.james.mailstore.mock.MockMailStore;
-import org.apache.james.repository.file.FilePersistentStreamRepository;
import org.apache.james.resolver.api.mock.MockFileSystem;
public class JDBCMailRepositoryTest extends AbstractMailRepositoryTest {
@@ -46,23 +44,11 @@ public class JDBCMailRepositoryTest exte
DataSource datasource = getDataSource();
JDBCMailRepository mr = new JDBCMailRepository();
- // only used for dbfile
- MockMailStore mockStore = new MockMailStore();
- FilePersistentStreamRepository file_Persistent_Stream_Repository = new
FilePersistentStreamRepository();
- file_Persistent_Stream_Repository.setFileSystem(fs);
- file_Persistent_Stream_Repository.setLog(new SimpleLog("MockLog"));
- DefaultConfigurationBuilder defaultConfiguration2 = new
DefaultConfigurationBuilder();
- defaultConfiguration2.addProperty("[...@destinationurl]",
"file://target/var/mr/testrepo");
- file_Persistent_Stream_Repository.configure(defaultConfiguration2);
- file_Persistent_Stream_Repository.init();
- mockStore.add("STREAM.mr", file_Persistent_Stream_Repository);
-
DefaultConfigurationBuilder defaultConfiguration = new
DefaultConfigurationBuilder();
defaultConfiguration.addProperty("[...@destinationurl]","db://maildb/mr/testrepo");
defaultConfiguration.addProperty("sqlFile","file://conf/sqlResources.xml");
defaultConfiguration.addProperty("[...@type]","MAIL");
mr.setFileSystem(fs);
- mr.setStore(mockStore);
mr.setDatasource(datasource);
mr.setLog(new SimpleLog("MockLog"));
mr.configure(defaultConfiguration);
Modified:
james/server/trunk/mail-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mail-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java?rev=1050464&r1=1050463&r2=1050464&view=diff
==============================================================================
---
james/server/trunk/mail-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java
(original)
+++
james/server/trunk/mail-library/src/main/java/org/apache/james/mailrepository/lib/AbstractMailRepository.java
Fri Dec 17 18:38:33 2010
@@ -27,11 +27,9 @@ import org.apache.commons.logging.Log;
import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.lifecycle.api.LogEnabled;
import org.apache.james.mailrepository.api.MailRepository;
-import org.apache.james.mailstore.api.MailStore;
import org.apache.james.util.Lock;
import org.apache.mailet.Mail;
-import javax.annotation.Resource;
import javax.mail.MessagingException;
import java.io.IOException;
@@ -53,8 +51,6 @@ public abstract class AbstractMailReposi
* based on the key
*/
private final Lock lock = new Lock();;
-
- protected MailStore store; // variable is not used beyond initialization
private Log logger;
@@ -70,16 +66,7 @@ public abstract class AbstractMailReposi
public void configure(HierarchicalConfiguration configuration) throws
ConfigurationException{
doConfigure(configuration);
}
-
- /**
- * Set the Store to use
- *
- * @param store the Store
- */
- @Resource(name="mailstore")
- public void setStore(MailStore store) {
- this.store = store;
- }
+
protected void doConfigure(HierarchicalConfiguration config) throws
ConfigurationException {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]