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 ro...@apache.org on 2016/11/23 13:50:39 UTC

[36/46] james-project git commit: JAMES-1854 Rework resourceLocator API

JAMES-1854 Rework resourceLocator API

 - Simplify API by using mailAddresses
 - Merge interface and subclass as genericity is not needed


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/296bb643
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/296bb643
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/296bb643

Branch: refs/heads/master
Commit: 296bb643896cb2189c09c12bd573dc13fb72c387
Parents: ac530c0
Author: Benoit Tellier <bt...@linagora.com>
Authored: Sun Nov 20 23:55:09 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Nov 23 18:19:35 2016 +0700

----------------------------------------------------------------------
 .../transport/mailets/ResourceLocatorImpl.java  | 62 ------------------
 .../apache/james/transport/mailets/Sieve.java   |  3 +-
 .../mailets/jsieve/ResourceLocator.java         | 69 ++++++++------------
 .../mailets/jsieve/delivery/SieveExecutor.java  | 37 ++---------
 .../mailets/ResourceLocatorImplTest.java        | 57 ----------------
 .../transport/mailets/ResourceLocatorTest.java  | 69 ++++++++++++++++++++
 .../mailets/delivery/SieveIntegrationTest.java  | 19 +++++-
 7 files changed, 117 insertions(+), 199 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/296bb643/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java
