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 bt...@apache.org on 2019/01/11 03:01:18 UTC

[08/10] james-project git commit: JAMES-2636 getUserDomainMappings should return empty object consistently when there is no mappings

JAMES-2636 getUserDomainMappings should return empty object consistently when there is no 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/106a284b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/106a284b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/106a284b

Branch: refs/heads/master
Commit: 106a284be1c4e4ea1d003f93ed709ac8e299dd43
Parents: 760a411
Author: Rene Cordier <rc...@linagora.com>
Authored: Fri Jan 4 15:52:20 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Jan 11 09:48:33 2019 +0700

----------------------------------------------------------------------
 .../apache/james/rrt/api/RecipientRewriteTable.java   |  9 +++++----
 .../rrt/cassandra/CassandraRecipientRewriteTable.java |  2 +-
 .../james/rrt/file/XMLRecipientRewriteTable.java      | 14 ++++----------
 .../james/rrt/file/XMLRecipientRewriteTableTest.java  | 14 +++++++-------
 .../james/rrt/jdbc/JDBCRecipientRewriteTable.java     |  6 +++---
 .../james/rrt/lib/AbstractRecipientRewriteTable.java  |  2 +-
 .../james/user/lib/AbstractJamesUsersRepository.java  |  2 +-
 .../rrt/lib/AbstractRecipientRewriteTableTest.java    | 12 ++++++++++--
 .../james/rrt/memory/MemoryRecipientRewriteTable.java |  2 +-
 .../james/webadmin/routes/DomainMappingsRoutes.java   |  2 +-
 .../apache/james/webadmin/routes/ForwardRoutes.java   |  4 +---
 .../apache/james/webadmin/routes/GroupsRoutes.java    |  4 +---
 12 files changed, 36 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
index 7efc0bd..96f62d3 100644
--- a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
+++ b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
@@ -49,7 +49,8 @@ public interface RecipientRewriteTable {
     EnumSet<Mapping.Type> listSourcesSupportedType = EnumSet.of(
         Mapping.Type.Group,
         Mapping.Type.Forward,
-        Mapping.Type.Address);
+        Mapping.Type.Address,
+        Mapping.Type.Alias);
 
     void addMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException;
 
