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 ma...@apache.org on 2018/04/24 12:50:53 UTC
[24/27] james-project git commit: JAMES-2366 use an object
MappingSource for input of RRT rewriting
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java
index 14aa1c8..9ee4bb5 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java
@@ -29,7 +29,7 @@ import org.apache.james.rrt.api.RecipientRewriteTable;
import org.apache.james.rrt.api.RecipientRewriteTableException;
import org.apache.james.rrt.api.RecipientRewriteTableManagementMBean;
-import com.google.common.collect.ImmutableMap;
+import com.github.steveash.guavate.Guavate;
/**
* Management for RecipientRewriteTables
@@ -46,89 +46,102 @@ public class RecipientRewriteTableManagement extends StandardMBean implements Re
@Override
public void addRegexMapping(String user, String domain, String regex) throws RecipientRewriteTableException {
- rrt.addRegexMapping(user, Domain.of(domain), regex);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.addRegexMapping(source, regex);
}
@Override
public void removeRegexMapping(String user, String domain, String regex) throws RecipientRewriteTableException {
- rrt.removeRegexMapping(user, Domain.of(domain), regex);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.removeRegexMapping(source, regex);
}
@Override
public void addAddressMapping(String user, String domain, String address) throws RecipientRewriteTableException {
- rrt.addAddressMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.addAddressMapping(source, address);
}
@Override
public void removeAddressMapping(String user, String domain, String address) throws RecipientRewriteTableException {
- rrt.removeAddressMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.removeAddressMapping(source, address);
}
@Override
public void addErrorMapping(String user, String domain, String error) throws RecipientRewriteTableException {
- rrt.addErrorMapping(user, Domain.of(domain), error);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.addErrorMapping(source, error);
}
@Override
public void removeErrorMapping(String user, String domain, String error) throws RecipientRewriteTableException {
- rrt.removeErrorMapping(user, Domain.of(domain), error);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.removeErrorMapping(source, error);
}
@Override
public void addDomainMapping(String domain, String targetDomain) throws RecipientRewriteTableException {
- rrt.addAliasDomainMapping(Domain.of(domain), Domain.of(targetDomain));
+ MappingSource source = MappingSource.fromDomain(Domain.of(domain));
+ rrt.addAliasDomainMapping(source, Domain.of(targetDomain));
}
@Override
public void removeDomainMapping(String domain, String targetDomain) throws RecipientRewriteTableException {
- rrt.removeAliasDomainMapping(Domain.of(domain), Domain.of(targetDomain));
+ MappingSource source = MappingSource.fromDomain(Domain.of(domain));
+ rrt.removeAliasDomainMapping(source, Domain.of(targetDomain));
}
@Override
public Mappings getUserDomainMappings(String user, String domain) throws RecipientRewriteTableException {
- return rrt.getUserDomainMappings(user, Domain.of(domain));
+ MappingSource source = MappingSource.fromUser(user, domain);
+ return rrt.getUserDomainMappings(source);
}
@Override
public void addMapping(String user, String domain, String mapping) throws RecipientRewriteTableException {
- rrt.addMapping(user, Domain.of(domain), Mapping.of(mapping));
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.addMapping(source, Mapping.of(mapping));
}
@Override
public void removeMapping(String user, String domain, String mapping) throws RecipientRewriteTableException {
- rrt.removeMapping(user, Domain.of(domain), Mapping.of(mapping));
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.removeMapping(source, Mapping.of(mapping));
}
@Override
public Map<String, Mappings> getAllMappings() throws RecipientRewriteTableException {
- return ImmutableMap.copyOf(rrt.getAllMappings());
+ return rrt.getAllMappings()
+ .entrySet()
+ .stream()
+ .collect(
+ Guavate.toImmutableMap(
+ entry -> entry.getKey().asString(),
+ entry -> entry.getValue()));
}
@Override
public void addForwardMapping(String user, String domain, String address) throws RecipientRewriteTableException {
- rrt.addForwardMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.addForwardMapping(source, address);
}
@Override
public void removeForwardMapping(String user, String domain, String address) throws RecipientRewriteTableException {
- rrt.removeForwardMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rrt.removeForwardMapping(source, address);
}
@Override
- public void addGroupMapping(String toUser, String toDomain, String fromAddress) {
- try {
- rrt.addGroupMapping(toUser, Domain.of(toDomain), fromAddress);
- } catch (RecipientRewriteTableException e) {
- throw new RuntimeException(e);
- }
+ public void addGroupMapping(String toUser, String toDomain, String fromAddress) throws RecipientRewriteTableException {
+ MappingSource source = MappingSource.fromUser(toUser, toDomain);
+ rrt.addGroupMapping(source, fromAddress);
}
@Override
- public void removeGroupMapping(String toUser, String toDomain, String fromAddress) {
- try {
- rrt.removeForwardMapping(toUser, Domain.of(toDomain), fromAddress);
- } catch (RecipientRewriteTableException e) {
- throw new RuntimeException(e);
- }
+ public void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws RecipientRewriteTableException {
+ MappingSource source = MappingSource.fromUser(toUser, toDomain);
+ rrt.removeForwardMapping(source, fromAddress);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
index 1546a84..6de8378 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
@@ -46,32 +46,11 @@ public class RecipientRewriteTableUtil {
* @return the real recipient address, or <code>null</code> if no mapping
* exists
*/
- public static String getTargetString(String user, Domain domain, Map<String, String> mappings) {
- StringBuffer buf;
- String target;
-
- // Look for exact (user@domain) match
- buf = new StringBuffer().append(user).append("@").append(domain.asString());
- target = mappings.get(buf.toString());
- if (target != null) {
- return target;
- }
-
- // Look for user@* match
- buf = new StringBuffer().append(user).append("@*");
- target = mappings.get(buf.toString());
- if (target != null) {
- return target;
- }
-
- // Look for *@domain match
- buf = new StringBuffer().append("*@").append(domain.asString());
- target = mappings.get(buf.toString());
- if (target != null) {
- return target;
- }
-
- return null;
+ public static String getTargetString(String user, Domain domain, Map<MappingSource, String> mappings) {
+ return OptionalUtils.or(
+ Optional.ofNullable(mappings.get(MappingSource.fromUser(user, domain))),
+ Optional.ofNullable(mappings.get(MappingSource.fromDomain(domain))))
+ .orElse(null);
}
/**
@@ -116,15 +95,15 @@ public class RecipientRewriteTableUtil {
* A String which contains a list of mappings
* @return Map which contains the mappings
*/
- public static Map<String, String> getXMLMappings(String mapping) {
- Map<String, String> mappings = new HashMap<>();
+ public static Map<MappingSource, String> getXMLMappings(String mapping) {
+ Map<MappingSource, String> mappings = new HashMap<>();
StringTokenizer tokenizer = new StringTokenizer(mapping, ",");
while (tokenizer.hasMoreTokens()) {
String mappingItem = tokenizer.nextToken();
int index = mappingItem.indexOf('=');
String virtual = mappingItem.substring(0, index).trim().toLowerCase(Locale.US);
String real = mappingItem.substring(index + 1).trim().toLowerCase(Locale.US);
- mappings.put(virtual, real);
+ mappings.put(MappingSource.parse(virtual), real);
}
return mappings;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
index 3f9c4d3..491accb 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
@@ -29,6 +29,7 @@ import org.apache.james.core.Domain;
import org.apache.james.rrt.api.RecipientRewriteTable;
import org.apache.james.rrt.api.RecipientRewriteTableException;
import org.apache.james.rrt.lib.Mapping;
+import org.apache.james.rrt.lib.MappingSource;
import org.apache.james.rrt.lib.Mappings;
import org.apache.james.rrt.lib.MappingsImpl;
import org.apache.james.rrt.lib.MappingsImpl.Builder;
@@ -172,8 +173,8 @@ public abstract class AbstractJamesUsersRepository extends AbstractUsersReposito
}
@Override
- public Map<String, Mappings> getAllMappings() throws RecipientRewriteTableException {
- Map<String, Mappings> mappings = new HashMap<>();
+ public Map<MappingSource, Mappings> getAllMappings() throws RecipientRewriteTableException {
+ Map<MappingSource, Mappings> mappings = new HashMap<>();
if (enableAliases || enableForwarding) {
try {
Iterator<String> users = list();
@@ -190,7 +191,8 @@ public abstract class AbstractJamesUsersRepository extends AbstractUsersReposito
domain = Domain.LOCALHOST;
}
try {
- mappings.put(user, getMappings(username, domain));
+ MappingSource source = MappingSource.fromUser(org.apache.james.core.User.fromUsername(user));
+ mappings.put(source, getMappings(username, domain));
} catch (ErrorMappingException e) {
// shold never happen here
}
@@ -204,86 +206,86 @@ public abstract class AbstractJamesUsersRepository extends AbstractUsersReposito
}
@Override
- public Mappings getUserDomainMappings(String user, Domain domain) throws RecipientRewriteTableException {
+ public Mappings getUserDomainMappings(MappingSource source) throws RecipientRewriteTableException {
return MappingsImpl.empty();
}
@Override
- public void addRegexMapping(String user, Domain domain, String regex) throws RecipientRewriteTableException {
+ public void addRegexMapping(MappingSource source, String regex) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void removeRegexMapping(String user, Domain domain, String regex) throws RecipientRewriteTableException {
+ public void removeRegexMapping(MappingSource source, String regex) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void addAddressMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ public void addAddressMapping(MappingSource source, String address) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void removeAddressMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ public void removeAddressMapping(MappingSource source, String address) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void addErrorMapping(String user, Domain domain, String error) throws RecipientRewriteTableException {
+ public void addErrorMapping(MappingSource source, String error) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void removeErrorMapping(String user, Domain domain, String error) throws RecipientRewriteTableException {
+ public void removeErrorMapping(MappingSource source, String error) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void addMapping(String user, Domain domain, Mapping mapping) throws RecipientRewriteTableException {
+ public void addMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void removeMapping(String user, Domain domain, Mapping mapping) throws RecipientRewriteTableException {
+ public void removeMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void addAliasDomainMapping(Domain aliasDomain, Domain realDomain) throws RecipientRewriteTableException {
+ public void addAliasDomainMapping(MappingSource source, Domain realDomain) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void removeAliasDomainMapping(Domain aliasDomain, Domain realDomain) throws RecipientRewriteTableException {
+ public void removeAliasDomainMapping(MappingSource source, Domain realDomain) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void addForwardMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ public void addForwardMapping(MappingSource source, String address) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void removeForwardMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ public void removeForwardMapping(MappingSource source, String address) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void addGroupMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ public void addGroupMapping(MappingSource source, String address) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
@Override
- public void removeGroupMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ public void removeGroupMapping(MappingSource source, String address) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
index 2873feb..17bb88e 100644
--- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
@@ -26,7 +26,6 @@ import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.core.Domain;
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.Rule;
@@ -53,16 +52,15 @@ public abstract class AbstractRecipientRewriteTableTest {
}
public void tearDown() throws Exception {
- Map<String, Mappings> mappings = virtualUserTable.getAllMappings();
+ Map<MappingSource, Mappings> mappings = virtualUserTable.getAllMappings();
if (mappings != null) {
- for (String key : virtualUserTable.getAllMappings().keySet()) {
+ for (MappingSource key : virtualUserTable.getAllMappings().keySet()) {
Mappings map = mappings.get(key);
- String[] args = key.split("@");
map.asStream()
.forEach(Throwing.consumer(mapping ->
- virtualUserTable.removeMapping(args[0], Domain.of(args[1]), mapping)));
+ virtualUserTable.removeMapping(key, mapping)));
}
}
@@ -71,9 +69,8 @@ public abstract class AbstractRecipientRewriteTableTest {
@Test
public void testStoreAndGetMappings() throws ErrorMappingException, RecipientRewriteTableException {
- String user = "*";
Domain domain = Domain.of("test");
- virtualUserTable.addMapping(user, domain, Mapping.regex("prefix_.*:admin@test"));
+ virtualUserTable.addMapping(MappingSource.fromDomain(domain), Mapping.regex("prefix_.*:admin@test"));
assertThat(virtualUserTable.getMappings("prefix_abc", domain)).isNotEmpty();
}
@@ -81,6 +78,7 @@ public abstract class AbstractRecipientRewriteTableTest {
public void testStoreAndRetrieveRegexMapping() throws ErrorMappingException, RecipientRewriteTableException {
String user = "test";
Domain domain = Domain.LOCALHOST;
+ MappingSource source = MappingSource.fromUser(user, domain);
// String regex = "(.*):{$1}@localhost";
// String regex2 = "(.+):{$1}@test";
String regex = "(.*)@localhost";
@@ -90,18 +88,18 @@ public abstract class AbstractRecipientRewriteTableTest {
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
.isEqualTo(MappingsImpl.empty());
- virtualUserTable.addMapping(user, domain, Mapping.regex(regex));
- virtualUserTable.addMapping(user, domain, Mapping.regex(regex2));
+ virtualUserTable.addMapping(source, Mapping.regex(regex));
+ virtualUserTable.addMapping(source, Mapping.regex(regex2));
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("Two mappings").hasSize(2);
assertThat(virtualUserTable.getAllMappings()).describedAs("One mappingline").hasSize(1);
- virtualUserTable.removeMapping(user, domain, Mapping.regex(regex));
+ virtualUserTable.removeMapping(source, Mapping.regex(regex));
- assertThatThrownBy(() -> virtualUserTable.addRegexMapping(user, domain, invalidRegex))
+ assertThatThrownBy(() -> virtualUserTable.addRegexMapping(source, invalidRegex))
.describedAs("Invalid Mapping throw exception")
.isInstanceOf(RecipientRewriteTableException.class);
- virtualUserTable.removeMapping(user, domain, Mapping.regex(regex2));
+ virtualUserTable.removeMapping(source, Mapping.regex(regex2));
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
@@ -116,18 +114,21 @@ public abstract class AbstractRecipientRewriteTableTest {
String regex = "(.*)@localhost";
String regex2 = "(.+)@test";
- virtualUserTable.addMapping(user, Domain.LOCALHOST, Mapping.regex(regex));
- virtualUserTable.addMapping(user, Domain.LOCALHOST, Mapping.regex(regex2));
- virtualUserTable.addMapping(user2, Domain.LOCALHOST, Mapping.address(user + "@" + Domain.LOCALHOST.asString()));
+ MappingSource source1 = MappingSource.fromUser(user, Domain.LOCALHOST);
+ MappingSource source2 = MappingSource.fromUser(user2, Domain.LOCALHOST);
+
+ virtualUserTable.addMapping(source1, Mapping.regex(regex));
+ virtualUserTable.addMapping(source1, Mapping.regex(regex2));
+ virtualUserTable.addMapping(source2, Mapping.address(user + "@" + Domain.LOCALHOST.asString()));
assertThat(virtualUserTable.getAllMappings())
.describedAs("One mappingline")
.containsOnly(
- Pair.of(user + "@" + Domain.LOCALHOST.asString(), MappingsImpl.builder()
+ Pair.of(source1, MappingsImpl.builder()
.add(Mapping.regex(regex))
.add(Mapping.regex(regex2))
.build()),
- Pair.of(user2 + "@" + Domain.LOCALHOST.asString(), MappingsImpl.builder()
+ Pair.of(source2, MappingsImpl.builder()
.add(Mapping.address(user + "@" + Domain.LOCALHOST.asString()))
.build()));
}
@@ -137,20 +138,21 @@ public abstract class AbstractRecipientRewriteTableTest {
String user = "test";
Domain domain = Domain.LOCALHOST;
+ MappingSource source = MappingSource.fromUser(user, domain);
String address = "test@localhost2";
String address2 = "test@james";
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
.isEqualTo(MappingsImpl.empty());
- virtualUserTable.addMapping(user, domain, Mapping.address(address));
- virtualUserTable.addMapping(user, domain, Mapping.address(address2));
+ virtualUserTable.addMapping(source, Mapping.address(address));
+ virtualUserTable.addMapping(source, Mapping.address(address2));
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("Two mappings").hasSize(2);
assertThat(virtualUserTable.getAllMappings()).describedAs("One mappingline").hasSize(1);
- virtualUserTable.removeMapping(user, domain, Mapping.address(address));
- virtualUserTable.removeMapping(user, domain, Mapping.address(address2));
+ virtualUserTable.removeMapping(source, Mapping.address(address));
+ virtualUserTable.removeMapping(source, Mapping.address(address2));
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
.isEqualTo(MappingsImpl.empty());
@@ -161,12 +163,13 @@ public abstract class AbstractRecipientRewriteTableTest {
public void testStoreAndRetrieveErrorMapping() throws ErrorMappingException, RecipientRewriteTableException {
String user = "test";
Domain domain = Domain.LOCALHOST;
+ MappingSource source = MappingSource.fromUser(user, domain);
String error = "bounce!";
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
.isEqualTo(MappingsImpl.empty());
- virtualUserTable.addMapping(user, domain, Mapping.error(error));
+ virtualUserTable.addMapping(source, Mapping.error(error));
assertThat(virtualUserTable.getAllMappings()).describedAs("One mappingline").hasSize(1);
assertThatThrownBy(() ->
@@ -174,7 +177,7 @@ public abstract class AbstractRecipientRewriteTableTest {
.describedAs("Exception thrown on to many mappings")
.isInstanceOf(ErrorMappingException.class);
- virtualUserTable.removeMapping(user, domain, Mapping.error(error));
+ virtualUserTable.removeMapping(source, Mapping.error(error));
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
.isEqualTo(MappingsImpl.empty());
@@ -188,18 +191,19 @@ public abstract class AbstractRecipientRewriteTableTest {
Domain domain = Domain.LOCALHOST;
String address = "test@localhost2";
String address2 = "test@james";
+ MappingSource source = MappingSource.fromUser(user, domain);
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
.isEqualTo(MappingsImpl.empty());
- virtualUserTable.addMapping(RecipientRewriteTable.WILDCARD, domain, Mapping.address(address));
- virtualUserTable.addMapping(user, domain, Mapping.address(address2));
+ virtualUserTable.addMapping(MappingSource.fromDomain(domain), Mapping.address(address));
+ virtualUserTable.addMapping(source, Mapping.address(address2));
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("One mappings").hasSize(1);
assertThat(virtualUserTable.getMappings(user2, domain)).describedAs("One mappings").hasSize(1);
- virtualUserTable.removeMapping(user, domain, Mapping.address(address2));
- virtualUserTable.removeMapping(RecipientRewriteTable.WILDCARD, domain, Mapping.address(address));
+ virtualUserTable.removeMapping(source, Mapping.address(address2));
+ virtualUserTable.removeMapping(MappingSource.fromDomain(domain), Mapping.address(address));
assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
.isEqualTo(MappingsImpl.empty());
@@ -215,15 +219,18 @@ public abstract class AbstractRecipientRewriteTableTest {
Domain domain1 = Domain.of("domain1");
Domain domain2 = Domain.of("domain2");
Domain domain3 = Domain.of("domain3");
+ MappingSource source1 = MappingSource.fromUser(user1, domain1);
+ MappingSource source2 = MappingSource.fromUser(user2, domain2);
+ MappingSource source3 = MappingSource.fromUser(user3, domain3);
virtualUserTable.setRecursiveMapping(true);
assertThat(virtualUserTable.getAllMappings()).describedAs("No mapping").isEmpty();
- virtualUserTable.addMapping(user1, domain1, Mapping.address(user2 + "@" + domain2.asString()));
- virtualUserTable.addMapping(user2, domain2, Mapping.address(user3 + "@" + domain3.asString()));
+ virtualUserTable.addMapping(source1, Mapping.address(user2 + "@" + domain2.asString()));
+ virtualUserTable.addMapping(source2, Mapping.address(user3 + "@" + domain3.asString()));
assertThat(virtualUserTable.getMappings(user1, domain1)).containsOnly(Mapping.address(user3 + "@" + domain3.asString()));
- virtualUserTable.addMapping(user3, domain3, Mapping.address(user1 + "@" + domain1.asString()));
+ virtualUserTable.addMapping(source3, Mapping.address(user1 + "@" + domain1.asString()));
assertThatThrownBy(() ->
virtualUserTable.getMappings(user1, domain1))
@@ -244,8 +251,8 @@ public abstract class AbstractRecipientRewriteTableTest {
assertThat(virtualUserTable.getAllMappings()).describedAs("No mappings").isEmpty();
- virtualUserTable.addMapping(RecipientRewriteTable.WILDCARD, aliasDomain, Mapping.address(user2 + "@" + domain));
- virtualUserTable.addMapping(RecipientRewriteTable.WILDCARD, aliasDomain, Mapping.domain(Domain.of(domain)));
+ virtualUserTable.addMapping(MappingSource.fromDomain(aliasDomain), Mapping.address(user2 + "@" + domain));
+ virtualUserTable.addMapping(MappingSource.fromDomain(aliasDomain), Mapping.domain(Domain.of(domain)));
assertThat(virtualUserTable.getMappings(user, aliasDomain))
.describedAs("Domain mapped as first, Address mapped as second")
@@ -254,8 +261,8 @@ public abstract class AbstractRecipientRewriteTableTest {
.add(Mapping.address(user2 + "@" + domain))
.build());
- virtualUserTable.removeMapping(RecipientRewriteTable.WILDCARD, aliasDomain, Mapping.address(user2 + "@" + domain));
- virtualUserTable.removeMapping(RecipientRewriteTable.WILDCARD, aliasDomain, Mapping.domain(Domain.of(domain)));
+ virtualUserTable.removeMapping(MappingSource.fromDomain(aliasDomain), Mapping.address(user2 + "@" + domain));
+ virtualUserTable.removeMapping(MappingSource.fromDomain(aliasDomain), Mapping.domain(Domain.of(domain)));
}
@Test
@@ -263,11 +270,12 @@ public abstract class AbstractRecipientRewriteTableTest {
String user = "test";
Domain domain = Domain.LOCALHOST;
String address = "test@localhost2";
+ MappingSource source = MappingSource.fromUser(user, domain);
expectedException.expect(RecipientRewriteTableException.class);
- virtualUserTable.addAddressMapping(user, domain, address);
- virtualUserTable.addAddressMapping(user, domain, address);
+ virtualUserTable.addAddressMapping(source, address);
+ virtualUserTable.addAddressMapping(source, address);
}
@Test
@@ -275,9 +283,10 @@ public abstract class AbstractRecipientRewriteTableTest {
String user = "test";
Domain domain = Domain.LOCALHOST;
String address = "test@localhost2";
+ MappingSource source = MappingSource.fromUser(user, domain);
- virtualUserTable.addMapping(user, domain, Mapping.address(address));
- virtualUserTable.addMapping(user, domain, Mapping.regex(address));
+ virtualUserTable.addMapping(source, Mapping.address(address));
+ virtualUserTable.addMapping(source, Mapping.regex(address));
assertThat(virtualUserTable.getMappings(user, domain)).hasSize(2);
}
@@ -288,9 +297,10 @@ public abstract class AbstractRecipientRewriteTableTest {
Domain domain = Domain.LOCALHOST;
String address = "test@localhost2";
String address2 = "test@james";
+ MappingSource source = MappingSource.fromUser(user, domain);
- virtualUserTable.addMapping(user, domain, Mapping.forward(address));
- virtualUserTable.addMapping(user, domain, Mapping.forward(address2));
+ virtualUserTable.addMapping(source, Mapping.forward(address));
+ virtualUserTable.addMapping(source, Mapping.forward(address2));
assertThat(virtualUserTable.getMappings(user, domain)).hasSize(2);
}
@@ -301,12 +311,13 @@ public abstract class AbstractRecipientRewriteTableTest {
Domain domain = Domain.LOCALHOST;
String address = "test@localhost2";
String address2 = "test@james";
+ MappingSource source = MappingSource.fromUser(user, domain);
- virtualUserTable.addMapping(user, domain, Mapping.forward(address));
- virtualUserTable.addMapping(user, domain, Mapping.forward(address2));
+ virtualUserTable.addMapping(source, Mapping.forward(address));
+ virtualUserTable.addMapping(source, Mapping.forward(address2));
- virtualUserTable.removeMapping(user, domain, Mapping.forward(address));
- virtualUserTable.removeMapping(user, domain, Mapping.forward(address2));
+ virtualUserTable.removeMapping(source, Mapping.forward(address));
+ virtualUserTable.removeMapping(source, Mapping.forward(address2));
assertThat(virtualUserTable.getMappings(user, domain))
.isEqualTo(MappingsImpl.empty());
@@ -318,9 +329,10 @@ public abstract class AbstractRecipientRewriteTableTest {
Domain domain = Domain.LOCALHOST;
String address = "test@localhost2";
String address2 = "test@james";
+ MappingSource source = MappingSource.fromUser(user, domain);
- virtualUserTable.addMapping(user, domain, Mapping.group(address));
- virtualUserTable.addMapping(user, domain, Mapping.group(address2));
+ virtualUserTable.addMapping(source, Mapping.group(address));
+ virtualUserTable.addMapping(source, Mapping.group(address2));
assertThat(virtualUserTable.getMappings(user, domain)).hasSize(2);
}
@@ -331,12 +343,13 @@ public abstract class AbstractRecipientRewriteTableTest {
Domain domain = Domain.LOCALHOST;
String address = "test@localhost2";
String address2 = "test@james";
+ MappingSource source = MappingSource.fromUser(user, domain);
- virtualUserTable.addMapping(user, domain, Mapping.group(address));
- virtualUserTable.addMapping(user, domain, Mapping.group(address2));
+ virtualUserTable.addMapping(source, Mapping.group(address));
+ virtualUserTable.addMapping(source, Mapping.group(address2));
- virtualUserTable.removeMapping(user, domain, Mapping.group(address));
- virtualUserTable.removeMapping(user, domain, Mapping.group(address2));
+ virtualUserTable.removeMapping(source, Mapping.group(address));
+ virtualUserTable.removeMapping(source, Mapping.group(address2));
assertThat(virtualUserTable.getMappings(user, domain))
.isEqualTo(MappingsImpl.empty());
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
index bd888ca..a2e83b7 100644
--- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
+++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
@@ -39,13 +39,15 @@ public class RewriteTablesStepdefs {
@Given("store \"([^\"]*)\" regexp mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
public void storeRegexpMappingForUserAtDomain(String regexp, String user, String domain) throws Throwable {
- rewriteTable.addRegexMapping(user, Domain.of(domain), regexp);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.addRegexMapping(source, regexp);
}
@Given("store an invalid \"([^\"]*)\" regexp mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
public void storeInvalidRegexpMappingForUserAtDomain(String regexp, String user, String domain) {
try {
- rewriteTable.addRegexMapping(user, Domain.of(domain), regexp);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.addRegexMapping(source, regexp);
} catch (RecipientRewriteTableException e) {
this.exception = e;
}
@@ -53,12 +55,14 @@ public class RewriteTablesStepdefs {
@Given("store \"([^\"]*)\" address mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
public void storeAddressMappingForUserAtDomain(String address, String user, String domain) throws Throwable {
- rewriteTable.addAddressMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.addAddressMapping(source, address);
}
@Given("store \"([^\"]*)\" error mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
public void storeErrorMappingForUserAtDomain(String error, String user, String domain) throws Throwable {
- rewriteTable.addErrorMapping(user, Domain.of(domain), error);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.addErrorMapping(source, error);
}
@Given("store \"([^\"]*)\" address mapping as wildcard for domain \"([^\"]*)\"")
@@ -68,17 +72,19 @@ public class RewriteTablesStepdefs {
@Given("store \"([^\"]*)\" alias domain mapping for domain \"([^\"]*)\"")
public void storeAliasDomainMappingForDomain(String aliasDomain, String domain) throws Throwable {
- rewriteTable.addAliasDomainMapping(Domain.of(aliasDomain), Domain.of(domain));
+ rewriteTable.addAliasDomainMapping(MappingSource.fromDomain(Domain.of(aliasDomain)), Domain.of(domain));
}
@Given("store \"([^\"]*)\" forward mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
public void storeForwardMappingForUserAtDomain(String address, String user, String domain) throws Throwable {
- rewriteTable.addForwardMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.addForwardMapping(source, address);
}
@Given("store \"([^\"]*)\" group mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
public void storeGroupMappingForUserAtDomain(String address, String user, String domain) throws Throwable {
- rewriteTable.addGroupMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.addGroupMapping(source, address);
}
@Given("recursive mapping is disable")
@@ -93,27 +99,32 @@ public class RewriteTablesStepdefs {
@When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a regexp mapping \"([^\"]*)\"")
public void userAtDomainRemovesRegexpMapping(String user, String domain, String regexp) throws Throwable {
- rewriteTable.removeRegexMapping(user, Domain.of(domain), regexp);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.removeRegexMapping(source, regexp);
}
@When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a address mapping \"([^\"]*)\"")
public void userAtDomainRemovesAddressMapping(String user, String domain, String address) throws Throwable {
- rewriteTable.removeAddressMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.removeAddressMapping(source, address);
}
@When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a error mapping \"([^\"]*)\"")
public void userAtDomainRemovesErrorMapping(String user, String domain, String error) throws Throwable {
- rewriteTable.removeErrorMapping(user, Domain.of(domain), error);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.removeErrorMapping(source, error);
}
@When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a forward mapping \"([^\"]*)\"")
public void userAtDomainRemovesForwardMapping(String user, String domain, String address) throws Throwable {
- rewriteTable.removeForwardMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.removeForwardMapping(source, address);
}
@When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a group mapping \"([^\"]*)\"")
public void userAtDomainRemovesGroupMapping(String user, String domain, String address) throws Throwable {
- rewriteTable.removeGroupMapping(user, Domain.of(domain), address);
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.removeGroupMapping(source, address);
}
@When("wildcard address mapping \"([^\"]*)\" at domain \"([^\"]*)\" is removed")
@@ -123,7 +134,7 @@ public class RewriteTablesStepdefs {
@When("alias domain mapping \"([^\"]*)\" for \"([^\"]*)\" domain is removed")
public void removeAliasDomainMappingForDomain(String aliasdomain, String domain) throws Throwable {
- rewriteTable.removeAliasDomainMapping(Domain.of(aliasdomain), Domain.of(domain));
+ rewriteTable.removeAliasDomainMapping(MappingSource.fromDomain(Domain.of(aliasdomain)), Domain.of(domain));
}
@Then("mappings should be empty")
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java b/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
index b45e4ed..fca798c 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
@@ -28,8 +28,10 @@ import java.util.stream.Stream;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.core.Domain;
+import org.apache.james.core.User;
import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
import org.apache.james.rrt.lib.Mapping;
+import org.apache.james.rrt.lib.MappingSource;
import org.apache.james.rrt.lib.Mappings;
import org.apache.james.rrt.lib.MappingsImpl;
import org.apache.james.util.OptionalUtils;
@@ -41,32 +43,22 @@ import com.google.common.collect.Multimaps;
public class MemoryRecipientRewriteTable extends AbstractRecipientRewriteTable {
private static class InMemoryMappingEntry {
- private final String user;
- private final Domain domain;
+ private final MappingSource source;
private final Mapping mapping;
- public InMemoryMappingEntry(String user, Domain domain, Mapping mapping) {
- this.user = user;
- this.domain = domain;
+ public InMemoryMappingEntry(MappingSource source, Mapping mapping) {
+ this.source = source;
this.mapping = mapping;
}
- public String getUser() {
- return user;
- }
-
- public Domain getDomain() {
- return domain;
+ public MappingSource getSource() {
+ return source;
}
public Mapping getMapping() {
return mapping;
}
- public String asKey() {
- return getUser() + "@" + getDomain().asString();
- }
-
@Override
public boolean equals(Object o) {
if (o == null || this.getClass() != o.getClass()) {
@@ -75,14 +67,13 @@ public class MemoryRecipientRewriteTable extends AbstractRecipientRewriteTable {
InMemoryMappingEntry that = (InMemoryMappingEntry) o;
- return Objects.equal(this.user, that.user)
- && Objects.equal(this.domain, that.domain)
+ return Objects.equal(this.source, that.source)
&& Objects.equal(this.mapping, that.mapping);
}
@Override
public int hashCode() {
- return Objects.hashCode(user, domain, mapping);
+ return Objects.hashCode(source, mapping);
}
}
@@ -93,32 +84,32 @@ public class MemoryRecipientRewriteTable extends AbstractRecipientRewriteTable {
}
@Override
- public void addMapping(String user, Domain domain, Mapping mapping) {
- mappingEntries.add(new InMemoryMappingEntry(getFixedUser(user), getFixedDomain(domain), mapping));
+ public void addMapping(MappingSource source, Mapping mapping) {
+ mappingEntries.add(new InMemoryMappingEntry(source, mapping));
}
@Override
- public void removeMapping(String user, Domain domain, Mapping mapping) {
- mappingEntries.remove(new InMemoryMappingEntry(getFixedUser(user), getFixedDomain(domain), mapping));
+ public void removeMapping(MappingSource source, Mapping mapping) {
+ mappingEntries.remove(new InMemoryMappingEntry(source, mapping));
}
@Override
- public Mappings getUserDomainMappings(String user, Domain domain) {
- return retrieveMappings(user, domain)
+ public Mappings getUserDomainMappings(MappingSource mappingSource) {
+ return retrieveMappings(mappingSource)
.orElse(null);
}
@Override
protected Mappings mapAddress(String user, Domain domain) {
return OptionalUtils.orSuppliers(
- () -> retrieveMappings(user, domain),
- () -> retrieveMappings(WILDCARD, domain))
+ () -> retrieveMappings(MappingSource.fromUser(User.fromLocalPartWithDomain(user, domain))),
+ () -> retrieveMappings(MappingSource.fromDomain(domain)))
.orElse(MappingsImpl.empty());
}
@Override
- public Map<String, Mappings> getAllMappings() {
- return Multimaps.index(mappingEntries, InMemoryMappingEntry::asKey)
+ public Map<MappingSource, Mappings> getAllMappings() {
+ return Multimaps.index(mappingEntries, InMemoryMappingEntry::getSource)
.asMap()
.entrySet()
.stream()
@@ -132,9 +123,9 @@ public class MemoryRecipientRewriteTable extends AbstractRecipientRewriteTable {
.map(InMemoryMappingEntry::getMapping));
}
- private Optional<Mappings> retrieveMappings(String user, Domain domain) {
+ private Optional<Mappings> retrieveMappings(MappingSource mappingSource) {
Stream<Mapping> userEntries = mappingEntries.stream()
- .filter(mappingEntry -> user.equals(mappingEntry.getUser()) && domain.equals(mappingEntry.getDomain()))
+ .filter(mappingEntry -> mappingEntry.source.equals(mappingSource))
.map(InMemoryMappingEntry::getMapping);
return MappingsImpl.fromMappings(userEntries).toOptional();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java
index 9fea7da..bdb8dbc 100755
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java
@@ -28,6 +28,7 @@ import javax.mail.MessagingException;
import org.apache.james.core.Domain;
import org.apache.james.core.MailAddress;
+import org.apache.james.rrt.lib.MappingSource;
import org.apache.james.rrt.lib.RecipientRewriteTableUtil;
import org.apache.mailet.Experimental;
@@ -80,7 +81,7 @@ public class XMLRecipientRewriteTable extends AbstractRecipientRewriteTable {
/**
* Holds the configured mappings
*/
- private Map<String, String> mappings = new HashMap<>();
+ private Map<MappingSource, String> mappings = new HashMap<>();
@Override
public void init() throws MessagingException {
@@ -99,7 +100,7 @@ public class XMLRecipientRewriteTable extends AbstractRecipientRewriteTable {
* the mapping of virtual to real recipients
*/
@Override
- protected void mapRecipients(Map<MailAddress, String> recipientsMap) throws MessagingException {
+ protected void mapRecipients(Map<MailAddress, String> recipientsMap) {
Collection<MailAddress> recipients = recipientsMap.keySet();
for (MailAddress source : recipients) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
index c9db765..2e8e892 100644
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
+++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
@@ -38,6 +38,7 @@ import org.apache.james.protocols.smtp.hook.HookReturnCode;
import org.apache.james.protocols.smtp.utils.BaseFakeSMTPSession;
import org.apache.james.rrt.api.RecipientRewriteTable;
import org.apache.james.rrt.api.RecipientRewriteTableException;
+import org.apache.james.rrt.lib.MappingSource;
import org.apache.james.rrt.memory.MemoryRecipientRewriteTable;
import org.apache.james.smtpserver.fastfail.ValidRcptHandler;
import org.apache.james.user.api.UsersRepository;
@@ -116,8 +117,8 @@ public class ValidRcptHandlerTest {
private RecipientRewriteTable setUpRecipientRewriteTable(DomainList domainList) throws RecipientRewriteTableException {
MemoryRecipientRewriteTable memoryRecipientRewriteTable = new MemoryRecipientRewriteTable();
memoryRecipientRewriteTable.setDomainList(domainList);
- memoryRecipientRewriteTable.addAddressMapping(USER1, Domain.LOCALHOST, "address");
- memoryRecipientRewriteTable.addErrorMapping(USER2, Domain.LOCALHOST, "554 BOUNCE");
+ memoryRecipientRewriteTable.addAddressMapping(MappingSource.fromUser(USER1, Domain.LOCALHOST), "address");
+ memoryRecipientRewriteTable.addErrorMapping(MappingSource.fromUser(USER2, Domain.LOCALHOST), "554 BOUNCE");
return memoryRecipientRewriteTable;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java
index 2145d40..935f88a 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/ForwardRoutes.java
@@ -39,13 +39,16 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import org.apache.james.core.MailAddress;
+import org.apache.james.core.User;
import org.apache.james.domainlist.api.DomainListException;
import org.apache.james.rrt.api.RecipientRewriteTable;
import org.apache.james.rrt.api.RecipientRewriteTableException;
import org.apache.james.rrt.lib.Mapping;
+import org.apache.james.rrt.lib.MappingSource;
import org.apache.james.rrt.lib.Mappings;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
+import org.apache.james.util.OptionalUtils;
import org.apache.james.webadmin.Constants;
import org.apache.james.webadmin.Routes;
import org.apache.james.webadmin.dto.ForwardDestinationResponse;
@@ -134,6 +137,8 @@ public class ForwardRoutes implements Routes {
mappings.entrySet().stream()
.filter(e -> e.getValue().contains(Mapping.Type.Forward))
.map(Map.Entry::getKey)
+ .flatMap(source -> OptionalUtils.toStream(source.asMailAddress()))
+ .map(MailAddress::asString)
.collect(Guavate.toImmutableSortedSet()))
.orElse(ImmutableSortedSet.of());
}
@@ -161,7 +166,8 @@ public class ForwardRoutes implements Routes {
MailAddress forwardBaseAddress = parseMailAddress(request.params(FORWARD_BASE_ADDRESS));
ensureUserExist(forwardBaseAddress);
MailAddress destinationAddress = parseMailAddress(request.params(FORWARD_DESTINATION_ADDRESS));
- recipientRewriteTable.addForwardMapping(forwardBaseAddress.getLocalPart(), forwardBaseAddress.getDomain(), destinationAddress.asString());
+ MappingSource source = MappingSource.fromUser(User.fromLocalPartWithDomain(forwardBaseAddress.getLocalPart(), forwardBaseAddress.getDomain()));
+ recipientRewriteTable.addForwardMapping(source, destinationAddress.asString());
return halt(HttpStatus.CREATED_201);
}
@@ -193,10 +199,8 @@ public class ForwardRoutes implements Routes {
public HaltException removeFromForwardDestination(Request request, Response response) throws JsonExtractException, AddressException, RecipientRewriteTableException {
MailAddress baseAddress = parseMailAddress(request.params(FORWARD_BASE_ADDRESS));
MailAddress destinationAddressToBeRemoved = parseMailAddress(request.params(FORWARD_DESTINATION_ADDRESS));
- recipientRewriteTable.removeForwardMapping(
- baseAddress.getLocalPart(),
- baseAddress.getDomain(),
- destinationAddressToBeRemoved.asString());
+ MappingSource source = MappingSource.fromUser(User.fromLocalPartWithDomain(baseAddress.getLocalPart(), baseAddress.getDomain()));
+ recipientRewriteTable.removeForwardMapping(source, destinationAddressToBeRemoved.asString());
return halt(HttpStatus.OK_200);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
index 1f5cd39..2625a46 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
@@ -40,11 +40,13 @@ import javax.ws.rs.Produces;
import org.apache.james.core.Domain;
import org.apache.james.core.MailAddress;
+import org.apache.james.core.User;
import org.apache.james.domainlist.api.DomainList;
import org.apache.james.domainlist.api.DomainListException;
import org.apache.james.rrt.api.RecipientRewriteTable;
import org.apache.james.rrt.api.RecipientRewriteTableException;
import org.apache.james.rrt.lib.Mapping;
+import org.apache.james.rrt.lib.MappingSource;
import org.apache.james.rrt.lib.Mappings;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
@@ -62,7 +64,6 @@ import org.slf4j.LoggerFactory;
import com.github.steveash.guavate.Guavate;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableSortedSet;
-
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -129,6 +130,8 @@ public class GroupsRoutes implements Routes {
mappings.entrySet().stream()
.filter(e -> e.getValue().contains(Mapping.Type.Group))
.map(Map.Entry::getKey)
+ .flatMap(source -> OptionalUtils.toStream(source.asMailAddress()))
+ .map(MailAddress::asString)
.collect(Guavate.toImmutableSortedSet()))
.orElse(ImmutableSortedSet.of());
}
@@ -159,7 +162,8 @@ public class GroupsRoutes implements Routes {
ensureRegisteredDomain(domain);
ensureNotShadowingAnotherAddress(groupAddress);
MailAddress userAddress = parseMailAddress(request.params(USER_ADDRESS));
- recipientRewriteTable.addGroupMapping(groupAddress.getLocalPart(), domain, userAddress.asString());
+ MappingSource source = MappingSource.fromUser(User.fromLocalPartWithDomain(groupAddress.getLocalPart(), domain));
+ recipientRewriteTable.addGroupMapping(source, userAddress.asString());
return halt(HttpStatus.CREATED_201);
}
@@ -201,10 +205,10 @@ public class GroupsRoutes implements Routes {
public HaltException removeFromGroup(Request request, Response response) throws JsonExtractException, AddressException, RecipientRewriteTableException {
MailAddress groupAddress = parseMailAddress(request.params(GROUP_ADDRESS));
MailAddress userAddress = parseMailAddress(request.params(USER_ADDRESS));
- recipientRewriteTable.removeGroupMapping(
- groupAddress.getLocalPart(),
- groupAddress.getDomain(),
- userAddress.asString());
+ MappingSource source = MappingSource
+ .fromUser(
+ User.fromLocalPartWithDomain(groupAddress.getLocalPart(), groupAddress.getDomain()));
+ recipientRewriteTable.removeGroupMapping(source, userAddress.asString());
return halt(HttpStatus.OK_200);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/ForwardRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/ForwardRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/ForwardRoutesTest.java
index 08306a5..ea00515 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/ForwardRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/ForwardRoutesTest.java
@@ -44,6 +44,7 @@ import org.apache.james.domainlist.memory.MemoryDomainList;
import org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.rrt.api.RecipientRewriteTable;
import org.apache.james.rrt.api.RecipientRewriteTableException;
+import org.apache.james.rrt.lib.MappingSource;
import org.apache.james.rrt.memory.MemoryRecipientRewriteTable;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.memory.MemoryUsersRepository;
@@ -363,9 +364,9 @@ class ForwardRoutesTest {
@BeforeEach
void setup() throws Exception {
super.setUp();
- memoryRecipientRewriteTable.addErrorMapping("error", DOMAIN, "disabled");
- memoryRecipientRewriteTable.addRegexMapping("regex", DOMAIN, ".*@b\\.com");
- memoryRecipientRewriteTable.addAliasDomainMapping(Domain.of("alias"), DOMAIN);
+ memoryRecipientRewriteTable.addErrorMapping(MappingSource.fromUser("error", DOMAIN), "disabled");
+ memoryRecipientRewriteTable.addRegexMapping(MappingSource.fromUser("regex", DOMAIN), ".*@b\\.com");
+ memoryRecipientRewriteTable.addAliasDomainMapping(MappingSource.fromDomain(Domain.of("alias")), DOMAIN);
}
}
@@ -524,7 +525,7 @@ class ForwardRoutesTest {
void putShouldReturnErrorWhenRecipientRewriteTableExceptionIsThrown() throws Exception {
doThrow(RecipientRewriteTableException.class)
.when(memoryRecipientRewriteTable)
- .addForwardMapping(anyString(), any(), anyString());
+ .addForwardMapping(any(), anyString());
when()
.put(ALICE + SEPARATOR + "targets" + SEPARATOR + BOB)
@@ -537,7 +538,7 @@ class ForwardRoutesTest {
void putShouldReturnErrorWhenErrorMappingExceptionIsThrown() throws Exception {
doThrow(RecipientRewriteTable.ErrorMappingException.class)
.when(memoryRecipientRewriteTable)
- .addForwardMapping(anyString(), any(), anyString());
+ .addForwardMapping(any(), anyString());
when()
.put(ALICE + SEPARATOR + "targets" + SEPARATOR + BOB)
@@ -550,7 +551,7 @@ class ForwardRoutesTest {
void putShouldReturnErrorWhenRuntimeExceptionIsThrown() throws Exception {
doThrow(RuntimeException.class)
.when(memoryRecipientRewriteTable)
- .addForwardMapping(anyString(), any(), anyString());
+ .addForwardMapping(any(), anyString());
when()
.put(ALICE + SEPARATOR + "targets" + SEPARATOR + BOB)
@@ -602,7 +603,7 @@ class ForwardRoutesTest {
void deleteShouldReturnErrorWhenRecipientRewriteTableExceptionIsThrown() throws Exception {
doThrow(RecipientRewriteTableException.class)
.when(memoryRecipientRewriteTable)
- .removeForwardMapping(anyString(), any(), anyString());
+ .removeForwardMapping(any(), anyString());
when()
.delete(ALICE + SEPARATOR + "targets" + SEPARATOR + BOB)
@@ -615,7 +616,7 @@ class ForwardRoutesTest {
void deleteShouldReturnErrorWhenErrorMappingExceptionIsThrown() throws Exception {
doThrow(RecipientRewriteTable.ErrorMappingException.class)
.when(memoryRecipientRewriteTable)
- .removeForwardMapping(anyString(), any(), anyString());
+ .removeForwardMapping(any(), anyString());
when()
.delete(ALICE + SEPARATOR + "targets" + SEPARATOR + BOB)
@@ -628,7 +629,7 @@ class ForwardRoutesTest {
void deleteShouldReturnErrorWhenRuntimeExceptionIsThrown() throws Exception {
doThrow(RuntimeException.class)
.when(memoryRecipientRewriteTable)
- .removeForwardMapping(anyString(), any(), anyString());
+ .removeForwardMapping(any(), anyString());
when()
.delete(ALICE + SEPARATOR + "targets" + SEPARATOR + BOB)
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff8107ef/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
index 1dd9c6c..8011720 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
@@ -41,6 +41,7 @@ import org.apache.james.domainlist.memory.MemoryDomainList;
import org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.rrt.api.RecipientRewriteTable;
import org.apache.james.rrt.api.RecipientRewriteTableException;
+import org.apache.james.rrt.lib.MappingSource;
import org.apache.james.rrt.memory.MemoryRecipientRewriteTable;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
@@ -370,9 +371,9 @@ class GroupsRoutesTest {
@BeforeEach
void setup() throws Exception {
super.setUp();
- memoryRecipientRewriteTable.addErrorMapping("error", DOMAIN, "disabled");
- memoryRecipientRewriteTable.addRegexMapping("regex", DOMAIN, ".*@b\\.com");
- memoryRecipientRewriteTable.addAliasDomainMapping(Domain.of("alias"), DOMAIN);
+ memoryRecipientRewriteTable.addErrorMapping(MappingSource.fromUser("error", DOMAIN), "disabled");
+ memoryRecipientRewriteTable.addRegexMapping(MappingSource.fromUser("regex", DOMAIN), ".*@b\\.com");
+ memoryRecipientRewriteTable.addAliasDomainMapping(MappingSource.fromDomain(Domain.of("alias")), DOMAIN);
}
@@ -527,7 +528,7 @@ class GroupsRoutesTest {
void putShouldReturnErrorWhenRecipientRewriteTableExceptionIsThrown() throws Exception {
doThrow(RecipientRewriteTableException.class)
.when(memoryRecipientRewriteTable)
- .addGroupMapping(anyString(), any(), anyString());
+ .addGroupMapping(any(), anyString());
when()
.put(GROUP1 + SEPARATOR + GROUP2)
@@ -540,7 +541,7 @@ class GroupsRoutesTest {
void putShouldReturnErrorWhenErrorMappingExceptionIsThrown() throws Exception {
doThrow(RecipientRewriteTable.ErrorMappingException.class)
.when(memoryRecipientRewriteTable)
- .addGroupMapping(anyString(), any(), anyString());
+ .addGroupMapping(any(), anyString());
when()
.put(GROUP1 + SEPARATOR + GROUP2)
@@ -553,7 +554,7 @@ class GroupsRoutesTest {
void putShouldReturnErrorWhenRuntimeExceptionIsThrown() throws Exception {
doThrow(RuntimeException.class)
.when(memoryRecipientRewriteTable)
- .addGroupMapping(anyString(), any(), anyString());
+ .addGroupMapping(any(), anyString());
when()
.put(GROUP1 + SEPARATOR + GROUP2)
@@ -605,7 +606,7 @@ class GroupsRoutesTest {
void deleteShouldReturnErrorWhenRecipientRewriteTableExceptionIsThrown() throws Exception {
doThrow(RecipientRewriteTableException.class)
.when(memoryRecipientRewriteTable)
- .removeGroupMapping(anyString(), any(), anyString());
+ .removeGroupMapping(any(), anyString());
when()
.delete(GROUP1 + SEPARATOR + GROUP2)
@@ -618,7 +619,7 @@ class GroupsRoutesTest {
void deleteShouldReturnErrorWhenErrorMappingExceptionIsThrown() throws Exception {
doThrow(RecipientRewriteTable.ErrorMappingException.class)
.when(memoryRecipientRewriteTable)
- .removeGroupMapping(anyString(), any(), anyString());
+ .removeGroupMapping(any(), anyString());
when()
.delete(GROUP1 + SEPARATOR + GROUP2)
@@ -631,7 +632,7 @@ class GroupsRoutesTest {
void deleteShouldReturnErrorWhenRuntimeExceptionIsThrown() throws Exception {
doThrow(RuntimeException.class)
.when(memoryRecipientRewriteTable)
- .removeGroupMapping(anyString(), any(), anyString());
+ .removeGroupMapping(any(), anyString());
when()
.delete(GROUP1 + SEPARATOR + GROUP2)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org