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 ba...@apache.org on 2008/01/15 11:09:42 UTC

svn commit: r612067 - /james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/ToMultiRepository.java

Author: bago
Date: Tue Jan 15 02:09:41 2008
New Revision: 612067

URL: http://svn.apache.org/viewvc?rev=612067&view=rev
Log:
Added repositorySelector configuration to ToMultiRepository (JAMES-833).
<repositorySelector>localpart</repositorySelector> is the default. "full" is an alternative valid value.

Modified:
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/ToMultiRepository.java

Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/ToMultiRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/ToMultiRepository.java?rev=612067&r1=612066&r2=612067&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/ToMultiRepository.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/ToMultiRepository.java Tue Jan 15 02:09:41 2008
@@ -52,7 +52,8 @@
  * 
  * Differently from LocalDelivery this does not lookup the UserRepository This
  * simply store the message in a repository named like the local part of the
- * recipient address.
+ * recipient address or the full recipient address, depending on the configuration
+ * (repositorySelector).
  * 
  * If no repository is specified then this fallback to MailServer.getUserInbox.
  * Otherwise you can add your own configuration for the repository
@@ -65,6 +66,8 @@
  * Header "Delivered-To" can be added to every message adding the
  * <addDeliveryHeader>Delivered-To</addDeliveryHeader>
  * 
+ * <repositorySelector> defaults to "localpart" and can be changed to "full" if you
+ * prefer to use full recipient emails as repository names.
  */
 public class ToMultiRepository extends GenericMailet {
     /**
@@ -92,6 +95,14 @@
      * The optional repositoryType
      */
     private String repositoryType;
+    
+    private final static String SELECTOR_LOCALPART = "localpart";
+    private final static String SELECTOR_FULL = "full";
+    
+    /**
+     * The optional repositorySelector
+     */
+    private String repositorySelector;
 
     /**
      * The delivery header
@@ -264,9 +275,17 @@
 
         repositoryUrl = getInitParameter("repositoryUrl");
         if (repositoryUrl != null) {
+            if (!repositoryUrl.endsWith("/"))
+                repositoryUrl += "/";
             repositoryType = getInitParameter("repositoryType");
             if (repositoryType == null)
                 repositoryType = "MAIL";
+            repositorySelector = getInitParameter("repositorySelector");
+            if (repositorySelector == null)
+                repositorySelector = SELECTOR_LOCALPART;
+            if (!SELECTOR_LOCALPART.equals(repositorySelector) && !SELECTOR_FULL.equals(repositorySelector)) {
+                throw new MessagingException("repositorySelector valid options are "+SELECTOR_FULL+" or "+SELECTOR_LOCALPART);
+            }
         } else {
 
             try {
@@ -297,15 +316,14 @@
         if (repositoryUrl == null) {
             userInbox = mailServer.getUserInbox(userName);
         } else {
-            if (!repositoryUrl.endsWith("/")) {
-        	    repositoryUrl += "/";
+            if (SELECTOR_LOCALPART.equals(repositorySelector)) {
+                // find the username for delivery to that user - localname, ignore the rest
+                String[] addressParts = userName.split("@");
+                userName = addressParts[0];
             }
         	        
-            // find the username for delivery to that user - localname, ignore the rest
-            String[] addressParts = userName.split("@");
-        	        
             StringBuffer destinationBuffer = new StringBuffer(192).append(
-            repositoryUrl).append(addressParts[0]).append("/");
+            repositoryUrl).append(userName).append("/");
             String destination = destinationBuffer.toString();
             DefaultConfiguration mboxConf = new DefaultConfiguration(
                     "repository", "generated:ToMultiRepository.getUserInbox()");



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