JAMES-2366 Error mapping should throw when trying to rewrite a User
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6a5b348d Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6a5b348d Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6a5b348d Branch: refs/heads/master Commit: 6a5b348d5538adbc3baf4ff64eb08b1e310448bb Parents: ef5ff3f Author: Matthieu Baechler <matth...@apache.org> Authored: Wed Apr 18 15:07:05 2018 +0200 Committer: Matthieu Baechler <matth...@apache.org> Committed: Tue Apr 24 14:45:26 2018 +0200 ---------------------------------------------------------------------- .../java/org/apache/james/rrt/lib/Mapping.java | 7 ++-- .../org/apache/james/rrt/lib/UserRewritter.java | 9 +++-- .../apache/james/rrt/lib/NoneRewiterTest.java | 36 ------------------- .../james/rrt/lib/ThrowingRewriterTest.java | 38 ++++++++++++++++++++ .../rrt/lib/AbstractRecipientRewriteTable.java | 3 -- .../mailets/AbstractRecipientRewriteTable.java | 3 ++ 6 files changed, 51 insertions(+), 45 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/6a5b348d/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 7f0e684..7795014 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 @@ -29,6 +29,7 @@ import javax.mail.internet.AddressException; import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.core.User; +import org.apache.james.rrt.api.RecipientRewriteTable; import org.apache.james.rrt.api.RecipientRewriteTableException; import com.google.common.base.Objects; @@ -55,7 +56,7 @@ public interface Mapping { case Domain: return new UserRewritter.DomainRewriter(); case Error: - return new UserRewritter.NoneRewriter(); + return new UserRewritter.ThrowingRewriter(); case Forward: case Group: case Address: @@ -276,7 +277,7 @@ public interface Mapping { } @Override - public Optional<User> rewriteUser(User user) throws AddressException { + public Optional<User> rewriteUser(User user) throws AddressException, RecipientRewriteTable.ErrorMappingException { return rewriter.rewrite(user); } @@ -328,6 +329,6 @@ public interface Mapping { String getErrorMessage(); - Optional<User> rewriteUser(User user) throws AddressException; + Optional<User> rewriteUser(User user) throws AddressException, RecipientRewriteTable.ErrorMappingException; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/6a5b348d/server/data/data-api/src/main/java/org/apache/james/rrt/lib/UserRewritter.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/UserRewritter.java b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/UserRewritter.java index df97d17..b9e96de 100644 --- a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/UserRewritter.java +++ b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/UserRewritter.java @@ -31,6 +31,7 @@ import javax.mail.internet.AddressException; import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.core.User; +import org.apache.james.rrt.api.RecipientRewriteTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,7 +42,7 @@ import com.google.common.collect.ImmutableList; @FunctionalInterface public interface UserRewritter { - Optional<User> rewrite(User user) throws AddressException; + Optional<User> rewrite(User user) throws AddressException, RecipientRewriteTable.ErrorMappingException; interface MappingUserRewriter { UserRewritter generateUserRewriter(String mapping); @@ -65,10 +66,12 @@ public interface UserRewritter { } } - class NoneRewriter implements MappingUserRewriter { + class ThrowingRewriter implements MappingUserRewriter { @Override public UserRewritter generateUserRewriter(String mapping) { - return oldUser -> Optional.empty(); + return user -> { + throw new RecipientRewriteTable.ErrorMappingException(mapping); + }; } } http://git-wip-us.apache.org/repos/asf/james-project/blob/6a5b348d/server/data/data-api/src/test/java/org/apache/james/rrt/lib/NoneRewiterTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/NoneRewiterTest.java b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/NoneRewiterTest.java deleted file mode 100644 index c1cdd8c..0000000 --- a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/NoneRewiterTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ - -package org.apache.james.rrt.lib; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.apache.james.core.User; -import org.junit.jupiter.api.Test; - -public class NoneRewiterTest { - @Test - public void rewriteShouldReturnEmpty() throws Exception { - assertThat( - new UserRewritter.NoneRewriter() - .generateUserRewriter("any") - .rewrite(User.fromUsername("any"))) - .isEmpty(); - } -} http://git-wip-us.apache.org/repos/asf/james-project/blob/6a5b348d/server/data/data-api/src/test/java/org/apache/james/rrt/lib/ThrowingRewriterTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/ThrowingRewriterTest.java b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/ThrowingRewriterTest.java new file mode 100644 index 0000000..8bcf06e --- /dev/null +++ b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/ThrowingRewriterTest.java @@ -0,0 +1,38 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.rrt.lib; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import org.apache.james.core.User; +import org.apache.james.rrt.api.RecipientRewriteTable; +import org.junit.jupiter.api.Test; + +public class ThrowingRewriterTest { + @Test + public void rewriteShouldReturnEmpty() throws Exception { + assertThatThrownBy(() -> + new UserRewritter.ThrowingRewriter() + .generateUserRewriter("any") + .rewrite(User.fromUsername("any"))) + .isInstanceOf(RecipientRewriteTable.ErrorMappingException.class); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/6a5b348d/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 4a22f4b..b842dc7 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 @@ -110,9 +110,6 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT Mappings targetMappings = mapAddress(user.getLocalPart(), user.getDomainPart().get()); - if (targetMappings.contains(Type.Error)) { - throw new ErrorMappingException(targetMappings.getError().getErrorMessage()); - } try { return MappingsImpl.fromMappings( http://git-wip-us.apache.org/repos/asf/james-project/blob/6a5b348d/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java index 94b9794..391da56 100755 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java @@ -38,6 +38,7 @@ import org.apache.james.core.User; import org.apache.james.dnsservice.api.DNSService; 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.lib.Mapping; import org.apache.james.rrt.lib.UserRewritter; import org.apache.james.server.core.MailImpl; @@ -129,6 +130,8 @@ public abstract class AbstractRecipientRewriteTable extends GenericMailet { targetAddress = maybeTarget.get(); } catch (PatternSyntaxException e) { LOGGER.error("Exception during regexMap processing: ", e); + } catch (RecipientRewriteTable.ErrorMappingException e) { + LOGGER.error("Regex mapping should not throw ErrorMappingException", e); } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org