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 2018/12/05 09:44:33 UTC

[02/14] james-project git commit: JAMES-2596 Implement default behavior for listSources method

JAMES-2596 Implement default behavior for listSources method


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/80f655ce
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/80f655ce
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/80f655ce

Branch: refs/heads/master
Commit: 80f655cec2b24ee1ee7b9ee2c7f23fad6960afdd
Parents: 4c0b451
Author: datph <dp...@linagora.com>
Authored: Fri Nov 30 16:28:08 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Dec 5 16:33:18 2018 +0700

----------------------------------------------------------------------
 .../james/rrt/api/RecipientRewriteTable.java    | 27 +++++++++++++++++++-
 .../rrt/lib/AbstractRecipientRewriteTable.java  |  9 +------
 .../user/lib/AbstractJamesUsersRepository.java  |  6 +----
 3 files changed, 28 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/80f655ce/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 0b21317..c21ba3a 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
@@ -26,6 +26,8 @@ import org.apache.james.rrt.lib.Mapping;
 import org.apache.james.rrt.lib.MappingSource;
 import org.apache.james.rrt.lib.Mappings;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * Interface which should be implemented of classes which map recipients.
  */
@@ -107,7 +109,30 @@ public interface RecipientRewriteTable {
      */
     Map<MappingSource, Mappings> getAllMappings() throws RecipientRewriteTableException;
 
-    List<MappingSource> listSources(Mapping mapping) throws RecipientRewriteTableException;
+    default List<MappingSource> listSources(Mapping mapping) throws RecipientRewriteTableException {
+        if (!isSupportedListSources(mapping)) {
+            return ImmutableList.of();
+        }
+
+        return getAllMappings().entrySet().stream()
+            .filter(entry -> filterMapping(entry, mapping))
+            .map(Map.Entry::getKey)
+            .collect(ImmutableList.toImmutableList());
+    }
+
+    default boolean filterMapping(Map.Entry<MappingSource, Mappings> entry, Mapping mapping) {
+        return entry.getValue()
+            .asStream()
+            .anyMatch(map -> map.equals(mapping));
+    }
+
+    default boolean isSupportedListSources(Mapping mapping) {
+        return listSourcesSupportedType.stream()
+            .anyMatch(type -> type.equals(mapping.getType()));
+    }
+
+    List<Mapping.Type> listSourcesSupportedType = ImmutableList
+        .of(Mapping.Type.Group, Mapping.Type.Forward, Mapping.Type.Address);
 
     class ErrorMappingException extends Exception {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/80f655ce/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 fca0778..7eefdcc 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
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.james.rrt.lib;
 
-import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
 import java.util.regex.Pattern;
@@ -97,8 +96,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
 
     @Override
     public Mappings getMappings(String user, Domain domain) throws ErrorMappingException, RecipientRewriteTableException {
-        Mappings mappings = getMappings(User.fromLocalPartWithDomain(user, domain), mappingLimit);
-        return mappings;
+        return getMappings(User.fromLocalPartWithDomain(user, domain), mappingLimit);
     }
 
     private Mappings getMappings(User user, int mappingLimit) throws ErrorMappingException, RecipientRewriteTableException {
@@ -299,11 +297,6 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
         removeMapping(source, mapping);
     }
 
-    @Override
-    public List<MappingSource> listSources(Mapping mapping) throws RecipientRewriteTableException {
-        return null;
-    }
-
     /**
      * Return a Map which holds all Mappings
      * 

http://git-wip-us.apache.org/repos/asf/james-project/blob/80f655ce/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 811fb0c..3b5d205 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
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
@@ -291,9 +292,4 @@ public abstract class AbstractJamesUsersRepository extends AbstractUsersReposito
     public void removeGroupMapping(MappingSource source, String address) throws RecipientRewriteTableException {
         throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
     }
-
-    @Override
-    public List<MappingSource> listSources(Mapping mapping) throws RecipientRewriteTableException {
-        return ImmutableList.of();
-    }
 }


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