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:48 UTC
[19/27] james-project git commit: JAMES-2366 remove a duplicate
condition in mappings logic
JAMES-2366 remove a duplicate condition in mappings logic
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/949594cf
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/949594cf
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/949594cf
Branch: refs/heads/master
Commit: 949594cfd6ba6414ba885649acf1c40b96caee4a
Parents: f8c43ad
Author: Matthieu Baechler <ma...@apache.org>
Authored: Tue Apr 17 15:00:27 2018 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Tue Apr 24 14:45:26 2018 +0200
----------------------------------------------------------------------
.../rrt/lib/AbstractRecipientRewriteTable.java | 93 +++++++++-----------
1 file changed, 44 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/949594cf/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
index 69370c6..7249250 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
@@ -107,66 +107,61 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
Mappings targetMappings = mapAddress(user, domain);
- // Only non-null mappings are translated
- if (!targetMappings.isEmpty()) {
- if (targetMappings.contains(Type.Error)) {
- throw new ErrorMappingException(targetMappings.getError().getErrorMessage());
- } else {
- MappingsImpl.Builder mappings = MappingsImpl.builder();
-
- for (String target : targetMappings.asStrings()) {
- Type type = Mapping.detectType(target);
- Optional<String> maybeAddressWithMappingApplied = applyMapping(user, domain, target, type);
-
- if (!maybeAddressWithMappingApplied.isPresent()) {
- continue;
- }
- String addressWithMappingApplied = maybeAddressWithMappingApplied.get();
- LOGGER.debug("Valid virtual user mapping {}@{} to {}", user, domain.name(), addressWithMappingApplied);
-
- if (recursive) {
-
- String userName;
- Domain targetDomain;
- String[] args = addressWithMappingApplied.split("@");
-
- if (args.length > 1) {
- userName = args[0];
- targetDomain = Domain.of(args[1]);
- } else {
- // TODO Is that the right todo here?
- userName = addressWithMappingApplied;
- targetDomain = domain;
- }
+ if (targetMappings.contains(Type.Error)) {
+ throw new ErrorMappingException(targetMappings.getError().getErrorMessage());
+ } else {
+ MappingsImpl.Builder mappings = MappingsImpl.builder();
- // Check if the returned mapping is the same as the
- // input. If so return null to avoid loops
- if (userName.equalsIgnoreCase(user) && targetDomain.equals(domain)) {
- if (type.equals(Type.Forward)) {
- mappings.add(toMapping(addressWithMappingApplied, type));
- continue;
- }
- return MappingsImpl.empty();
- }
+ for (String target : targetMappings.asStrings()) {
+ Type type = Mapping.detectType(target);
+ Optional<String> maybeAddressWithMappingApplied = applyMapping(user, domain, target, type);
+
+ if (!maybeAddressWithMappingApplied.isPresent()) {
+ continue;
+ }
+ String addressWithMappingApplied = maybeAddressWithMappingApplied.get();
+ LOGGER.debug("Valid virtual user mapping {}@{} to {}", user, domain.name(), addressWithMappingApplied);
+
+ if (recursive) {
- Mappings childMappings = getMappings(userName, targetDomain, mappingLimit - 1);
+ String userName;
+ Domain targetDomain;
+ String[] args = addressWithMappingApplied.split("@");
- if (childMappings.isEmpty()) {
- // add mapping
+ if (args.length > 1) {
+ userName = args[0];
+ targetDomain = Domain.of(args[1]);
+ } else {
+ // TODO Is that the right todo here?
+ userName = addressWithMappingApplied;
+ targetDomain = domain;
+ }
+
+ // Check if the returned mapping is the same as the
+ // input. If so return null to avoid loops
+ if (userName.equalsIgnoreCase(user) && targetDomain.equals(domain)) {
+ if (type.equals(Type.Forward)) {
mappings.add(toMapping(addressWithMappingApplied, type));
- } else {
- mappings = mappings.addAll(childMappings);
+ continue;
}
+ return MappingsImpl.empty();
+ }
- } else {
+ Mappings childMappings = getMappings(userName, targetDomain, mappingLimit - 1);
+
+ if (childMappings.isEmpty()) {
+ // add mapping
mappings.add(toMapping(addressWithMappingApplied, type));
+ } else {
+ mappings = mappings.addAll(childMappings);
}
+
+ } else {
+ mappings.add(toMapping(addressWithMappingApplied, type));
}
- return mappings.build();
}
+ return mappings.build();
}
-
- return MappingsImpl.empty();
}
private Mapping toMapping(String mappedAddress, Type type) {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org