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 sb...@apache.org on 2011/12/23 15:09:28 UTC

svn commit: r1222684 - in /james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets: LocalDelivery.java ResourceLocatorImpl.java SieveMailet.java

Author: sbrewin
Date: Fri Dec 23 14:09:28 2011
New Revision: 1222684

URL: http://svn.apache.org/viewvc?rev=1222684&view=rev
Log:
JAMES-1355 Switched to using the FileSystem service to obtain the 'sieve' sub-directory of the root directory of the application 

Modified:
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/SieveMailet.java

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java?rev=1222684&r1=1222683&r2=1222684&view=diff
==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java Fri Dec 23 14:09:28 2011
@@ -19,20 +19,21 @@
 
 package org.apache.james.transport.mailets;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.annotation.Resource;
+import javax.mail.MessagingException;
+
 import org.apache.commons.collections.iterators.IteratorChain;
+import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.user.api.UsersRepository;
-import org.apache.mailet.base.GenericMailet;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailetConfig;
 import org.apache.mailet.MailetContext;
-
-import javax.annotation.Resource;
-import javax.mail.MessagingException;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
+import org.apache.mailet.base.GenericMailet;
 
 /**
  * Receives a Mail from JamesSpoolManager and takes care of delivery of the
@@ -57,6 +58,8 @@ public class LocalDelivery extends Gener
     private UsersRepository usersRepository;
 
     private MailboxManager mailboxManager;
+    
+    private FileSystem fileSystem;
 
     @Resource(name = "usersrepository")
     public void setUsersRepository(UsersRepository usersRepository) {
@@ -67,6 +70,11 @@ public class LocalDelivery extends Gener
     public void setMailboxManager(MailboxManager mailboxManager) {
         this.mailboxManager = mailboxManager;
     }
+    
+    @Resource(name = "filesystem")
+    public void setFileSystem(FileSystem fileSystem) {
+        this.fileSystem = fileSystem;
+    }
 
     /**
      * Delivers a mail to a local mailbox.
@@ -148,9 +156,10 @@ public class LocalDelivery extends Gener
         };
         sieveMailet.setUsersRepository(usersRepository);
         sieveMailet.setMailboxManager(mailboxManager);
+        sieveMailet.setFileSystem(fileSystem);
         sieveMailet.init(m);
-
-        sieveMailet.setQuiet(true);
+        // Override the default value of "quiet"
+        sieveMailet.setQuiet(getInitParameter("quiet", true));
     }
 
 }

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java?rev=1222684&r1=1222683&r2=1222684&view=diff
==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java Fri Dec 23 14:09:28 2011
@@ -19,29 +19,34 @@
 
 package org.apache.james.transport.mailets;
 
+import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 
+import org.apache.james.filesystem.api.FileSystem;
 import org.apache.jsieve.mailet.ResourceLocator;
 
 /**
  * To maintain backwards compatibility with existing installations, this uses
- * the old file based scheme. TODO: replace with <code>FileSystem</code> based
- * implementation.
+ * the old file based scheme.
+ * <p> The scripts are stored in the <code>sieve</code> sub directory of the application
+ * installation directory.
  */
 public class ResourceLocatorImpl implements ResourceLocator {
 
     private boolean virtualHosting;
+    
+    private FileSystem fileSystem = null;
 
-    public ResourceLocatorImpl(boolean virtualHosting) {
+    public ResourceLocatorImpl(boolean virtualHosting, FileSystem fileSystem) {
         this.virtualHosting = virtualHosting;
+            this.fileSystem = fileSystem;
     }
 
     public InputStream get(String uri) throws IOException {
-        // This is a toy implementation
-
-        // Use the complete emailaddress for finding the sieve file
+        // Use the complete email address for finding the sieve file
         uri = uri.substring(2);
 
         String username;
@@ -50,8 +55,16 @@ public class ResourceLocatorImpl impleme
         } else {
             username = uri.substring(0, uri.indexOf("@"));
         }
-        String sieveFileName = "../apps/james/var/sieve/" + username + ".sieve";
-        return new FileInputStream(sieveFileName);
+
+        // RFC 5228 permits extensions: .siv .sieve
+        String sieveFilePrefix = FileSystem.FILE_PROTOCOL + "sieve/" + username + ".";
+        File sieveFile = null;
+        try {
+            sieveFile = fileSystem.getFile(sieveFilePrefix + "sieve");
+        } catch (FileNotFoundException ex) {
+            sieveFile = fileSystem.getFile(sieveFilePrefix + "siv");
+        }
+        return new FileInputStream(sieveFile);
     }
 
 }

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/SieveMailet.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/SieveMailet.java?rev=1222684&r1=1222683&r2=1222684&view=diff
==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/SieveMailet.java (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/SieveMailet.java Fri Dec 23 14:09:28 2011
@@ -26,6 +26,8 @@ import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.MimeMessageInputStream;
+import org.apache.james.dnsservice.api.DNSService;
+import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.mailbox.BadCredentialsException;
 import org.apache.james.mailbox.MailboxException;
 import org.apache.james.mailbox.MailboxManager;
@@ -48,6 +50,7 @@ public class SieveMailet extends SieveMa
 
     private UsersRepository usersRepos;
     private MailboxManager mailboxManager;
+    private FileSystem fileSystem;
 
     @Resource(name = "usersrepository")
     public void setUsersRepository(UsersRepository usersRepos) {
@@ -59,11 +62,16 @@ public class SieveMailet extends SieveMa
         this.mailboxManager = mailboxManager;
     }
 
+    @Resource(name = "filesystem")
+    public void setFileSystem(FileSystem fileSystem) {
+        this.fileSystem = fileSystem;
+    }
+    
     @Override
     public void init(MailetConfig config) throws MessagingException {
         // ATM Fixed implementation
         try {
-            setLocator(new ResourceLocatorImpl(usersRepos.supportVirtualHosting()));
+            setLocator(new ResourceLocatorImpl(usersRepos.supportVirtualHosting(), fileSystem));
         } catch (UsersRepositoryException e) {
             throw new MessagingException("Unable to access UsersRepository", e);
         }



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