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