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/04/20 02:13:05 UTC

[20/24] james-project git commit: JAMES-2366 Avoid variable re-allocation in HBase mapAddress

JAMES-2366 Avoid variable re-allocation in HBase mapAddress


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

Branch: refs/heads/master
Commit: a7d506355d33dc440464bedb3396bf6d5c89f848
Parents: 443ed73
Author: benwa <bt...@linagora.com>
Authored: Tue Apr 17 09:54:10 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Fri Apr 20 09:12:02 2018 +0700

----------------------------------------------------------------------
 .../rrt/hbase/HBaseRecipientRewriteTable.java   | 22 ++++++++++++--------
 1 file changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a7d50635/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java b/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
index d2556c3..f859b08 100644
--- a/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
+++ b/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
@@ -41,9 +41,11 @@ import org.apache.james.rrt.lib.Mapping;
 import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
 import org.apache.james.system.hbase.TablePool;
+import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.fge.lambdas.Throwing;
 import com.google.common.base.Splitter;
 
 /**
@@ -152,17 +154,20 @@ public class HBaseRecipientRewriteTable extends AbstractRecipientRewriteTable {
 
     @Override
     protected Mappings mapAddress(String user, Domain domain) throws RecipientRewriteTableException {
+        return getApplicableMappingRow(user, domain)
+            .map(MappingsImpl::fromRawString)
+            .orElse(MappingsImpl.empty());
+    }
+
+    private Optional<String> getApplicableMappingRow(String user, Domain domain) throws RecipientRewriteTableException {
         HTableInterface table = null;
-        String mappings;
         try {
             table = TablePool.getInstance().getRecipientRewriteTable();
-            mappings = getMapping(table, user, domain);
-            if (mappings == null) {
-                mappings = getMapping(table, WILDCARD, domain);
-            }
-            if (mappings == null) {
-                mappings = getMapping(table, user, Domains.WILDCARD);
-            }
+            HTableInterface tableCopy = table;
+            return OptionalUtils.orSuppliers(
+                Throwing.supplier(() -> Optional.ofNullable(getMapping(tableCopy, user, domain))).sneakyThrow(),
+                Throwing.supplier(() -> Optional.ofNullable(getMapping(tableCopy, WILDCARD, domain))).sneakyThrow(),
+                Throwing.supplier(() -> Optional.ofNullable(getMapping(tableCopy, user, Domains.WILDCARD))).sneakyThrow());
         } catch (IOException e) {
             log.error("Error while mapping address in HBase", e);
             throw new RecipientRewriteTableException("Error while mapping address in HBase", e);
@@ -175,7 +180,6 @@ public class HBaseRecipientRewriteTable extends AbstractRecipientRewriteTable {
                 }
             }
         }
-        return MappingsImpl.fromRawString(Optional.ofNullable(mappings).orElse(""));
     }
 
     private String getMapping(HTableInterface table, String user, Domain domain) throws IOException {


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