You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2023/04/13 04:35:08 UTC

[james-project] 04/05: JAMES-3899 Promote StorageDirective into mailet-api

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 6ce94deb80945ddaf148a16d1c8ae0318ac97e21
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Apr 7 14:03:31 2023 +0700

    JAMES-3899 Promote StorageDirective into mailet-api
    
    This is a very useful trick: now we can rely on it everywhere and
    fully avoid coupling + manually dealing with attributes.
    
    Note that this is acceptable as this is just a POJO with very limited
    logic (encoding + decoding into mail attributes).
---
 .../api/src/main/java/org/apache/mailet}/StorageDirective.java |  7 +------
 .../java/org/apache/james/transport/mailets/RandomStoring.java |  4 +---
 .../org/apache/james/transport/mailets/ToSenderFolder.java     |  2 +-
 .../apache/james/transport/mailets/WithStorageDirective.java   |  2 +-
 .../james/transport/mailets/delivery/MailboxAppender.java      |  1 +
 .../james/transport/mailets/delivery/MailboxAppenderImpl.java  |  1 +
 .../james/transport/mailets/delivery/SimpleMailStore.java      | 10 +---------
 .../james/transport/mailets/jsieve/delivery/SievePoster.java   |  4 +---
 .../transport/mailets/delivery/MailboxAppenderImplTest.java    |  1 +
 .../org/apache/james/jmap/mailet/filter/ActionApplier.java     | 10 +++++++---
 10 files changed, 16 insertions(+), 26 deletions(-)

diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/StorageDirective.java b/mailet/api/src/main/java/org/apache/mailet/StorageDirective.java
similarity index 96%
rename from server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/StorageDirective.java
rename to mailet/api/src/main/java/org/apache/mailet/StorageDirective.java
index 0edb65659e..f931d041fe 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/StorageDirective.java
+++ b/mailet/api/src/main/java/org/apache/mailet/StorageDirective.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.transport.mailets.delivery;
+package org.apache.mailet;
 
 import java.util.Collection;
 import java.util.Optional;
@@ -25,11 +25,6 @@ import java.util.stream.Stream;
 import javax.mail.Flags;
 
 import org.apache.james.core.Username;
-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 com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableSet;
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RandomStoring.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RandomStoring.java
index 36ba29d60f..6b817023d3 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RandomStoring.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RandomStoring.java
@@ -37,11 +37,9 @@ import org.apache.james.core.Username;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.model.search.MailboxQuery;
-import org.apache.james.transport.mailets.delivery.MailStore;
-import org.apache.james.transport.mailets.delivery.StorageDirective;
 import org.apache.james.user.api.UsersRepository;
-import org.apache.mailet.Attribute;
 import org.apache.mailet.Mail;
+import org.apache.mailet.StorageDirective;
 import org.apache.mailet.base.GenericMailet;
 
 import com.github.fge.lambdas.Throwing;
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
index 7c95a58955..cd7a736f35 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
@@ -29,11 +29,11 @@ import org.apache.james.core.MailAddress;
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.transport.mailets.delivery.MailboxAppenderImpl;
-import org.apache.james.transport.mailets.delivery.StorageDirective;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.mailet.Experimental;
 import org.apache.mailet.Mail;
+import org.apache.mailet.StorageDirective;
 import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithStorageDirective.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithStorageDirective.java
index c10bb7aafc..4cc7a2d1c2 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithStorageDirective.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithStorageDirective.java
@@ -26,9 +26,9 @@ import javax.inject.Inject;
 import javax.mail.MessagingException;
 
 import org.apache.james.core.MailAddress;
-import org.apache.james.transport.mailets.delivery.StorageDirective;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.Mail;
+import org.apache.mailet.StorageDirective;
 import org.apache.mailet.base.GenericMailet;
 
 import com.github.fge.lambdas.consumers.ThrowingConsumer;
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
index d40e817315..4ac279db22 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
@@ -24,6 +24,7 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.model.ComposedMessageId;
+import org.apache.mailet.StorageDirective;
 import org.reactivestreams.Publisher;
 
 public interface MailboxAppender {
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppenderImpl.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppenderImpl.java
index ca0d06f056..910279bd54 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppenderImpl.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppenderImpl.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.model.Content;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.server.core.MimeMessageInputStream;
 import org.apache.james.server.core.MimeMessageUtil;
+import org.apache.mailet.StorageDirective;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
index d63795f121..c9e1620487 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
@@ -19,11 +19,6 @@
 
 package org.apache.james.transport.mailets.delivery;
 
-import java.util.Collection;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import javax.mail.Flags;
 import javax.mail.MessagingException;
 
 import org.apache.james.core.MailAddress;
@@ -31,11 +26,8 @@ import org.apache.james.core.Username;
 import org.apache.james.metrics.api.Metric;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
-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.StorageDirective;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
index a43aa33932..1984c8aeca 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
@@ -25,13 +25,11 @@ import javax.mail.MessagingException;
 
 import org.apache.james.core.MailAddress;
 import org.apache.james.core.Username;
-import org.apache.james.transport.mailets.delivery.MailStore;
-import org.apache.james.transport.mailets.delivery.StorageDirective;
 import org.apache.james.transport.mailets.jsieve.Poster;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
-import org.apache.mailet.Attribute;
 import org.apache.mailet.Mail;
+import org.apache.mailet.StorageDirective;
 
 public class SievePoster implements Poster {
     private final String folder;
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderImplTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderImplTest.java
index 46498ea7c6..9bcc48b68b 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderImplTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderImplTest.java
@@ -39,6 +39,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageResultIterator;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
+import org.apache.mailet.StorageDirective;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.RepeatedTest;
 import org.junit.jupiter.api.Test;
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/filter/ActionApplier.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/filter/ActionApplier.java
index 4883425292..e9ce7b9954 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/filter/ActionApplier.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/filter/ActionApplier.java
@@ -30,8 +30,8 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.MailboxId;
-import org.apache.mailet.Attribute;
 import org.apache.mailet.Mail;
+import org.apache.mailet.StorageDirective;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -98,8 +98,12 @@ public class ActionApplier {
             MessageManager messageManager = mailboxManager.getMailbox(mailboxId, mailboxSession);
 
             String mailboxName = messageManager.getMailboxPath().getName();
-            String attributeNameForUser = DELIVERY_PATH_PREFIX + username.asString();
-            mail.setAttribute(Attribute.convertToAttribute(attributeNameForUser, mailboxName));
+
+            StorageDirective.builder()
+                .targetFolder(mailboxName)
+                .build()
+                .encodeAsAttributes(username)
+                .forEach(mail::setAttribute);
         } catch (MailboxNotFoundException e) {
             LOGGER.info("Mailbox {} does not exist, but it was mentioned in a JMAP filtering rule", mailboxId, e);
         } catch (Exception e) {


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