Repository: james-project Updated Branches: refs/heads/master 8d9287ff9 -> e9c1a72b7
JAMES-2121 Disallown creation of duplicate mappings Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d8995759 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d8995759 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d8995759 Branch: refs/heads/master Commit: d89957592fb401f50adc7f67a0016a2cb7207173 Parents: 8d9287f Author: Raphael Ouazana <raphael.ouaz...@linagora.com> Authored: Wed Aug 30 16:38:11 2017 +0200 Committer: benwa <btell...@linagora.com> Committed: Fri Sep 1 17:26:17 2017 +0700 ---------------------------------------------------------------------- .../java/org/apache/james/rrt/lib/Mappings.java | 2 +- .../rrt/file/XMLRecipientRewriteTableTest.java | 8 ++++++++ .../rrt/lib/AbstractRecipientRewriteTable.java | 8 ++++---- .../org/apache/james/rrt/lib/MappingImpl.java | 3 +-- .../org/apache/james/rrt/lib/MappingsImpl.java | 3 +-- .../lib/AbstractRecipientRewriteTableTest.java | 19 +++++++++++++++++++ .../apache/james/rrt/lib/MappingImplTest.java | 5 +++++ 7 files changed, 39 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/d8995759/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java index 21324aa..a4f27ff 100644 --- a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java +++ b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java @@ -26,7 +26,7 @@ import org.apache.james.rrt.lib.Mapping.Type; public interface Mappings extends Iterable<Mapping> { - boolean contains(String mapping); + boolean contains(Mapping mapping); int size(); http://git-wip-us.apache.org/repos/asf/james-project/blob/d8995759/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java index 3d3d900..108c191 100644 --- a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java +++ b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java @@ -31,6 +31,8 @@ import org.apache.james.rrt.lib.MappingsImpl; import org.apache.james.rrt.lib.MappingsImpl.Builder; import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; /** * Test the XML Virtual User Table implementation. @@ -51,6 +53,12 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT return new XMLRecipientRewriteTable(); } + @Test + @Ignore("addMapping doesn't handle checking for duplicate in this test implementation") + @Override + public void addMappingShouldThrowWhenMappingAlreadyExists() { + } + @Override protected boolean addMapping(String user, String domain, String mapping, int type) throws RecipientRewriteTableException { http://git-wip-us.apache.org/repos/asf/james-project/blob/d8995759/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java index 0680e6a..6af844b 100644 --- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java +++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java @@ -193,7 +193,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT throw new RecipientRewriteTableException("Invalid regex: " + regex, e); } - checkMapping(user, domain, regex); + checkMapping(user, domain, MappingImpl.regex(regex)); LOGGER.info("Add regex mapping => " + regex + " for user: " + user + " domain: " + domain); addMappingInternal(user, domain, RecipientRewriteTable.REGEX_PREFIX + regex); @@ -225,7 +225,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT } catch (ParseException e) { throw new RecipientRewriteTableException("Invalid emailAddress: " + address, e); } - checkMapping(user, domain, address); + checkMapping(user, domain, MappingImpl.address(address)); LOGGER.info("Add address mapping => " + address + " for user: " + user + " domain: " + domain); addMappingInternal(user, domain, address); @@ -252,7 +252,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT * java.lang.String, java.lang.String) */ public void addErrorMapping(String user, String domain, String error) throws RecipientRewriteTableException { - checkMapping(user, domain, error); + checkMapping(user, domain, MappingImpl.error(error)); LOGGER.info("Add error mapping => " + error + " for user: " + user + " domain: " + domain); addMappingInternal(user, domain, RecipientRewriteTable.ERROR_PREFIX + error); @@ -445,7 +445,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT } } - private void checkMapping(String user, String domain, String mapping) throws RecipientRewriteTableException { + private void checkMapping(String user, String domain, Mapping mapping) throws RecipientRewriteTableException { Mappings mappings = getUserDomainMappings(user, domain); if (mappings != null && mappings.contains(mapping)) { throw new RecipientRewriteTableException("Mapping " + mapping + " for user " + user + " domain " + domain + " already exist!"); http://git-wip-us.apache.org/repos/asf/james-project/blob/d8995759/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java index 113b83b..ebf1fd5 100644 --- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java +++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java @@ -24,7 +24,6 @@ import java.io.Serializable; import org.apache.james.rrt.api.RecipientRewriteTable; -import com.google.common.base.MoreObjects; import com.google.common.base.Objects; import com.google.common.base.Preconditions; @@ -114,7 +113,7 @@ public class MappingImpl implements Mapping, Serializable { @Override public String toString() { - return MoreObjects.toStringHelper(getClass()).add("mapping", mapping).toString(); + return "MappingImpl{mapping=" + mapping + "}"; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/d8995759/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java index eacc55e..a9b61da 100644 --- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java +++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java @@ -127,8 +127,7 @@ public class MappingsImpl implements Mappings, Serializable { } @Override - @SuppressWarnings("unlikely-arg-type") - public boolean contains(String mapping) { + public boolean contains(Mapping mapping) { return mappings.contains(mapping); } http://git-wip-us.apache.org/repos/asf/james-project/blob/d8995759/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java index d2539dd..f481102 100644 --- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java +++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java @@ -328,6 +328,25 @@ public abstract class AbstractRecipientRewriteTableTest { .build()); } + @Test + public void addMappingShouldThrowWhenMappingAlreadyExists() throws Exception { + String user = "test"; + String domain = "localhost"; + String address = "test@localhost2"; + + assertThat(addMapping(user, domain, address, ADDRESS_TYPE)).isTrue(); + assertThat(addMapping(user, domain, address, ADDRESS_TYPE)).isFalse(); + } + + @Test + public void addMappingShouldNotThrowWhenMappingAlreadyExistsWithAnOtherType() throws Exception { + String user = "test"; + String domain = "localhost"; + String address = "test@localhost2"; + + assertThat(addMapping(user, domain, address, ADDRESS_TYPE)).isTrue(); + assertThat(addMapping(user, domain, address, ERROR_TYPE)).isTrue(); + } protected abstract AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception; http://git-wip-us.apache.org/repos/asf/james-project/blob/d8995759/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java index 88f4e3d..5844fdc 100644 --- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java +++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java @@ -127,4 +127,9 @@ public class MappingImplTest { public void getErrorMessageShouldReturnWhenErrorWithoutMessage() { assertThat(MappingImpl.error("").getErrorMessage()).isEqualTo(""); } + + @Test + public void toStringShouldReturnValuePrefixedAsByMoreObject() { + assertThat(MappingImpl.of("value").toString()).isEqualTo("MappingImpl{mapping=value}"); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org