deleted file mode 100644
index bf8978e..0000000
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ResourceLocatorImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.transport.mailets;
-
-import org.apache.james.sieverepository.api.SieveRepository;
-import org.apache.james.sieverepository.api.exception.SieveRepositoryException;
-import org.apache.james.transport.mailets.jsieve.ResourceLocator;
-import org.apache.james.user.api.UsersRepository;
-import org.apache.james.user.api.UsersRepositoryException;
-import org.joda.time.DateTime;
-
-import javax.mail.MessagingException;
-
-public class ResourceLocatorImpl implements ResourceLocator {
-
-    public static ResourceLocatorImpl instanciate(UsersRepository usersRepository, SieveRepository sieveRepository) throws MessagingException {
-        try {
-            return new ResourceLocatorImpl(usersRepository.supportVirtualHosting(), sieveRepository);
-        } catch (UsersRepositoryException e) {
-            throw new MessagingException("Unable to access UsersRepository", e);
-        }
-    }
-
-    private final boolean virtualHosting;
-    private final SieveRepository sieveRepository;
-
-    public ResourceLocatorImpl(boolean virtualHosting, SieveRepository sieveRepository) {
-        this.virtualHosting = virtualHosting;
-        this.sieveRepository = sieveRepository;
-    }
-
-    public UserSieveInformation get(String uri) throws SieveRepositoryException {
-        // Use the complete email address for finding the sieve file
-        uri = uri.substring(2);
-
-        String username;
-        if (virtualHosting) {
-            username = uri.substring(0, uri.indexOf("/"));
-        } else {
-            username = uri.substring(0, uri.indexOf("@"));
-        }
-
-        return new UserSieveInformation(sieveRepository.getActivationDateForActiveScript(username), DateTime.now(), sieveRepository.getActive(username));
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/296bb643/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java
index 56c7f1d..92c4bc6 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java
@@ -54,7 +54,7 @@ public class Sieve extends GenericMailet {
 
     @Inject
     public Sieve(UsersRepository usersRepository, SieveRepository sieveRepository) throws MessagingException {
-        this(usersRepository, ResourceLocatorImpl.instanciate(usersRepository, sieveRepository));
+        this(usersRepository, new ResourceLocator(sieveRepository, usersRepository));
     }
 
     public Sieve(UsersRepository usersRepository, ResourceLocator resourceLocator) throws MessagingException {
@@ -76,7 +76,6 @@ public class Sieve extends GenericMailet {
             .build();
         sieveExecutor = SieveExecutor.builder()
             .resourceLocator(resourceLocator)
-            .usersRepository(usersRepository)
             .mailetContext(getMailetContext())
             .log(log)
             .sievePoster(new SievePoster(usersRepository, MailboxConstants.INBOX))

http://git-wip-us.apache.org/repos/asf/james-project/blob/296bb643/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java
index 01d38a5..b87b82a 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/ResourceLocator.java
@@ -18,46 +18,17 @@
  ****************************************************************/
 package org.apache.james.transport.mailets.jsieve;
 
+import org.apache.james.sieverepository.api.SieveRepository;
+import org.apache.james.user.api.UsersRepository;
+import org.apache.james.user.api.UsersRepositoryException;
+import org.apache.mailet.MailAddress;
 import org.joda.time.DateTime;
 
 import java.io.InputStream;
 
-/**
- * <p>Experimental API locates resources. 
- * Used to load Sieve scripts. The base for relative URLs
- * should be taken to be the root of the James configuration.
- * </p><p>
- * Required schemas:
- * </p>
- * <ul>
- * <li><strong>User sieve scripts</strong> - the relative URL scheme 
- * <code>//<em>user</em>@<em>host</em>/<em>sieve</em> will be used to
- * obtain the script
- * </ul>
- * <p>
- * The advantage of using <code>URI</code>s 
- * and verbs (for example <code>GET</code>, <code>POST</code>)
- * are their uniformity. The same API can be used to interface radically
- * different resource types and protocols. This allows concise, minimal,
- * powerful APIs to be created. Their simplicity is easy to preserved 
- * across versions. 
- * </p><p>
- * The disadvantage is that this free decouple means that there is 
- * no gaurantee that the implementations decoupled by this interface
- * actually support the same scheme. Issues will be caught only 
- * at deployment and not at compile time.
- * This places a larger burden on the deployer.
- * </p><p>
- * Either an understanding or a consistent URL mapping scheme may be 
- * required. For example, <code>//john.smith@localhost/sieve</code>
- * may need to be resolved to <code>../apps/james/var/sieve/john.smith@localhost.sieve</code>
- * when using the file system to store scripts. Note that names <strong>MUST</strong>
- * be normalised before resolving on a file system.
- * </p>
- */
-public interface ResourceLocator {
+public class ResourceLocator {
 
-    class UserSieveInformation {
+    public static class UserSieveInformation {
         private DateTime scriptActivationDate;
         private DateTime scriptInterpretationDate;
         private InputStream scriptContent;
@@ -81,12 +52,26 @@ public interface ResourceLocator {
         }
     }
 
-    /**
-     * GET verb locates and loads a resource. 
-     * @param uri identifies the Sieve script 
-     * @return not null
-     * @throws Exception when the resource cannot be located
-     */
-    UserSieveInformation get(String uri) throws Exception;
+    private final SieveRepository sieveRepository;
+    private final UsersRepository usersRepository;
+
+    public ResourceLocator(SieveRepository sieveRepository, UsersRepository usersRepository) {
+        this.sieveRepository = sieveRepository;
+        this.usersRepository = usersRepository;
+    }
+
+    public UserSieveInformation get(MailAddress mailAddress) throws Exception {
+        String username = retrieveUsername(mailAddress);
+        return new UserSieveInformation(sieveRepository.getActivationDateForActiveScript(username), DateTime.now(), sieveRepository.getActive(username));
+    }
+
+    private String retrieveUsername(MailAddress mailAddress) {
+        try {
+            return usersRepository.getUser(mailAddress);
+        } catch (UsersRepositoryException e) {
+
+            return mailAddress.asString();
+        }
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/296bb643/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
index e6b7700..feb9c37 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
@@ -26,12 +26,9 @@ import javax.mail.MessagingException;
 
 import org.apache.commons.logging.Log;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
-import org.apache.james.transport.mailets.delivery.DeliveryUtils;
 import org.apache.james.transport.mailets.jsieve.ActionDispatcher;
 import org.apache.james.transport.mailets.jsieve.ResourceLocator;
 import org.apache.james.transport.mailets.jsieve.SieveMailAdapter;
-import org.apache.james.user.api.UsersRepository;
-import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.jsieve.ConfigurationManager;
 import org.apache.jsieve.SieveConfigurationException;
 import org.apache.jsieve.SieveFactory;
@@ -53,16 +50,10 @@ public class SieveExecutor {
 
     public static class Builder {
         private MailetContext mailetContext;
-        private UsersRepository usersRepos;
         private SievePoster sievePoster;
         private ResourceLocator resourceLocator;
         private Log log;
 
-        public Builder usersRepository(UsersRepository usersRepository) {
-            this.usersRepos = usersRepository;
-            return this;
-        }
-
         public Builder sievePoster(SievePoster sievePoster) {
             this.sievePoster = sievePoster;
             return this;
@@ -85,26 +76,23 @@ public class SieveExecutor {
 
         public SieveExecutor build() throws MessagingException {
             Preconditions.checkNotNull(mailetContext);
-            Preconditions.checkNotNull(usersRepos);
             Preconditions.checkNotNull(resourceLocator);
             Preconditions.checkNotNull(log);
             Preconditions.checkNotNull(sievePoster);
-            return new SieveExecutor(mailetContext, usersRepos, sievePoster, resourceLocator, log);
+            return new SieveExecutor(mailetContext, sievePoster, resourceLocator, log);
         }
     }
 
     private final MailetContext mailetContext;
-    private final UsersRepository usersRepos;
     private final SievePoster sievePoster;
     private final ResourceLocator resourceLocator;
     private final SieveFactory factory;
     private final ActionDispatcher actionDispatcher;
     private final Log log;
 
-    public SieveExecutor(MailetContext mailetContext, UsersRepository usersRepos, SievePoster sievePoster,
+    public SieveExecutor(MailetContext mailetContext, SievePoster sievePoster,
                          ResourceLocator resourceLocator, Log log) throws MessagingException {
         this.mailetContext = mailetContext;
-        this.usersRepos = usersRepos;
         this.sievePoster = sievePoster;
         this.resourceLocator = resourceLocator;
         factory = createFactory(log);
@@ -131,7 +119,7 @@ public class SieveExecutor {
 
     protected void sieveMessage(MailAddress recipient, Mail aMail, Log log) throws MessagingException {
         try {
-            ResourceLocator.UserSieveInformation userSieveInformation = resourceLocator.get(getScriptUri(recipient));
+            ResourceLocator.UserSieveInformation userSieveInformation = resourceLocator.get(recipient);
             sieveMessageEvaluate(recipient, aMail, userSieveInformation, log);
         } catch (ScriptNotFoundException e) {
             log.info("Can not locate SIEVE script for user " + recipient.asPrettyString());
@@ -147,7 +135,7 @@ public class SieveExecutor {
                 userSieveInformation.getScriptInterpretationDate(), recipient);
             aMailAdapter.setLog(log);
             // This logging operation is potentially costly
-            log.debug("Evaluating " + aMailAdapter.toString() + "against \"" + getScriptUri(recipient) + "\"");
+            log.debug("Evaluating " + aMailAdapter.toString() + " against \"" + recipient.asPrettyString() + "\"");
             factory.evaluate(aMailAdapter, factory.parse(userSieveInformation.getScriptContent()));
         } catch (SieveException ex) {
             handleFailure(recipient, aMail, ex);
@@ -160,24 +148,7 @@ public class SieveExecutor {
         }
     }
 
-    protected String getScriptUri(MailAddress m) {
-        return "//" + retrieveUserNameUsedForScriptStorage(m) + "/sieve";
-    }
-
     protected void handleFailure(MailAddress recipient, Mail aMail, Exception ex) throws MessagingException, IOException {
         mailetContext.sendMail(recipient, ImmutableList.of(recipient), SieveFailureMessageComposer.composeMessage(aMail, ex, recipient.toString()));
     }
-
-    public String retrieveUserNameUsedForScriptStorage(MailAddress mailAddress) {
-        try {
-            if (usersRepos.supportVirtualHosting()) {
-                return mailAddress.asString();
-            } else {
-                return mailAddress.getLocalPart() + "@localhost";
-            }
-        } catch (UsersRepositoryException e) {
-            log.warn("Can not determine if virtual hosting is used for " + mailAddress.asPrettyString(), e);
-            return mailAddress.getLocalPart() + "@localhost";
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/296bb643/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ResourceLocatorImplTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ResourceLocatorImplTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ResourceLocatorImplTest.java
deleted file mode 100644
index adeee4e..0000000
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ResourceLocatorImplTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.transport.mailets;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.apache.james.sieverepository.api.SieveRepository;
-import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
-public class ResourceLocatorImplTest {
-
-    private SieveRepository sieveRepository;
-    private ResourceLocatorImpl resourceLocator;
-
-    @Before
-    public void setUp() {
-        sieveRepository = mock(SieveRepository.class);
-        resourceLocator = new ResourceLocatorImpl(true, sieveRepository);
-    }
-
-    @Test(expected = ScriptNotFoundException.class)
-    public void resourceLocatorImplShouldPropagateScriptNotFound() throws Exception {
-        when(sieveRepository.getActive("receiver@localhost")).thenThrow(new ScriptNotFoundException());
-        resourceLocator.get("//receiver@localhost/sieve");
-    }
-
-    @Test
-    public void resourceLocatorImplShouldWork() throws Exception {
-        InputStream inputStream = new ByteArrayInputStream(new byte[0]);
-        when(sieveRepository.getActive("receiver@localhost")).thenReturn(inputStream);
-        assertThat(resourceLocator.get("//receiver@localhost/sieve").getScriptContent()).isEqualTo(inputStream);
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/296bb643/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ResourceLocatorTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ResourceLocatorTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ResourceLocatorTest.java
new file mode 100644
index 0000000..79a12c0
--- /dev/null
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ResourceLocatorTest.java
@@ -0,0 +1,69 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.transport.mailets;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.james.sieverepository.api.SieveRepository;
+import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
+import org.apache.james.transport.mailets.jsieve.ResourceLocator;
+import org.apache.james.user.api.UsersRepository;
+import org.apache.mailet.MailAddress;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+public class ResourceLocatorTest {
+
+    public static final String RECEIVER_LOCALHOST = "receiver@localhost";
+    private SieveRepository sieveRepository;
+    private ResourceLocator resourceLocator;
+    private MailAddress mailAddress;
+    private UsersRepository usersRepository;
+
+    @Before
+    public void setUp() throws Exception {
+        sieveRepository = mock(SieveRepository.class);
+        usersRepository = mock(UsersRepository.class);
+        resourceLocator = new ResourceLocator(sieveRepository, usersRepository);
+        mailAddress = new MailAddress(RECEIVER_LOCALHOST);
+    }
+
+    @Test(expected = ScriptNotFoundException.class)
+    public void resourceLocatorImplShouldPropagateScriptNotFound() throws Exception {
+        when(sieveRepository.getActive(RECEIVER_LOCALHOST)).thenThrow(new ScriptNotFoundException());
+        when(usersRepository.getUser(mailAddress)).thenReturn(RECEIVER_LOCALHOST);
+
+        resourceLocator.get(mailAddress);
+    }
+
+    @Test
+    public void resourceLocatorImplShouldWork() throws Exception {
+        InputStream inputStream = new ByteArrayInputStream(new byte[0]);
+        when(sieveRepository.getActive(RECEIVER_LOCALHOST)).thenReturn(inputStream);
+        when(usersRepository.getUser(mailAddress)).thenReturn(RECEIVER_LOCALHOST);
+
+        assertThat(resourceLocator.get(mailAddress).getScriptContent()).isEqualTo(inputStream);
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/296bb643/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
index 481b5d5..0e669e9 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
@@ -92,10 +92,23 @@ public class SieveIntegrationTest {
     }
 
     @Test
+    public void serviceShouldNotModifyEmailWhenErrorRetrievingScript() throws Exception {
+        when(usersRepository.supportVirtualHosting()).thenReturn(true);
+        when(usersRepository.getUser(new MailAddress(RECEIVER_DOMAIN_COM))).thenReturn(RECEIVER_DOMAIN_COM);
+        when(resourceLocator.get(new MailAddress(RECEIVER_DOMAIN_COM))).thenThrow(new ScriptNotFoundException());
+
+        FakeMail mail = createMail();
+        testee.service(mail);
+
+        assertThat(mail.getAttribute(MailStore.DELIVERY_PATH_PREFIX + RECEIVER_DOMAIN_COM)).isNull();
+        assertThat(mail.getState()).isEqualTo(Mail.DEFAULT);
+    }
+
+    @Test
     public void mailShouldBeWellDeliveredByDefaultToUserWhenVirtualHostingIsTurnedOn() throws Exception {
+        prepareTestUsingScript("org/apache/james/transport/mailets/delivery/keep.script");
         when(usersRepository.supportVirtualHosting()).thenReturn(true);
         when(usersRepository.getUser(new MailAddress(RECEIVER_DOMAIN_COM))).thenReturn(RECEIVER_DOMAIN_COM);
-        when(resourceLocator.get(RECEIVER_DOMAIN_COM)).thenThrow(new ScriptNotFoundException());
 
         FakeMail mail = createMail();
         testee.service(mail);
@@ -105,9 +118,9 @@ public class SieveIntegrationTest {
 
     @Test
     public void mailShouldBeWellDeliveredByDefaultToUserWhenvirtualHostingIsTurnedOff() throws Exception {
+        prepareTestUsingScript("org/apache/james/transport/mailets/delivery/keep.script");
         when(usersRepository.supportVirtualHosting()).thenReturn(false);
         when(usersRepository.getUser(new MailAddress("receiver@localhost"))).thenReturn("receiver");
-        when(resourceLocator.get("receiver")).thenThrow(new ScriptNotFoundException());
 
         FakeMail mail = createMail();
         testee.service(mail);
@@ -914,7 +927,7 @@ public class SieveIntegrationTest {
         when(usersRepository.supportVirtualHosting()).thenReturn(false);
         when(usersRepository.getUser(new MailAddress(LOCAL_PART + "@localhost"))).thenReturn(LOCAL_PART);
         when(usersRepository.getUser(new MailAddress(LOCAL_PART + "@domain.com"))).thenReturn(LOCAL_PART);
-        when(resourceLocator.get("//" + LOCAL_PART + "@localhost/sieve")).thenReturn(new ResourceLocator.UserSieveInformation(scriptCreationDate,
+        when(resourceLocator.get(new MailAddress(RECEIVER_DOMAIN_COM))).thenReturn(new ResourceLocator.UserSieveInformation(scriptCreationDate,
             scriptExecutionDate,
             ClassLoader.getSystemResourceAsStream(script)));
     }


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