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 ad...@apache.org on 2016/10/20 06:41:59 UTC
[1/2] james-project git commit: MAILET-104: Ensure
RemoveMailAttributes has a good coverage and meet new standards
Repository: james-project
Updated Branches:
refs/heads/master 7dbbdee6d -> 1ce23080e
MAILET-104: Ensure RemoveMailAttributes has a good coverage and meet new standards
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/665a11a7
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/665a11a7
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/665a11a7
Branch: refs/heads/master
Commit: 665a11a7d3209563a1fed645617baa7d6624ba5a
Parents: 2fda869
Author: Quynh Nguyen <qn...@linagora.com>
Authored: Mon Oct 3 17:20:24 2016 +0700
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Thu Oct 20 13:38:52 2016 +0700
----------------------------------------------------------------------
.../transport/mailets/RemoveMailAttribute.java | 62 +++++-----
.../mailets/RemoveMailAttributeTest.java | 115 ++++++++++++-------
2 files changed, 102 insertions(+), 75 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/665a11a7/mailet/standard/src/main/java/org/apache/james/transport/mailets/RemoveMailAttribute.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/RemoveMailAttribute.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/RemoveMailAttribute.java
index 97e4d4d..aaf3193 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/RemoveMailAttribute.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/RemoveMailAttribute.java
@@ -21,12 +21,14 @@
package org.apache.james.transport.mailets;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableList;
import org.apache.mailet.base.GenericMailet;
import org.apache.mailet.Mail;
import org.apache.mailet.MailetException;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
import javax.mail.MessagingException;
/**
@@ -44,50 +46,38 @@ import javax.mail.MessagingException;
* @since 2.2.0
*/
public class RemoveMailAttribute extends GenericMailet {
-
- private final ArrayList<String> attributesToRemove = new ArrayList<String>();
-
- /**
- * Return a string describing this mailet.
- *
- * @return a string describing this mailet
- */
+
+ private static final char ATTRIBUTE_SEPARATOR_CHAR = ',';
+ protected static final String MAILET_NAME_PARAMETER = "name";
+
+ private ImmutableList<String> attributesToRemove;
+
public String getMailetInfo() {
return "Remove Mail Attribute Mailet";
}
- /**
- * Initialize the mailet
- *
- * @throws MailetException if the processor parameter is missing
- */
- public void init() throws MailetException
- {
- String name = getInitParameter("name");
+ @Override
+ public void init() throws MailetException {
+ String name = getInitParameter(MAILET_NAME_PARAMETER);
- if (name != null) {
- StringTokenizer st = new StringTokenizer(name, ",") ;
- while (st.hasMoreTokens()) {
- String attribute_name = st.nextToken().trim() ;
- attributesToRemove.add(attribute_name);
- }
- } else {
+ if (Strings.isNullOrEmpty(name)) {
throw new MailetException("Please configure at least one attribute to remove");
}
+
+ attributesToRemove = getAttributes(name);
}
- /**
- * Remove the configured attributes
- *
- * @param mail the mail to process
- *
- * @throws MessagingException in all cases
- */
+ private ImmutableList<String> getAttributes(String name) {
+ return ImmutableList.copyOf(Splitter.on(ATTRIBUTE_SEPARATOR_CHAR)
+ .trimResults()
+ .split(name));
+ }
+
+ @Override
public void service(Mail mail) throws MessagingException {
- for (String anAttributesToRemove : attributesToRemove) {
- mail.removeAttribute(anAttributesToRemove);
+ Preconditions.checkNotNull(mail);
+ for (String attributeToRemove : attributesToRemove) {
+ mail.removeAttribute(attributeToRemove);
}
}
-
-
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/665a11a7/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java
index 4c73843..e88036c 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/RemoveMailAttributeTest.java
@@ -19,69 +19,106 @@
package org.apache.james.transport.mailets;
+import static org.assertj.core.api.Assertions.assertThat;
import javax.mail.MessagingException;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import org.apache.mailet.Mail;
import org.apache.mailet.Mailet;
+import org.apache.mailet.MailetException;
import org.apache.mailet.base.test.FakeMail;
import org.apache.mailet.base.test.FakeMailContext;
import org.apache.mailet.base.test.FakeMailetConfig;
-import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
-public class RemoveMailAttributeTest {
-
- public static final String MAIL_ATTRIBUTE_NAME1 = "org.apache.james.test.junit";
+import java.io.Serializable;
- public static final String MAIL_ATTRIBUTE_NAME2 = "org.apache.james.test.junit2";
+public class RemoveMailAttributeTest {
- private Mail createMail() throws MessagingException {
- return FakeMail.builder()
- .attribute(MAIL_ATTRIBUTE_NAME1, "true")
- .attribute(MAIL_ATTRIBUTE_NAME2, "true")
- .build();
+ private static final String ATTRIBUTE_1 = "attribute1";
+ private static final String ATTRIBUTE_2 = "attribute2";
+ private static final String ATTRIBUTE_3 = "attribute3";
+ private static final String VALUE_1 = "value1";
+ private static final String VALUE_2 = "value2";
+ private static final String VALUE_3 = "value3";
+ private static final String ATTRIBUTE1_ATTRIBUTE2 = "attribute1, attribute2";
+ private Mailet removeMailet;
+ private FakeMailetConfig mailetConfig;
+
+ @Before
+ public void setup() throws Exception {
+ removeMailet = new RemoveMailAttribute();
+ mailetConfig = new FakeMailetConfig("Test", FakeMailContext.defaultContext());
}
- private Mailet setupMailet(String attribute) throws MessagingException {
- Mailet mailet = new RemoveMailAttribute();
- FakeMailetConfig mci = new FakeMailetConfig("Test",
- FakeMailContext.defaultContext());
- if (attribute != null) {
- mci.setProperty("name", attribute);
- }
+ @Test
+ public void getMailetInfoShouldReturnCorrectInformation() throws Exception {
+ assertThat(removeMailet.getMailetInfo()).isEqualTo("Remove Mail Attribute Mailet");
+ }
- mailet.init(mci);
- return mailet;
+ @Test(expected = MailetException.class)
+ public void initShouldThrowExceptionIfMailetConfigDoesNotContainAttribute() throws MessagingException {
+ removeMailet.init(mailetConfig);
}
+ @Test(expected = NullPointerException.class)
+ public void serviceShouldThrowExceptionWithMailNull() throws MessagingException {
+ removeMailet.service(null);
+ }
@Test
- public void testRemoveMailAttribute() throws MessagingException {
- Mail m = createMail();
- Mailet mailet = setupMailet(MAIL_ATTRIBUTE_NAME1);
-
- // check if the mail has a attribute
- Assert.assertNotNull("Attribute exists", m.getAttribute(MAIL_ATTRIBUTE_NAME1));
- Assert.assertNotNull("Attribute exists", m.getAttribute(MAIL_ATTRIBUTE_NAME2));
+ public void serviceShouldDoNothingWhenMailHasEmptyAttribute() throws MessagingException {
+ mailetConfig.setProperty(RemoveMailAttribute.MAILET_NAME_PARAMETER, ATTRIBUTE1_ATTRIBUTE2);
+ removeMailet.init(mailetConfig);
- mailet.service(m);
+ Mail mail = FakeMail.builder().build();
+ removeMailet.service(mail);
- // Check if the attribute was removed
- Assert.assertNull("Attribute exists", m.getAttribute(MAIL_ATTRIBUTE_NAME1));
- Assert.assertNotNull("Attribute deleted", m.getAttribute(MAIL_ATTRIBUTE_NAME2));
+ assertThat(mail.getAttributeNames()).isEmpty();
}
+ @Test
+ public void serviceShouldDoNothingWhenMailDoNotMatchAttribute() throws MessagingException {
+ mailetConfig.setProperty(RemoveMailAttribute.MAILET_NAME_PARAMETER, ATTRIBUTE1_ATTRIBUTE2);
+ removeMailet.init(mailetConfig);
+
+ Mail mail = FakeMail.builder()
+ .attribute(ATTRIBUTE_3, VALUE_3)
+ .build();
+ removeMailet.service(mail);
+
+ assertThat(mail.getAttributeNames()).containsExactly(ATTRIBUTE_3);
+ }
@Test
- public void testInvalidConfig() throws MessagingException {
- boolean exception = false;
- try {
- setupMailet(null);
- } catch (MessagingException e) {
- exception = true;
- }
-
- Assert.assertTrue("invalid Config", exception);
+ public void serviceShouldRemoveSpecifiedAttribute() throws MessagingException {
+ mailetConfig.setProperty(RemoveMailAttribute.MAILET_NAME_PARAMETER, ATTRIBUTE_1);
+ removeMailet.init(mailetConfig);
+
+ Mail mail = FakeMail.builder()
+ .attribute(ATTRIBUTE_1, VALUE_1)
+ .attribute(ATTRIBUTE_2, VALUE_2)
+ .attribute(ATTRIBUTE_3, VALUE_3)
+ .build();
+ removeMailet.service(mail);
+
+ assertThat(mail.getAttributeNames()).containsOnly(ATTRIBUTE_2, ATTRIBUTE_3);
}
+ @Test
+ public void serviceShouldRemoveSpecifiedAttributes() throws MessagingException {
+ mailetConfig.setProperty(RemoveMailAttribute.MAILET_NAME_PARAMETER, ATTRIBUTE1_ATTRIBUTE2);
+ removeMailet.init(mailetConfig);
+
+ Mail mail = FakeMail.builder()
+ .attribute(ATTRIBUTE_1, VALUE_1)
+ .attribute(ATTRIBUTE_2, VALUE_2)
+ .attribute(ATTRIBUTE_3, VALUE_3)
+ .build();
+ removeMailet.service(mail);
+
+ assertThat(mail.getAttributeNames()).containsExactly(ATTRIBUTE_3);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/2] james-project git commit: Merge remote-tracking branch
'quynhn/MAILET-Refactor-RemoveMailAttr'
Posted by ad...@apache.org.
Merge remote-tracking branch 'quynhn/MAILET-Refactor-RemoveMailAttr'
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1ce23080
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1ce23080
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1ce23080
Branch: refs/heads/master
Commit: 1ce23080e65a3764657b4bf484defb0dfd7a1f7b
Parents: 7dbbdee 665a11a
Author: Antoine Duprat <ad...@apache.org>
Authored: Thu Oct 20 08:41:31 2016 +0200
Committer: Antoine Duprat <ad...@apache.org>
Committed: Thu Oct 20 08:41:31 2016 +0200
----------------------------------------------------------------------
.../transport/mailets/RemoveMailAttribute.java | 62 +++++-----
.../mailets/RemoveMailAttributeTest.java | 115 ++++++++++++-------
2 files changed, 102 insertions(+), 75 deletions(-)
----------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org