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