JAMES-2352 Rely on User for parsing in AbstractUserRepository
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b916edc1 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b916edc1 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b916edc1 Branch: refs/heads/master Commit: b916edc1058dfdd9a55bc7827e603ad79547cb4d Parents: d2974a8 Author: benwa <btell...@linagora.com> Authored: Mon Mar 26 16:56:51 2018 +0700 Committer: benwa <btell...@linagora.com> Committed: Tue Mar 27 15:15:00 2018 +0700 ---------------------------------------------------------------------- core/src/main/java/org/apache/james/core/User.java | 4 ++++ core/src/test/java/org/apache/james/core/UserTest.java | 12 ++++++++++++ .../apache/james/user/lib/AbstractUsersRepository.java | 8 ++++---- 3 files changed, 20 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/b916edc1/core/src/main/java/org/apache/james/core/User.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/james/core/User.java b/core/src/main/java/org/apache/james/core/User.java index 91f2720..40f5069 100644 --- a/core/src/main/java/org/apache/james/core/User.java +++ b/core/src/main/java/org/apache/james/core/User.java @@ -80,6 +80,10 @@ public class User { return domainPart; } + public boolean hasDomainPart() { + return domainPart.isPresent(); + } + public String asString() { return domainPart.map(domain -> localPart + "@" + domain.asString()) .orElse(localPart); http://git-wip-us.apache.org/repos/asf/james-project/blob/b916edc1/core/src/test/java/org/apache/james/core/UserTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/james/core/UserTest.java b/core/src/test/java/org/apache/james/core/UserTest.java index cd089a7..bc97eba 100644 --- a/core/src/test/java/org/apache/james/core/UserTest.java +++ b/core/src/test/java/org/apache/james/core/UserTest.java @@ -166,4 +166,16 @@ public class UserTest { .isEqualTo(User.from("aa", Optional.empty())); } + @Test + public void hasDomainPartShouldReturnFalseWhenNoDomain() { + assertThat(User.fromLocalPartWithoutDomain("aa").hasDomainPart()) + .isFalse(); + } + + @Test + public void hasDomainPartShouldReturnTrueWhenHasADomain() { + assertThat(User.fromLocalPartWithDomain("aa", "domain").hasDomainPart()) + .isTrue(); + } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/b916edc1/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java index f28a127..75e47ca 100644 --- a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java +++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java @@ -68,13 +68,13 @@ public abstract class AbstractUsersRepository implements UsersRepository, Config } protected void isValidUsername(String username) throws UsersRepositoryException { - int i = username.indexOf("@"); + User user = User.fromUsername(username); if (supportVirtualHosting()) { // need a @ in the username - if (i == -1) { + if (!user.hasDomainPart()) { throw new UsersRepositoryException("Given Username needs to contain a @domainpart"); } else { - Domain domain = Domain.of(username.substring(i + 1)); + Domain domain = user.getDomainPart().get(); try { if (!domainList.containsDomain(domain)) { throw new UsersRepositoryException("Domain does not exist in DomainList"); @@ -85,7 +85,7 @@ public abstract class AbstractUsersRepository implements UsersRepository, Config } } else { // @ only allowed when virtualhosting is supported - if (i != -1) { + if (user.hasDomainPart()) { throw new UsersRepositoryException("Given Username contains a @domainpart but virtualhosting support is disabled"); } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org