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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org