MAILET-115 Introduce listToString in StringUtils
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a4094db0 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a4094db0 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a4094db0 Branch: refs/heads/master Commit: a4094db00cf913aaa472c26a3c6e72738526242d Parents: 7974e70 Author: Antoine Duprat <adup...@linagora.com> Authored: Tue Jan 3 13:38:36 2017 +0100 Committer: Benoit Tellier <btell...@linagora.com> Committed: Wed Jan 11 10:03:32 2017 +0700 ---------------------------------------------------------------------- .../org/apache/mailet/base/StringUtils.java | 6 ++++ .../org/apache/mailet/base/StringUtilsTest.java | 32 ++++++++++++++++++++ .../mailets/redirect/AddressExtractor.java | 12 +++----- 3 files changed, 43 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/a4094db0/mailet/base/src/main/java/org/apache/mailet/base/StringUtils.java ---------------------------------------------------------------------- diff --git a/mailet/base/src/main/java/org/apache/mailet/base/StringUtils.java b/mailet/base/src/main/java/org/apache/mailet/base/StringUtils.java index cc0d83e..9c50591 100644 --- a/mailet/base/src/main/java/org/apache/mailet/base/StringUtils.java +++ b/mailet/base/src/main/java/org/apache/mailet/base/StringUtils.java @@ -22,8 +22,10 @@ package org.apache.mailet.base; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; +import java.util.List; import com.google.common.base.Joiner; +import com.google.common.collect.Iterables; /** * Collects useful string utility methods. @@ -123,4 +125,8 @@ public final class StringUtils { sb.append("]"); return sb.toString(); } + + public static String listToString(List<String> strings) { + return arrayToString(Iterables.toArray(strings, String.class)); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/a4094db0/mailet/base/src/test/java/org/apache/mailet/base/StringUtilsTest.java ---------------------------------------------------------------------- diff --git a/mailet/base/src/test/java/org/apache/mailet/base/StringUtilsTest.java b/mailet/base/src/test/java/org/apache/mailet/base/StringUtilsTest.java index dc0922c..9f5b41a 100644 --- a/mailet/base/src/test/java/org/apache/mailet/base/StringUtilsTest.java +++ b/mailet/base/src/test/java/org/apache/mailet/base/StringUtilsTest.java @@ -24,6 +24,8 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import com.google.common.collect.ImmutableList; + public class StringUtilsTest { @Rule @@ -58,4 +60,34 @@ public class StringUtilsTest { expectedException.expect(NullPointerException.class); StringUtils.arrayToString(new String[] { "first", null, "fourth" }); } + + @Test + public void listToStringShouldThrowWhenListIsNull() { + expectedException.expect(NullPointerException.class); + StringUtils.listToString(null); + } + + @Test + public void listToStringShouldReturnOnlyBracketsWhenListIsEmpty() { + String listToString = StringUtils.listToString(ImmutableList.<String> of()); + assertThat(listToString).isEqualTo("[]"); + } + + @Test + public void listToStringShouldReturnOneElementWhenListContainsOneElement() { + String listToString = StringUtils.listToString(ImmutableList.of("first")); + assertThat(listToString).isEqualTo("[first]"); + } + + @Test + public void listToStringShouldReturnSeparatedElementsWhenListContainsMultipleElements() { + String listToString = StringUtils.listToString(ImmutableList.of("first", "second", "fourth")); + assertThat(listToString).isEqualTo("[first,second,fourth]"); + } + + @Test + public void listToStringShouldThrowWhenListContainsANullElement() { + expectedException.expect(NullPointerException.class); + StringUtils.listToString(ImmutableList.of("first", null, "fourth")); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/a4094db0/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java index fe5d966..afb5e81 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java @@ -28,8 +28,8 @@ import javax.mail.internet.InternetAddress; import org.apache.mailet.MailAddress; import org.apache.mailet.MailetContext; +import org.apache.mailet.base.StringUtils; -import com.google.common.base.Joiner; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Strings; @@ -37,6 +37,8 @@ import com.google.common.collect.ImmutableList; public class AddressExtractor { + private static final boolean ENFORCE_RFC822_SYNTAX = false; + public static Builder withContext(MailetContext mailetContext) { return new Builder(mailetContext); } @@ -81,7 +83,7 @@ public class AddressExtractor { private List<MailAddress> extract(String addressList) throws MessagingException { try { - return toMailAddresses(ImmutableList.copyOf(InternetAddress.parse(addressList, false))); + return toMailAddresses(ImmutableList.copyOf(InternetAddress.parse(addressList, ENFORCE_RFC822_SYNTAX))); } catch (AddressException e) { throw new MessagingException("Exception thrown parsing: " + addressList, e); } @@ -126,17 +128,13 @@ public class AddressExtractor { Optional<MailAddress> specialAddress = asSpecialAddress(addressString); if (specialAddress.isPresent()) { if (!isAllowed(addressString, allowedSpecials)) { - throw new MessagingException("Special (\"magic\") address found not allowed: " + addressString + ", allowed values are \"" + asString(allowedSpecials) + "\""); + throw new MessagingException("Special (\"magic\") address found not allowed: " + addressString + ", allowed values are \"" + StringUtils.listToString(allowedSpecials) + "\""); } return specialAddress; } return Optional.absent(); } - private String asString(List<String> allowedSpecials) { - return "[" + Joiner.on(", ").join(allowedSpecials) + "]"; - } - private Optional<MailAddress> asSpecialAddress(String addressString) { String lowerCaseTrimed = addressString.toLowerCase(Locale.US).trim(); if (lowerCaseTrimed.equals("postmaster")) { --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org