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