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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
