james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From btell...@apache.org
Subject [04/24] james-project git commit: JAMES-2366 Rely on Mapping::appendDomainIfNone in AbstractRecipientRewriteTable
Date Fri, 20 Apr 2018 02:12:49 GMT
JAMES-2366 Rely on Mapping::appendDomainIfNone in AbstractRecipientRewriteTable


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

Branch: refs/heads/master
Commit: eb5f4f96030b997e1d4f55ca9435c43bdc038140
Parents: b9b09a0
Author: benwa <btellier@linagora.com>
Authored: Fri Apr 6 10:24:37 2018 +0700
Committer: benwa <btellier@linagora.com>
Committed: Thu Apr 19 11:12:07 2018 +0700

----------------------------------------------------------------------
 .../rrt/lib/AbstractRecipientRewriteTable.java  | 63 +++++++++++---------
 1 file changed, 36 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/eb5f4f96/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 8913aae..9c96e2b 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,9 +18,9 @@
  ****************************************************************/
 package org.apache.james.rrt.lib;
 
-import java.util.Locale;
 import java.util.Map;
 import java.util.Optional;
+import java.util.function.Supplier;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
@@ -40,6 +40,8 @@ import org.apache.james.rrt.lib.Mapping.Type;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.fge.lambdas.Throwing;
+
 /**
  * 
  */
@@ -205,37 +207,39 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
 
     @Override
     public void addAddressMapping(String user, Domain domain, String address) throws RecipientRewriteTableException
{
-        String addressWithDomain = addDefaultDomainIfNone(address);
-        checkAddressIsValid(addressWithDomain);
-        checkMapping(user, domain, MappingImpl.address(addressWithDomain));
-        LOGGER.info("Add address mapping => {} for user: {} domain: {}", addressWithDomain,
user, domain.name());
-        addMapping(user, domain, MappingImpl.address(addressWithDomain));
+        Mapping mapping = MappingImpl.address(address)
+            .appendDomainIfNone(defaultDomainSupplier());
+
+        checkHasValidAddress(mapping);
+        checkMapping(user, domain, mapping);
+
+        LOGGER.info("Add address mapping => {} for user: {} domain: {}", mapping, user,
domain.name());
+        addMapping(user, domain, mapping);
     }
 
-    private String addDefaultDomainIfNone(String address) throws RecipientRewriteTableException
{
-        if (address.indexOf('@') < 0) {
+    private Supplier<Domain> defaultDomainSupplier() throws RecipientRewriteTableException
{
+        return Throwing.supplier(() -> {
             try {
-                return address + "@" + domainList.getDefaultDomain().asString();
+                return domainList.getDefaultDomain();
             } catch (DomainListException e) {
                 throw new RecipientRewriteTableException("Unable to retrieve default domain",
e);
             }
-        }
-        return address;
+        }).sneakyThrow();
     }
 
-    private void checkAddressIsValid(String addressWithDomain) throws RecipientRewriteTableException
{
-        try {
-            new MailAddress(addressWithDomain);
-        } catch (ParseException e) {
-            throw new RecipientRewriteTableException("Invalid emailAddress: " + addressWithDomain,
e);
+    private void checkHasValidAddress(Mapping mapping) throws RecipientRewriteTableException
{
+        if (!mapping.asMailAddress().isPresent()) {
+            throw new RecipientRewriteTableException("Invalid emailAddress: " + mapping);
         }
     }
 
     @Override
     public void removeAddressMapping(String user, Domain domain, String address) throws RecipientRewriteTableException
{
-        String addressWithDomain = addDefaultDomainIfNone(address);
-        LOGGER.info("Remove address mapping => {} for user: {} domain: {}", addressWithDomain,
user, domain.name());
-        removeMapping(user, domain, MappingImpl.address(addressWithDomain));
+        Mapping mapping = MappingImpl.address(address)
+            .appendDomainIfNone(defaultDomainSupplier());
+
+        LOGGER.info("Remove address mapping => {} for user: {} domain: {}", mapping, user,
domain.name());
+        removeMapping(user, domain, mapping);
     }
 
     @Override
@@ -274,18 +278,23 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
 
     @Override
     public void addForwardMapping(String user, Domain domain, String address) throws RecipientRewriteTableException
{
-        String addressWithDomain = addDefaultDomainIfNone(address);
-        checkAddressIsValid(addressWithDomain);
-        checkMapping(user, domain, MappingImpl.forward(addressWithDomain));
-        LOGGER.info("Add forward mapping => {} for user: {} domain: {}", addressWithDomain,
user, domain.name());
-        addMapping(user, domain, MappingImpl.forward(addressWithDomain));
+        Mapping mapping = MappingImpl.forward(address)
+            .appendDomainIfNone(defaultDomainSupplier());
+
+        checkHasValidAddress(mapping);
+        checkMapping(user, domain, mapping);
+
+        LOGGER.info("Add forward mapping => {} for user: {} domain: {}", mapping, user,
domain.name());
+        addMapping(user, domain, mapping);
     }
 
     @Override
     public void removeForwardMapping(String user, Domain domain, String address) throws RecipientRewriteTableException
{
-        String addressWithDomain = addDefaultDomainIfNone(address);
-        LOGGER.info("Remove forward mapping => {} for user: {} domain: {}", addressWithDomain,
user, domain.name());
-        removeMapping(user, domain, MappingImpl.forward(addressWithDomain));
+        Mapping mapping = MappingImpl.forward(address)
+            .appendDomainIfNone(defaultDomainSupplier());
+
+        LOGGER.info("Remove forward mapping => {} for user: {} domain: {}", mapping, user,
domain.name());
+        removeMapping(user, domain, mapping);
     }
 
     /**


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


Mime
View raw message