Author: matthieu
Date: Mon Nov  2 13:49:53 2015
New Revision: 1711999

URL: http://svn.apache.org/viewvc?rev=1711999&view=rev
Log:
JAMES-1597 override wildcard mapping by user mapping

Modified:
    
james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
    
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java
    
james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/RewriteTablesTest.java
    
james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
    
james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java
    
james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/RewriteTablesTest.java
    
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature

Modified: 
james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java?rev=1711999&r1=1711998&r2=1711999&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
 (original)
+++ 
james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
 Mon Nov  2 13:49:53 2015
@@ -28,8 +28,7 @@ import cucumber.api.junit.Cucumber;
 @RunWith(Cucumber.class)
 @CucumberOptions(
         features = { "classpath:cucumber/" },
-        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.file" },
-        tags = { "~@ignore" }
+        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.file" }
     )
 public class RewriteTablesTest {
 }

Modified: 
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java?rev=1711999&r1=1711998&r2=1711999&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java
 (original)
+++ 
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java
 Mon Nov  2 13:49:53 2015
@@ -26,8 +26,7 @@ import cucumber.api.junit.Cucumber;
 @RunWith(Cucumber.class)
 @CucumberOptions(
         features = { "classpath:cucumber/" },
-        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.hbase" },
-        tags = { "~@ignore" }
+        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.hbase" }
     )
 public class RewriteTablesTest {
 }

Modified: 
james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/RewriteTablesTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/RewriteTablesTest.java?rev=1711999&r1=1711998&r2=1711999&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/RewriteTablesTest.java
 (original)
+++ 
james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/RewriteTablesTest.java
 Mon Nov  2 13:49:53 2015
@@ -26,8 +26,7 @@ import cucumber.api.junit.Cucumber;
 @RunWith(Cucumber.class)
 @CucumberOptions(
         features = { "classpath:cucumber/" },
-        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.jdbc" },
-        tags = { "~@ignore" }
+        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.jdbc" }
     )
 public class RewriteTablesTest {
 }

Modified: 
james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java?rev=1711999&r1=1711998&r2=1711999&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
 (original)
+++ 
james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
 Mon Nov  2 13:49:53 2015
@@ -77,11 +77,19 @@ public class JPARecipientRewriteTable ex
      *      java.lang.String)
      */
     protected String mapAddressInternal(String user, String domain) throws 
RecipientRewriteTableException {
+        String mapping = getMapping(user, domain, "selectExactMappings");
+        if (mapping != null) {
+            return mapping;
+        }
+        return getMapping(user, domain, "selectMappings");
+    }
+
+    private String getMapping(String user, String domain, String queryName) 
throws RecipientRewriteTableException {
         EntityManager entityManager = 
entityManagerFactory.createEntityManager();
         final EntityTransaction transaction = entityManager.getTransaction();
         try {
             transaction.begin();
-            List<JPARecipientRewrite> virtualUsers = 
entityManager.createNamedQuery("selectMappings").setParameter("user", 
user).setParameter("domain", domain).getResultList();
+            List<JPARecipientRewrite> virtualUsers = 
entityManager.createNamedQuery(queryName).setParameter("user", 
user).setParameter("domain", domain).getResultList();
             transaction.commit();
             if (virtualUsers.size() > 0) {
                 return virtualUsers.get(0).getTargetAddress();

Modified: 
james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java?rev=1711999&r1=1711998&r2=1711999&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java
 (original)
+++ 
james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/model/JPARecipientRewrite.java
 Mon Nov  2 13:49:53 2015
@@ -38,6 +38,7 @@ import javax.persistence.Table;
 @Table(name = "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"),

Modified: 
james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/RewriteTablesTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/RewriteTablesTest.java?rev=1711999&r1=1711998&r2=1711999&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/RewriteTablesTest.java
 (original)
+++ 
james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/RewriteTablesTest.java
 Mon Nov  2 13:49:53 2015
@@ -26,8 +26,7 @@ import cucumber.api.junit.Cucumber;
 @RunWith(Cucumber.class)
 @CucumberOptions(
         features = { "classpath:cucumber/" },
-        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.jpa" },
-        tags = { "~@ignore" }
+        glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.jpa" }
     )
 public class RewriteTablesTest {
 }

Modified: 
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature?rev=1711999&r1=1711998&r2=1711999&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
 (original)
+++ 
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
 Mon Nov  2 13:49:53 2015
@@ -93,16 +93,14 @@ Feature: Rewrite Tables tests
     Then mappings for user "user" at domain "localhost" should contains only 
"test@localhost"
     And mappings for user "user2" at domain "localhost" should contains only 
"test@localhost"
 
-# Wildcard is not overridden
-  @ignore
   Scenario: direct mapping should override address mapping as wildcard
+    Given recursive mapping is disable
     Given store "test@localhost" address mapping as wildcard for domain 
"localhost"
     And store "mine@localhost" address mapping for user "user" at domain 
"localhost"
     Then mappings for user "user" at domain "localhost" should contains only 
"mine@localhost"
 
-# Wildcard is not overridden
-  @ignore
   Scenario: direct mapping should override address mapping as wildcard 
(reverse insertion order)
+    Given recursive mapping is disable
     Given store "mine@localhost" address mapping for user "user" at domain 
"localhost"
     And store "test@localhost" address mapping as wildcard for domain 
"localhost"
     Then mappings for user "user" at domain "localhost" should contains only 
"mine@localhost"



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

Reply via email to