You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2010/12/17 20:18:58 UTC

svn commit: r1050470 - in /james/server/trunk: container-spring/src/main/config/james/ container-spring/src/main/config/james/context/ mail-api/src/main/java/org/apache/james/mailstore/api/ mail-library/src/main/java/org/apache/james/mailstore/lib/ mai...

Author: norman
Date: Fri Dec 17 19:18:58 2010
New Revision: 1050470

URL: http://svn.apache.org/viewvc?rev=1050470&view=rev
Log:
Improve MailStore interface.. still work in progress

Removed:
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ToMultiRepository.java
Modified:
    james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
    james/server/trunk/container-spring/src/main/config/james/mailstore.xml
    james/server/trunk/mail-api/src/main/java/org/apache/james/mailstore/api/MailStore.java
    james/server/trunk/mail-library/src/main/java/org/apache/james/mailstore/lib/JamesMailStore.java
    james/server/trunk/mail-library/src/test/java/org/apache/james/mailstore/mock/MockMailStore.java
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/FromRepository.java
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ToRepository.java

Modified: james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml?rev=1050470&r1=1050469&r2=1050470&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml (original)
+++ james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml Fri Dec 17 19:18:58 2010
@@ -134,8 +134,8 @@
     <bean id="mailProcessor" name="processorRoute" class="org.apache.james.mailetcontainer.camel.CamelMailProcessorList"/>
     <bean id="mailspooler" class="org.apache.james.mailetcontainer.lib.JamesMailSpooler"/>
     <bean id="mailetcontext" class="org.apache.james.mailetcontainer.lib.JamesMailetContext"/>
-    <bean id="mailetloader" class="org.apache.james.container.spring.mailetcontainer.JamesMailetLoader" />
-    <bean id="matcherloader" class="org.apache.james.container.spring.mailetcontainer.JamesMatcherLoader" />
+    <bean id="mailetloader" class="org.apache.james.container.spring.mailetcontainer.BeanFactoryMailetLoader" />
+    <bean id="matcherloader" class="org.apache.james.container.spring.mailetcontainer.BeanFactoryMatcherLoader" />
 
     <!-- 
       DNS Service

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=1050470&r1=1050469&r2=1050470&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 19:18:58 2010
@@ -24,7 +24,14 @@
   <repositories>
       <repository class="org.apache.james.mailrepository.file.FileMailRepository">
           <config FIFO="false" CACHEKEYS="true"/> 
+          <protocols>
+              <protocol>file</protocol>
+          </protocols>
+          <types>
+                <type>MAIL</type>
+           </types>
       </repository>
+      
       <repository class="org.apache.james.mailrepository.jdbc.JDBCMailRepository">
           <protocols>
               <protocol>db</protocol>

Modified: james/server/trunk/mail-api/src/main/java/org/apache/james/mailstore/api/MailStore.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mail-api/src/main/java/org/apache/james/mailstore/api/MailStore.java?rev=1050470&r1=1050469&r2=1050470&view=diff
==============================================================================
--- james/server/trunk/mail-api/src/main/java/org/apache/james/mailstore/api/MailStore.java (original)
+++ james/server/trunk/mail-api/src/main/java/org/apache/james/mailstore/api/MailStore.java Fri Dec 17 19:18:58 2010
@@ -19,11 +19,11 @@
 
 package org.apache.james.mailstore.api;
 