@@ -80,7 +81,7 @@ public interface RecipientRewriteTable {
     void removeGroupMapping(MappingSource source, String address) throws RecipientRewriteTableException;
 
     /**
-     * Return the Mappings for the given source. Return null if no
+     * Return the Mappings for the given source. Return empty object if no
      * matched mapping was found
      *
      * @throws ErrorMappingException
@@ -89,8 +90,8 @@ public interface RecipientRewriteTable {
     Mappings getResolvedMappings(String user, Domain domain) throws ErrorMappingException, RecipientRewriteTableException;
 
     /**
-     * Return the explicit mapping stored for the given user and domain. Return
-     * null if no mapping was found
+     * Return the explicit mapping stored for the given user and domain. Return empty object
+     * if no matched mapping was found
      * 
      * @return the collection which holds the mappings.
      * @throws RecipientRewriteTableException

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
index ffefd98..332ec43 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
@@ -115,7 +115,7 @@ public class CassandraRecipientRewriteTable extends AbstractRecipientRewriteTabl
     @Override
     public Mappings getStoredMappings(MappingSource source) {
         return retrieveMappings(source)
-            .orElse(null);
+            .orElse(MappingsImpl.empty());
     }
 
     private Optional<Mappings> retrieveMappings(MappingSource source) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/server/data/data-file/src/main/java/org/apache/james/rrt/file/XMLRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/rrt/file/XMLRecipientRewriteTable.java b/server/data/data-file/src/main/java/org/apache/james/rrt/file/XMLRecipientRewriteTable.java
index c192dbe..66b4bb8 100644
--- a/server/data/data-file/src/main/java/org/apache/james/rrt/file/XMLRecipientRewriteTable.java
+++ b/server/data/data-file/src/main/java/org/apache/james/rrt/file/XMLRecipientRewriteTable.java
@@ -69,16 +69,10 @@ public class XMLRecipientRewriteTable extends AbstractRecipientRewriteTable {
 
     @Override
     public Mappings getStoredMappings(MappingSource source) {
-        if (mappings == null) {
-            return null;
-        } else {
-            String maps = mappings.get(source);
-            if (maps != null) {
-                return MappingsImpl.fromRawString(maps);
-            } else {
-                return null;
-            }
-        }
+        return Optional.ofNullable(mappings)
+                .map(mappings -> mappings.get(source))
+                .map(MappingsImpl::fromRawString)
+                .orElse(MappingsImpl.empty());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/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 aaa0820..16591e2 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
@@ -80,8 +80,7 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT
     }
 
     protected void addMappingToConfiguration(MappingSource source, String mapping, Type type) throws RecipientRewriteTableException {
-        Mappings mappings = Optional.ofNullable(virtualUserTable.getStoredMappings(source))
-            .orElse(MappingsImpl.empty());
+        Mappings mappings = virtualUserTable.getStoredMappings(source);
 
         Mappings updatedMappings = MappingsImpl.from(mappings)
             .add(Mapping.of(type, mapping))
@@ -91,8 +90,11 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT
     }
 
     protected void removeMappingFromConfiguration(MappingSource source, String mapping, Type type) throws RecipientRewriteTableException {
-        Mappings oldMappings = Optional.ofNullable(virtualUserTable.getStoredMappings(source))
-            .orElseThrow(() -> new RecipientRewriteTableException("Cannot remove from null mappings"));
+        Mappings oldMappings = virtualUserTable.getStoredMappings(source);
+
+        if (oldMappings.isEmpty()) {
+            throw new RecipientRewriteTableException("Cannot remove from null mappings");
+        }
 
         Mappings updatedMappings = oldMappings.remove(Mapping.of(type, mapping));
 
@@ -100,9 +102,7 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT
     }
 
     private void updateConfiguration(MappingSource source, Mappings oldMappings, Mappings updatedMappings) throws RecipientRewriteTableException {
-        if (oldMappings != null) {
-            removeMappingsFromConfig(source, oldMappings);
-        }
+        removeMappingsFromConfig(source, oldMappings);
 
         if (!updatedMappings.isEmpty()) {
             defaultConfiguration.addProperty("mapping", source.getFixedUser() + "@" + source.getFixedDomain() + "=" + updatedMappings.serialize());

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java b/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java
index d6d5920..fdf8625 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java
@@ -190,7 +190,7 @@ public class JDBCRecipientRewriteTable extends AbstractRecipientRewriteTable {
     @Override
     public void addMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException {
         Mappings map = getStoredMappings(source);
-        if (map != null && map.size() != 0) {
+        if (!map.isEmpty()) {
             Mappings updatedMappings = MappingsImpl.from(map).add(mapping).build();
             doUpdateMapping(source, updatedMappings.serialize());
         }
@@ -252,7 +252,7 @@ public class JDBCRecipientRewriteTable extends AbstractRecipientRewriteTable {
             theJDBCUtil.closeJDBCStatement(mappingStmt);
             theJDBCUtil.closeJDBCConnection(conn);
         }
-        return null;
+        return MappingsImpl.empty();
     }
 
     @Override
@@ -292,7 +292,7 @@ public class JDBCRecipientRewriteTable extends AbstractRecipientRewriteTable {
     @Override
     public void removeMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException {
         Mappings map = getStoredMappings(source);
-        if (map != null && map.size() > 1) {
+        if (map.size() > 1) {
             Mappings updatedMappings = map.remove(mapping);
             doUpdateMapping(source, updatedMappings.serialize());
         } else {

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/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 053f053..d6acf8f 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
@@ -314,7 +314,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
 
     private void checkDuplicateMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException {
         Mappings mappings = getStoredMappings(source);
-        if (mappings != null && mappings.contains(mapping)) {
+        if (mappings.contains(mapping)) {
             throw new MappingAlreadyExistsException("Mapping " + mapping + " for " + source.asString() + " already exist!");
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
index 3913533..44f731a 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
@@ -206,7 +206,7 @@ public abstract class AbstractJamesUsersRepository extends AbstractUsersReposito
     }
 
     @Override
-    public Mappings getStoredMappings(MappingSource source) throws RecipientRewriteTableException {
+    public Mappings getStoredMappings(MappingSource source) {
         return MappingsImpl.empty();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/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 e6fe5b7..b9bfe0a 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
@@ -347,7 +347,7 @@ public abstract class AbstractRecipientRewriteTableTest {
         virtualUserTable.addMapping(source, Mapping.alias(ADDRESS));
         virtualUserTable.addMapping(source, Mapping.alias(address2));
 
-        assertThat(virtualUserTable.getUserDomainMappings(source)).hasSize(2);
+        assertThat(virtualUserTable.getStoredMappings(source)).hasSize(2);
     }
 
     @Test
@@ -362,11 +362,19 @@ public abstract class AbstractRecipientRewriteTableTest {
         virtualUserTable.removeMapping(source, Mapping.alias(ADDRESS));
         virtualUserTable.removeMapping(source, Mapping.alias(address2));
 
-        assertThat(virtualUserTable.getUserDomainMappings(source))
+        assertThat(virtualUserTable.getStoredMappings(source))
                 .isEqualTo(MappingsImpl.empty());
     }
 
     @Test
+    public void getUserDomainMappingShouldBeEmptyByDefault() throws Exception {
+        Domain domain = Domain.LOCALHOST;
+        MappingSource source = MappingSource.fromUser(USER, domain);
+
+        assertThat(virtualUserTable.getStoredMappings(source)).isEmpty();
+    }
+
+    @Test
     public void listSourcesShouldReturnWhenHasMapping() throws Exception {
         MappingSource source = MappingSource.fromUser(USER, Domain.LOCALHOST);
         Mapping mapping = Mapping.group(ADDRESS);

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java b/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
index 8fc2e11..7b782eb 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
@@ -96,7 +96,7 @@ public class MemoryRecipientRewriteTable extends AbstractRecipientRewriteTable {
     @Override
     public Mappings getStoredMappings(MappingSource mappingSource) {
         return retrieveMappings(mappingSource)
-            .orElse(null);
+            .orElse(MappingsImpl.empty());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainMappingsRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainMappingsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainMappingsRoutes.java
index cfd3ac8..800d25f 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainMappingsRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainMappingsRoutes.java
@@ -160,7 +160,7 @@ public class DomainMappingsRoutes implements Routes {
     public List<String> getMapping(Request request, Response response) throws RecipientRewriteTableException {
         MappingSource mappingSource = mappingSourceFrom(request);
 
-        return Optional.ofNullable(recipientRewriteTable.getStoredMappings(mappingSource).select(Mapping.Type.Domain))
+        return Optional.of(recipientRewriteTable.getStoredMappings(mappingSource).select(Mapping.Type.Domain))
                 .filter(mappings -> !mappings.isEmpty())
                 .filter(mappings -> mappings.contains(Mapping.Type.Domain))
                 .map(this::toDomainList)

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java
index 3be3c42..f75a34b 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java
@@ -47,7 +47,6 @@ import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.Mapping;
 import org.apache.james.rrt.lib.MappingSource;
 import org.apache.james.rrt.lib.Mappings;
-import org.apache.james.rrt.lib.MappingsImpl;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.util.OptionalUtils;
@@ -234,8 +233,7 @@ public class ForwardRoutes implements Routes {
     })
     public ImmutableSet<ForwardDestinationResponse> listForwardDestinations(Request request, Response response) throws RecipientRewriteTableException {
         MailAddress baseAddress = parseMailAddress(request.params(FORWARD_BASE_ADDRESS));
-        Mappings mappings = Optional.ofNullable(recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(baseAddress)))
-            .orElse(MappingsImpl.empty())
+        Mappings mappings = recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(baseAddress))
             .select(Mapping.Type.Forward);
 
         ensureNonEmptyMappings(mappings);

http://git-wip-us.apache.org/repos/asf/james-project/blob/106a284b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
index 110256b..492b7be 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
@@ -49,7 +49,6 @@ import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.Mapping;
 import org.apache.james.rrt.lib.MappingSource;
 import org.apache.james.rrt.lib.Mappings;
-import org.apache.james.rrt.lib.MappingsImpl;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.util.OptionalUtils;
@@ -242,8 +241,7 @@ public class GroupsRoutes implements Routes {
     })
     public ImmutableSortedSet<String> listGroupMembers(Request request, Response response) throws RecipientRewriteTableException {
         MailAddress groupAddress = parseMailAddress(request.params(GROUP_ADDRESS));
-        Mappings mappings = Optional.ofNullable(recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(groupAddress)))
-            .orElse(MappingsImpl.empty())
+        Mappings mappings = recipientRewriteTable.getStoredMappings(MappingSource.fromMailAddress(groupAddress))
             .select(Mapping.Type.Group);
 
         ensureNonEmptyMappings(mappings);


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org