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

Reply via email to