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 <dphamho...@linagora.com> Authored: Fri Nov 30 16:28:08 2018 +0700 Committer: Benoit Tellier <btell...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org