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:49 UTC
[20/27] james-project git commit: JAMES-2366 create
MailAddressConversionPolicy to handle mapping to MailAddress conversion
JAMES-2366 create MailAddressConversionPolicy to handle mapping to MailAddress conversion
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ef5ff3f6
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ef5ff3f6
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ef5ff3f6
Branch: refs/heads/master
Commit: ef5ff3f6fce8934410cdd469e6e2d93792ed9f32
Parents: 1ba2bfc
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Apr 18 11:18:33 2018 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Tue Apr 24 14:45:26 2018 +0200
----------------------------------------------------------------------
.../java/org/apache/james/rrt/lib/Mapping.java | 62 +++++++++++++++-----
1 file changed, 48 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/ef5ff3f6/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java
index e32dc1e..7f0e684 100644
--- a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java
+++ b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java
@@ -44,7 +44,8 @@ public interface Mapping {
static Mapping of(Type type, String mapping) {
UserRewritter.MappingUserRewriter rewriter = selectRewriter(type);
IdentityMappingPolicy identityMappingPolicy = selectIdentityPolicy(type);
- return new Impl(type, mapping, rewriter.generateUserRewriter(mapping), identityMappingPolicy);
+ MailAddressConversionPolicy mailAddressConversionPolicy = selectMailAddressConversionPolicy(type);
+ return new Impl(type, mapping, rewriter.generateUserRewriter(mapping), identityMappingPolicy, mailAddressConversionPolicy);
}
static UserRewritter.MappingUserRewriter selectRewriter(Type type) {
@@ -77,6 +78,40 @@ public interface Mapping {
throw new IllegalStateException("unhandle enum type");
}
+ enum MailAddressConversionPolicy {
+ ToEmpty {
+ @Override
+ Optional<MailAddress> convert(String mapping) {
+ return Optional.empty();
+ }
+ },
+ ToMailAddress {
+ @Override
+ Optional<MailAddress> convert(String mapping) {
+ try {
+ return Optional.of(new MailAddress(mapping));
+ } catch (AddressException e) {
+ return Optional.empty();
+ }
+ }
+ };
+
+ abstract Optional<MailAddress> convert(String mapping);
+ }
+
+ static MailAddressConversionPolicy selectMailAddressConversionPolicy(Type type) {
+ switch (type) {
+ case Regex:
+ case Domain:
+ case Error:
+ return MailAddressConversionPolicy.ToEmpty;
+ case Forward:
+ case Group:
+ case Address:
+ return MailAddressConversionPolicy.ToMailAddress;
+ }
+ throw new IllegalStateException("unhandle enum type");
+ }
static Mapping address(String mapping) {
return of(Type.Address, mapping);
@@ -181,14 +216,20 @@ public interface Mapping {
private final String mapping;
private final UserRewritter rewriter;
private final IdentityMappingPolicy identityMappingPolicy;
+ private final MailAddressConversionPolicy mailAddressConversionPolicy;
- private Impl(Type type, String mapping, UserRewritter rewriter, IdentityMappingPolicy identityMappingBehaviour) {
+ private Impl(Type type,
+ String mapping,
+ UserRewritter rewriter,
+ IdentityMappingPolicy identityMappingBehaviour,
+ MailAddressConversionPolicy mailAddressConversionPolicy) {
Preconditions.checkNotNull(type);
Preconditions.checkNotNull(mapping);
this.type = type;
this.mapping = mapping;
this.rewriter = rewriter;
this.identityMappingPolicy = identityMappingBehaviour;
+ this.mailAddressConversionPolicy = mailAddressConversionPolicy;
}
@Override
@@ -235,18 +276,6 @@ public interface Mapping {
}
@Override
- public Optional<MailAddress> asMailAddress() {
- if (type != Type.Address && type != Type.Forward && type != Type.Group) {
- return Optional.empty();
- }
- try {
- return Optional.of(new MailAddress(mapping));
- } catch (AddressException e) {
- return Optional.empty();
- }
- }
-
- @Override
public Optional<User> rewriteUser(User user) throws AddressException {
return rewriter.rewrite(user);
}
@@ -257,6 +286,11 @@ public interface Mapping {
}
@Override
+ public Optional<MailAddress> asMailAddress() {
+ return mailAddressConversionPolicy.convert(mapping);
+ }
+
+ @Override
public final boolean equals(Object other) {
if (other instanceof Impl) {
Impl otherMapping = (Impl) other;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org