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 2015/09/01 09:46:30 UTC
svn commit: r1700412 - in /james/server/trunk/data/data-library/src:
main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
Author: btellier
Date: Tue Sep 1 07:46:30 2015
New Revision: 1700412
URL: http://svn.apache.org/r1700412
Log:
JAMES-1605 AbstractRecipientRewriteTable.mapAddress doesn't respect domainAlias ordering - contributed by matthieu Baechler
Modified:
james/server/trunk/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
james/server/trunk/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
Modified: james/server/trunk/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java?rev=1700412&r1=1700411&r2=1700412&view=diff
==============================================================================
--- james/server/trunk/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java (original)
+++ james/server/trunk/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java Tue Sep 1 07:46:30 2015
@@ -42,6 +42,8 @@ import org.apache.james.rrt.api.Recipien
import org.apache.mailet.MailAddress;
import org.slf4j.Logger;
+import com.google.common.annotations.VisibleForTesting;
+
/**
*
*/
@@ -443,6 +445,10 @@ public abstract class AbstractRecipientR
String mappings = mapAddressInternal(user, domain);
+ return sortMappings(mappings);
+ }
+
+ @VisibleForTesting static String sortMappings(String mappings) {
// check if we need to sort
// TODO: Maybe we should just return the aliasdomain mapping
if (mappings != null && mappings.contains(RecipientRewriteTable.ALIASDOMAIN_PREFIX)) {
@@ -451,8 +457,8 @@ public abstract class AbstractRecipientR
List<String> col = new ArrayList<String>(mapCol.size());
+ int i = 0;
while (mapIt.hasNext()) {
- int i = 0;
String mapping = mapIt.next();
if (mapping.startsWith(RecipientRewriteTable.ALIASDOMAIN_PREFIX)) {
Modified: james/server/trunk/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java?rev=1700412&r1=1700411&r2=1700412&view=diff
==============================================================================
--- james/server/trunk/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java (original)
+++ james/server/trunk/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java Tue Sep 1 07:46:30 2015
@@ -18,15 +18,21 @@
****************************************************************/
package org.apache.james.rrt.lib;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
+
import org.apache.james.lifecycle.api.LifecycleUtil;
import org.apache.james.rrt.api.RecipientRewriteTable;
import org.apache.james.rrt.api.RecipientRewriteTable.ErrorMappingException;
import org.apache.james.rrt.api.RecipientRewriteTableException;
import org.junit.After;
-import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
@@ -294,6 +300,40 @@ public abstract class AbstractRecipientR
}
}
+
+ @Test
+ public void sortMappingsShouldReturnNullWhenNull() {
+ assertNull(AbstractRecipientRewriteTable.sortMappings(null));
+ }
+
+ @Test
+ public void sortMappingsShouldReturnEmptyWhenEmpty() {
+ assertEquals("", AbstractRecipientRewriteTable.sortMappings(""));
+ }
+
+ @Test
+ public void sortMappingsShouldReturnSameStringWhenSingleDomainAlias() {
+ String singleDomainAlias = RecipientRewriteTable.ALIASDOMAIN_PREFIX + "first";
+ assertEquals(singleDomainAlias, AbstractRecipientRewriteTable.sortMappings(singleDomainAlias));
+ }
+
+ @Test
+ public void sortMappingsShouldReturnSameStringWhenTwoDomainAliases() {
+ String firstAliasMapping = RecipientRewriteTable.ALIASDOMAIN_PREFIX + "first";
+ String secondAliasMapping = RecipientRewriteTable.ALIASDOMAIN_PREFIX + "second";
+ String mappings = RecipientRewriteTableUtil.CollectionToMapping(Arrays.asList(firstAliasMapping, secondAliasMapping));
+ assertEquals(mappings, AbstractRecipientRewriteTable.sortMappings(mappings));
+ }
+
+ @Test
+ public void sortMappingsShouldPutDomainAliasFirstWhenVariousMappings() {
+ String regexMapping = RecipientRewriteTable.REGEX_PREFIX + "first";
+ String domainMapping = RecipientRewriteTable.ALIASDOMAIN_PREFIX + "second";
+ String inputMappings = RecipientRewriteTableUtil.CollectionToMapping(Arrays.asList(regexMapping, domainMapping));
+ String expectedMappings = RecipientRewriteTableUtil.CollectionToMapping(Arrays.asList(domainMapping, regexMapping));
+ assertEquals(expectedMappings, AbstractRecipientRewriteTable.sortMappings(inputMappings));
+ }
+
protected abstract AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org