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 bt...@apache.org on 2019/03/26 04:39:39 UTC

[james-project] 08/10: JAMES-2682 Sieve should just do nothing when handling Sieve errors

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 9bb878bebcc2bf0451e834536f6c8dbff368071a
Author: Pablo Pita <pa...@gmail.com>
AuthorDate: Mon Mar 18 20:10:35 2019 +0100

    JAMES-2682 Sieve should just do nothing when handling Sieve errors
---
 .../transport/mailets/jsieve/delivery/SieveExecutor.java      | 11 ++++-------
 .../transport/mailets/delivery/SieveIntegrationTest.java      |  4 +++-
 2 files changed, 7 insertions(+), 8 deletions(-)

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 ebb78ce..3fed2ff 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
@@ -39,6 +39,7 @@ import org.apache.jsieve.parser.generated.ParseException;
 import org.apache.jsieve.parser.generated.TokenMgrError;
 import org.apache.mailet.Attribute;
 import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeUtils;
 import org.apache.mailet.AttributeValue;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailetContext;
@@ -119,14 +120,10 @@ public class SieveExecutor {
     public boolean execute(MailAddress recipient, Mail mail) throws MessagingException {
         Preconditions.checkNotNull(recipient, "Recipient for mail to be spooled cannot be null.");
         Preconditions.checkNotNull(mail.getMessage(), "Mail message to be spooled cannot be null.");
-        Optional<Attribute> oSieveNotification = mail.getAttribute(SIEVE_NOTIFICATION);
-        if (oSieveNotification.isPresent()) {
-            AttributeValue<Boolean> attrValue = (AttributeValue<Boolean>) oSieveNotification.get().getValue();
-            if (attrValue.value()) {
-                throw new MessagingException("Do not process Sieve error notification emails");
-            }
+        boolean isSieveNotification = AttributeUtils.getValueAndCastFromMail(mail, SIEVE_NOTIFICATION, Boolean.class).orElse(false);
+        if (isSieveNotification) {
+           	return false;
         }
-        
         return sieveMessage(recipient, mail);
     }
 
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 a287734..29876c8 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
@@ -939,13 +939,15 @@ public class SieveIntegrationTest {
         assertThat(fakeMailContext.getSentMails()).containsExactly(expectedSentMail);
     }
     
-    @Test(expected = MessagingException.class)
+    @Test
     public void sieveErrorNotificationEmailsShouldNotBeProcessed() throws Exception {
         prepareTestUsingScript("org/apache/james/transport/mailets/delivery/keep.script");
 
         FakeMail mail = createMail();
         mail.setAttribute(new Attribute(SieveExecutor.SIEVE_NOTIFICATION, AttributeValue.of(true)));
         testee.service(mail);
+        // check that the Sieve mailet performs normally, and nothing gets into ATTRIBUTE_NAME
+        assertThat(mail.getAttribute(ATTRIBUTE_NAME)).isEmpty();
     }
 
     private void prepareTestUsingScript(final String script) throws Exception {


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