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 2019/01/30 10:56:21 UTC

[4/8] james-project git commit: JAMES-2655 Simplify JPA RRT query logic

JAMES-2655 Simplify JPA RRT query logic

Previous queries were complex and were syntactically incorrect when run against
MariaDB as reported by Marc Chamberlin.

This lead to portability issue.

Note that simplifying queries is an attempt to solve this.


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

Branch: refs/heads/master
Commit: deb030687108ea45a25a596d9836ebd4cacd593d
Parents: 7364833
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Jan 30 11:08:03 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Jan 30 17:55:18 2019 +0700

----------------------------------------------------------------------
 .../james/rrt/jpa/JPARecipientRewriteTable.java      | 15 ++++++++++-----
 .../james/rrt/jpa/model/JPARecipientRewrite.java     | 10 ++++------
 2 files changed, 14 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/deb03068/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java b/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
index d653d3d..c5f1e8d 100644
--- a/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
+++ b/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
@@ -76,11 +76,16 @@ public class JPARecipientRewriteTable extends AbstractRecipientRewriteTable {
 
     @Override
     protected Mappings mapAddress(String user, Domain domain) throws RecipientRewriteTableException {
-        Mappings mapping = getMapping(user, domain, "selectExactMappings");
-        if (!mapping.isEmpty()) {
-            return mapping;
+        Mappings userDomainMapping = getMapping(user, domain, "selectUserDomainMapping");
+        if (userDomainMapping != null && !userDomainMapping.isEmpty()) {
+            return userDomainMapping;
+        }
+        MappingSource domainSource = MappingSource.fromDomain(domain);
+        Mappings domainMapping = getMapping(domainSource.getFixedUser(), domain, "selectUserDomainMapping");
+        if (domainMapping != null && !domainMapping.isEmpty()) {
+            return domainMapping;
         }
-        return getMapping(user, domain, "selectMappings");
+        return MappingsImpl.empty();
     }
 
     private Mappings getMapping(String user, Domain domain, String queryName) throws RecipientRewriteTableException {
@@ -175,7 +180,7 @@ public class JPARecipientRewriteTable extends AbstractRecipientRewriteTable {
 
     /**
      * Update the mapping for the given user and domain
-     * 
+     *
      * @param user the user
      * @param domain the domain
      * @param mapping the mapping

http://git-wip-us.apache.org/repos/asf/james-project/blob/deb03068/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java
----------------------------------------------------------------------
diff --git a/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java b/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java
index e1f2639..1edebad 100644
--- a/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java
+++ b/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java
@@ -39,12 +39,10 @@ import com.google.common.base.Objects;
 @Entity(name = "JamesRecipientRewrite")
 @Table(name = JPARecipientRewrite.JAMES_RECIPIENT_REWRITE)
 @NamedQueries({ 
-    @NamedQuery(name = "selectMappings", query = "SELECT rrt FROM JamesRecipientRewrite rrt WHERE (rrt.user LIKE :user OR rrt.user='*') and (rrt.domain like :domain or rrt.domain='*') ORDER BY rrt.domain DESC"),
-    @NamedQuery(name = "selectExactMappings", query = "SELECT rrt FROM JamesRecipientRewrite rrt WHERE (rrt.user LIKE :user) and (rrt.domain like :domain) ORDER BY rrt.domain DESC"),
-        @NamedQuery(name = "selectUserDomainMapping", query = "SELECT rrt FROM JamesRecipientRewrite rrt WHERE rrt.user=:user AND rrt.domain=:domain"), 
-        @NamedQuery(name = "selectAllMappings", query = "SELECT rrt FROM JamesRecipientRewrite rrt"),
-        @NamedQuery(name = "deleteMapping", query = "DELETE FROM JamesRecipientRewrite rrt WHERE rrt.user=:user AND rrt.domain=:domain AND rrt.targetAddress=:targetAddress"),
-        @NamedQuery(name = "updateMapping", query = "UPDATE JamesRecipientRewrite rrt SET rrt.targetAddress=:targetAddress WHERE rrt.user=:user AND rrt.domain=:domain") })
+    @NamedQuery(name = "selectUserDomainMapping", query = "SELECT rrt FROM JamesRecipientRewrite rrt WHERE rrt.user=:user AND rrt.domain=:domain"),
+    @NamedQuery(name = "selectAllMappings", query = "SELECT rrt FROM JamesRecipientRewrite rrt"),
+    @NamedQuery(name = "deleteMapping", query = "DELETE FROM JamesRecipientRewrite rrt WHERE rrt.user=:user AND rrt.domain=:domain AND rrt.targetAddress=:targetAddress"),
+    @NamedQuery(name = "updateMapping", query = "UPDATE JamesRecipientRewrite rrt SET rrt.targetAddress=:targetAddress WHERE rrt.user=:user AND rrt.domain=:domain") })
 @IdClass(JPARecipientRewrite.RecipientRewriteTableId.class)
 public class JPARecipientRewrite {
 


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