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

Reply via email to