-import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.mailrepository.api.MailRepository;
 
 public interface MailStore {
 
-    public Object select(HierarchicalConfiguration config) throws StoreException;
+    public MailRepository select(String url) throws StoreException;
     
     @SuppressWarnings("serial")
     public class StoreException extends Exception {

Modified: james/server/trunk/mail-library/src/main/java/org/apache/james/mailstore/lib/JamesMailStore.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mail-library/src/main/java/org/apache/james/mailstore/lib/JamesMailStore.java?rev=1050470&r1=1050469&r2=1050470&view=diff
==============================================================================
--- james/server/trunk/mail-library/src/main/java/org/apache/james/mailstore/lib/JamesMailStore.java (original)
+++ james/server/trunk/mail-library/src/main/java/org/apache/james/mailstore/lib/JamesMailStore.java Fri Dec 17 19:18:58 2010
@@ -35,6 +35,7 @@ import org.apache.commons.configuration.
 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.resolver.api.InstanceFactory;
 
@@ -47,7 +48,7 @@ public class JamesMailStore implements M
 
 
     // map of [destinationURL + type]->Repository
-    private Map<String, Object> repositories;
+    private Map<String, MailRepository> repositories;
 
     // map of [protocol(destinationURL) + type ]->classname of repository;
     private Map<String,String> classes;
@@ -181,12 +182,10 @@ public class JamesMailStore implements M
      *                            Configuration or retrieving the 
      *                            MailRepository
      */
-    public synchronized Object select(HierarchicalConfiguration repConf) throws StoreException {
+    public synchronized MailRepository select(String destination) throws StoreException {
  
-        String destination = null;
         String protocol = null;
 
-        destination = repConf.getString("[@destinationURL]");
         int idx = destination.indexOf(':');
         if ( idx == -1 )
             throw new StoreException("Destination is malformed. Must be a valid URL: "
@@ -194,9 +193,8 @@ public class JamesMailStore implements M
         protocol = destination.substring(0,idx);
         
 
-        String type = repConf.getString("[@type]");
-        String repID = destination + type;
-        Object reply = repositories.get(repID);
+        String repID = destination;
+        MailRepository reply = repositories.get(repID);
         StringBuffer logBuffer = null;
         if (reply != null) {
             if (getLogger().isDebugEnabled()) {
@@ -210,7 +208,7 @@ public class JamesMailStore implements M
             }
             return reply;
         } else {
-            String key = protocol + type;
+            String key = protocol;
             String repClass = (String) classes.get( key );
              if (getLogger().isDebugEnabled()) {
                 logBuffer =
@@ -219,8 +217,6 @@ public class JamesMailStore implements M
                             .append(repClass)
                             .append(" to handle: ")
                             .append(protocol)
-                            .append(",")
-                            .append(type)
                             .append(" with key ")
                             .append(key);
                 getLogger().debug( logBuffer.toString() );
@@ -232,16 +228,12 @@ public class JamesMailStore implements M
             // If no default values, just use the selector.
             final CombinedConfiguration config =  new CombinedConfiguration();
             HierarchicalConfiguration defConf = defaultConfigs.get(key);
-            if ( defConf == null) {
-                config.addConfiguration(repConf);
-            }
-            else {
-                config.addConfiguration(repConf);
+            if ( defConf != null) {
                 config.addConfiguration(defConf);
             }
 
             try {               
-                reply =  factory.newInstance(Thread.currentThread().getContextClassLoader().loadClass(repClass), logger, config);
+                reply =  (MailRepository) factory.newInstance(Thread.currentThread().getContextClassLoader().loadClass(repClass), logger, config);
 
                 repositories.put(repID, reply);
                 if (getLogger().isInfoEnabled()) {

Modified: james/server/trunk/mail-library/src/test/java/org/apache/james/mailstore/mock/MockMailStore.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mail-library/src/test/java/org/apache/james/mailstore/mock/MockMailStore.java?rev=1050470&r1=1050469&r2=1050470&view=diff
==============================================================================
--- james/server/trunk/mail-library/src/test/java/org/apache/james/mailstore/mock/MockMailStore.java (original)
+++ james/server/trunk/mail-library/src/test/java/org/apache/james/mailstore/mock/MockMailStore.java Fri Dec 17 19:18:58 2010
@@ -21,54 +21,28 @@
 
 package org.apache.james.mailstore.mock;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationUtils;
-import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.mailstore.api.MailStore;
-
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.james.mailrepository.api.MailRepository;
+import org.apache.james.mailstore.api.MailStore;
+
 public class MockMailStore implements MailStore {
 
-    Map m_storedObjectMap = new HashMap();
+    Map<String,MailRepository> m_storedObjectMap = new HashMap<String,MailRepository>();
 
-    public void add(Object key, Object obj) {
-        m_storedObjectMap.put(key, obj);
+    public void add(String url, MailRepository obj) {
+        m_storedObjectMap.put(url, obj);
     }
     
-    public Object select(HierarchicalConfiguration object) throws StoreException {
-        Object result = get(object);
+    public MailRepository select(String url) throws StoreException {
+        MailRepository result = get(url);
         return result;
     }
 
-    private Object get(Object object) {
-        Object key = extractKeyObject(object);
+    private MailRepository get(String key) {
         System.out.println(key);
         return m_storedObjectMap.get(key);
     }
 
-    private Object extractKeyObject(Object object) {
-        if (object instanceof Configuration) {
-            Configuration repConf = (Configuration) object;
-            System.out.println(ConfigurationUtils.toString(repConf));
-
-            String type = repConf.getString("[@type]");
-            String prefix = "";
-            if (!"MAIL".equals(type) && !"SPOOL".equals(type)) {
-                prefix = type + ".";
-            }
-            String attribute = repConf.getString("[@destinationURL]");
-            String[] strings = attribute.split("/");
-            if (strings.length > 0) {
-                return prefix + strings[strings.length - 1];
-            }
-
-        }
-        return object;
-    }
-
-    public boolean isSelectable(Object object) {
-        return get(object) != null;
-    }
 }

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/FromRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/FromRepository.java?rev=1050470&r1=1050469&r2=1050470&view=diff
==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/FromRepository.java (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/FromRepository.java Fri Dec 17 19:18:58 2010
@@ -21,7 +21,6 @@
 
 package org.apache.james.transport.mailets;
 
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailstore.api.MailStore;
@@ -76,7 +75,7 @@ public class FromRepository extends Gene
     /**
      * Initialize the mailet, loading configuration information.
      */
-    public void init() {
+    public void init() throws MessagingException{
         repositoryPath = getInitParameter("repositoryPath");
         processor = (getInitParameter("processor") == null) ? Mail.DEFAULT : getInitParameter("processor");
 
@@ -87,13 +86,9 @@ public class FromRepository extends Gene
         }
 
         try {
-            DefaultConfigurationBuilder mailConf
-                = new DefaultConfigurationBuilder();
-            mailConf.addProperty("[@destinationURL]", repositoryPath);
-            mailConf.addProperty("[@type]", "MAIL");
-            repository = (MailRepository) mailStore.select(mailConf);
+            repository = mailStore.select(repositoryPath);
         } catch (Exception e) {
-            log("Failed to retrieve Store component:" + e.getMessage());
+            throw new MessagingException("Failed to retrieve MailRepository for url " + repositoryPath, e);
         }
     }
 

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ToRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ToRepository.java?rev=1050470&r1=1050469&r2=1050470&view=diff
==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ToRepository.java (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ToRepository.java Fri Dec 17 19:18:58 2010
@@ -22,8 +22,8 @@
 package org.apache.james.transport.mailets;
 
 import javax.annotation.Resource;
+import javax.mail.MessagingException;
 
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailstore.api.MailStore;
 import org.apache.mailet.base.GenericMailet;
@@ -66,7 +66,7 @@ public class ToRepository extends Generi
     /**
      * Initialize the mailet, loading configuration information.
      */
-    public void init() {
+    public void init() throws MessagingException{
         repositoryPath = getInitParameter("repositoryPath");
         try {
             passThrough = new Boolean(getInitParameter("passThrough")).booleanValue();
@@ -75,14 +75,9 @@ public class ToRepository extends Generi
         }
 
         try {
-            DefaultConfigurationBuilder mailConf
-                = new DefaultConfigurationBuilder();
-            mailConf.addProperty("[@destinationURL]", repositoryPath);
-            mailConf.addProperty("[@type]", "MAIL");
-            mailConf.addProperty("[@CACHEKEYS]", getInitParameter("CACHEKEYS","TRUE"));
-            repository = (MailRepository) mailStore.select(mailConf);
+            repository = mailStore.select(repositoryPath);
         } catch (Exception e) {
-            log("Failed to retrieve Store component:" + e.getMessage());
+            throw new MessagingException("Failed to retrieve MailRepository for url " + repositoryPath, e);
         }
 
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org