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 2017/01/11 09:26:02 UTC
[14/50] [abbrv] james-project git commit: MAILET-115 Remove abstract
getSender implementation
MAILET-115 Remove abstract getSender implementation
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/734a656d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/734a656d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/734a656d
Branch: refs/heads/master
Commit: 734a656de18ca9190d3c76c4595782cd32d83d4f
Parents: ee14bc1
Author: Antoine Duprat <ad...@apache.org>
Authored: Mon Nov 14 16:52:39 2016 +0100
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Jan 11 10:03:29 2017 +0700
----------------------------------------------------------------------
.../apache/james/transport/mailets/Bounce.java | 6 +
.../james/transport/mailets/DSNBounce.java | 6 +
.../transport/mailets/NotifyPostmaster.java | 6 +
.../james/transport/mailets/NotifySender.java | 6 +
.../james/transport/mailets/Redirect.java | 6 +
.../apache/james/transport/mailets/Resend.java | 6 +
.../mailets/redirect/AbstractRedirect.java | 18 +--
.../james/transport/util/SenderUtils.java | 57 +++++++++
.../james/transport/util/SenderUtilsTest.java | 118 +++++++++++++++++++
9 files changed, 212 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/734a656d/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
index e922d0e..9429bf5 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
@@ -31,6 +31,7 @@ import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
import org.apache.james.transport.mailets.redirect.SpecialAddress;
import org.apache.james.transport.mailets.utils.MimeMessageModifier;
import org.apache.james.transport.util.ReversePathUtils;
+import org.apache.james.transport.util.SenderUtils;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
@@ -163,6 +164,11 @@ public class Bounce extends AbstractRedirect {
}
@Override
+ protected MailAddress getSender() throws MessagingException {
+ return SenderUtils.from(this).getSender();
+ }
+
+ @Override
protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException {
new MimeMessageModifier(originalMail.getMessage()).addSubjectPrefix(subjectPrefix);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/734a656d/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
index b9f10f5..0d0b795 100755
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
@@ -41,6 +41,7 @@ import org.apache.james.transport.mailets.redirect.TypeCode;
import org.apache.james.transport.mailets.utils.MimeMessageModifier;
import org.apache.james.transport.util.Patterns;
import org.apache.james.transport.util.ReversePathUtils;
+import org.apache.james.transport.util.SenderUtils;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.apache.mailet.base.DateFormats;
@@ -155,6 +156,11 @@ public class DSNBounce extends AbstractRedirect {
}
@Override
+ protected MailAddress getSender() throws MessagingException {
+ return SenderUtils.from(this).getSender();
+ }
+
+ @Override
protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException {
new MimeMessageModifier(originalMail.getMessage()).addSubjectPrefix(subjectPrefix);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/734a656d/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
index fdc0fe8..4b90ac8 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
@@ -32,6 +32,7 @@ import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
import org.apache.james.transport.mailets.redirect.SpecialAddress;
import org.apache.james.transport.mailets.utils.MimeMessageModifier;
import org.apache.james.transport.util.ReversePathUtils;
+import org.apache.james.transport.util.SenderUtils;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.apache.mailet.MailetConfig;
@@ -180,6 +181,11 @@ public class NotifyPostmaster extends AbstractRedirect {
}
@Override
+ protected MailAddress getSender() throws MessagingException {
+ return SenderUtils.from(this).getSender();
+ }
+
+ @Override
protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException {
new MimeMessageModifier(originalMail.getMessage()).addSubjectPrefix(subjectPrefix);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/734a656d/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
index e54d5ba..0299a06 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
@@ -32,6 +32,7 @@ import org.apache.james.transport.mailets.redirect.NotifyMailetsMessage;
import org.apache.james.transport.mailets.redirect.SpecialAddress;
import org.apache.james.transport.mailets.utils.MimeMessageModifier;
import org.apache.james.transport.util.ReversePathUtils;
+import org.apache.james.transport.util.SenderUtils;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.apache.mailet.MailetConfig;
@@ -180,6 +181,11 @@ public class NotifySender extends AbstractRedirect {
}
@Override
+ protected MailAddress getSender() throws MessagingException {
+ return SenderUtils.from(this).getSender();
+ }
+
+ @Override
protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException {
new MimeMessageModifier(originalMail.getMessage()).addSubjectPrefix(subjectPrefix);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/734a656d/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
index 1de0a9f..b31f609 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
@@ -31,6 +31,7 @@ import org.apache.james.transport.mailets.redirect.RedirectMailetInitParameters;
import org.apache.james.transport.mailets.redirect.TypeCode;
import org.apache.james.transport.mailets.utils.MimeMessageModifier;
import org.apache.james.transport.util.MailAddressUtils;
+import org.apache.james.transport.util.SenderUtils;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
@@ -407,6 +408,11 @@ public class Redirect extends AbstractRedirect {
}
@Override
+ protected MailAddress getSender() throws MessagingException {
+ return SenderUtils.from(this).getSender();
+ }
+
+ @Override
protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException {
new MimeMessageModifier(newMail.getMessage())
.setSubjectPrefix(newMail, subjectPrefix, originalMail, getInitParameters().getSubject());
http://git-wip-us.apache.org/repos/asf/james-project/blob/734a656d/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
index afa41e2..d2aa272 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
@@ -31,6 +31,7 @@ import org.apache.james.transport.mailets.redirect.RedirectMailetInitParameters;
import org.apache.james.transport.mailets.utils.MimeMessageModifier;
import org.apache.james.transport.util.MailAddressUtils;
import org.apache.james.transport.util.ReversePathUtils;
+import org.apache.james.transport.util.SenderUtils;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
@@ -362,6 +363,11 @@ public class Resend extends AbstractRedirect {
}
@Override
+ protected MailAddress getSender() throws MessagingException {
+ return SenderUtils.from(this).getSender();
+ }
+
+ @Override
protected void setSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException {
new MimeMessageModifier(newMail.getMessage())
.setSubjectPrefix(newMail, subjectPrefix, originalMail, getInitParameters().getSubject());
http://git-wip-us.apache.org/repos/asf/james-project/blob/734a656d/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
index 97ccdbc..faf359f 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AbstractRedirect.java
@@ -48,9 +48,6 @@ import org.apache.mailet.base.DateFormats;
import org.apache.mailet.base.GenericMailet;
import org.apache.mailet.base.RFC2822Headers;
-import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableList;
-
/**
* <p>
* Abstract mailet providing configurable redirection services.<br>
@@ -388,20 +385,7 @@ public abstract class AbstractRedirect extends GenericMailet {
* <code>SpecialAddress.UNALTERED</code> or <code>null</code> if
* missing
*/
- protected MailAddress getSender() throws MessagingException {
- String sender = getInitParameters().getSender();
- if (Strings.isNullOrEmpty(sender)) {
- return null;
- }
-
- List<MailAddress> extractAddresses = AddressExtractor.withContext(getMailetContext())
- .allowedSpecials(ImmutableList.of("postmaster", "sender", "unaltered"))
- .extract(sender);
- if (extractAddresses.isEmpty()) {
- return null;
- }
- return extractAddresses.get(0);
- }
+ protected abstract MailAddress getSender() throws MessagingException;
/**
* Gets the <code>sender</code> property, built dynamically using the
http://git-wip-us.apache.org/repos/asf/james-project/blob/734a656d/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
new file mode 100644
index 0000000..20c73ea
--- /dev/null
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
@@ -0,0 +1,57 @@
+/****************************************************************
+ * 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.util;
+
+import java.util.List;
+
+import javax.mail.MessagingException;
+
+import org.apache.james.transport.mailets.redirect.AbstractRedirect;
+import org.apache.james.transport.mailets.redirect.AddressExtractor;
+import org.apache.mailet.MailAddress;
+
+import com.google.common.base.Strings;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
+
+public class SenderUtils {
+
+ public static SenderUtils from(AbstractRedirect mailet) {
+ return new SenderUtils(mailet);
+ }
+
+ private final AbstractRedirect mailet;
+
+ private SenderUtils(AbstractRedirect mailet) {
+ this.mailet = mailet;
+ }
+
+ public MailAddress getSender() throws MessagingException {
+ String sender = mailet.getInitParameters().getSender();
+ if (Strings.isNullOrEmpty(sender)) {
+ return null;
+ }
+
+ List<MailAddress> extractAddresses = AddressExtractor
+ .withContext(mailet.getMailetContext())
+ .allowedSpecials(ImmutableList.of("postmaster", "sender", "unaltered"))
+ .extract(sender);
+ return FluentIterable.from(extractAddresses).first().orNull();
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/734a656d/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
new file mode 100644
index 0000000..50af2ce
--- /dev/null
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
@@ -0,0 +1,118 @@
+/****************************************************************
+ * 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.util;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.james.transport.mailets.redirect.AbstractRedirect;
+import org.apache.james.transport.mailets.redirect.InitParameters;
+import org.apache.james.transport.mailets.redirect.SpecialAddress;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.MailetContext;
+import org.junit.Before;
+import org.junit.Test;
+
+public class SenderUtilsTest {
+
+ private InitParameters initParameters;
+ private MailAddress postmaster;
+ private SenderUtils testee;
+
+ @Before
+ public void setup() throws Exception {
+ AbstractRedirect mailet = mock(AbstractRedirect.class);
+ initParameters = mock(InitParameters.class);
+ when(mailet.getInitParameters())
+ .thenReturn(initParameters);
+
+ MailetContext mailetContext = mock(MailetContext.class);
+ postmaster = new MailAddress("postmaster@james.org");
+ when(mailetContext.getPostmaster())
+ .thenReturn(postmaster);
+ when(mailet.getMailetContext())
+ .thenReturn(mailetContext);
+
+ testee = SenderUtils.from(mailet);
+ }
+
+ @Test
+ public void getSenderShouldReturnNullWhenSenderInitParameterIsNull() throws Exception {
+ when(initParameters.getSender())
+ .thenReturn(null);
+
+ MailAddress sender = testee.getSender();
+
+ assertThat(sender).isNull();
+ }
+
+ @Test
+ public void getSenderShouldReturnNullWhenSenderInitParameterIsEmpty() throws Exception {
+ when(initParameters.getSender())
+ .thenReturn("");
+
+ MailAddress sender = testee.getSender();
+
+ assertThat(sender).isNull();
+ }
+
+ @Test
+ public void getSenderShouldReturnFirstMailAddressWhenMultipleAddresses() throws Exception {
+ when(initParameters.getSender())
+ .thenReturn("test@james.org, test2@james.org");
+
+ MailAddress sender = testee.getSender();
+
+ MailAddress expectedMailAddress = new MailAddress("test", "james.org");
+ assertThat(sender).isEqualTo(expectedMailAddress);
+ }
+
+ @Test
+ public void getSenderShouldReturnPostmasterSpecialAddressWhenFirstAddressIsSpecialPostmaster() throws Exception {
+ when(initParameters.getSender())
+ .thenReturn("postmaster, test2@james.org");
+
+ MailAddress sender = testee.getSender();
+
+ assertThat(sender).isEqualTo(postmaster);
+ }
+
+ @Test
+ public void getSenderShouldReturnSenderSpecialAddressWhenFirstAddressIsSpecialSender() throws Exception {
+ when(initParameters.getSender())
+ .thenReturn("sender, test2@james.org");
+
+ MailAddress sender = testee.getSender();
+
+ MailAddress expectedMailAddress = SpecialAddress.SENDER;
+ assertThat(sender).isEqualTo(expectedMailAddress);
+ }
+
+ @Test
+ public void getSenderShouldReturnUnalteredSpecialAddressWhenFirstAddressIsSpecialUnaltered() throws Exception {
+ when(initParameters.getSender())
+ .thenReturn("unaltered, test2@james.org");
+
+ MailAddress sender = testee.getSender();
+
+ MailAddress expectedMailAddress = SpecialAddress.UNALTERED;
+ assertThat(sender).isEqualTo(expectedMailAddress);
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org