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