From b38b182ed7fe6204249eb01250cc8b658b7d9dce Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Tue, 22 Sep 2015 15:13:42 +0200
Subject: [PATCH] OO-1697: work around the assert exception for duplicate
 e-mail in the "new user" form

---
 .../user/propertyhandlers/EmailProperty.java  | 21 +++++++++++--------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/olat/user/propertyhandlers/EmailProperty.java b/src/main/java/org/olat/user/propertyhandlers/EmailProperty.java
index a42b2f8587c..07744787e48 100644
--- a/src/main/java/org/olat/user/propertyhandlers/EmailProperty.java
+++ b/src/main/java/org/olat/user/propertyhandlers/EmailProperty.java
@@ -19,6 +19,7 @@
  */
 package org.olat.user.propertyhandlers;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -176,21 +177,23 @@ public class EmailProperty extends Generic127CharTextPropertyHandler {
 	
 	
 	private boolean isAddressAvailable(String emailAddress, String currentUsername) {
-		
 		// Check if mail address already used
 		// within the system by a user other than ourselves
-		
-		Identity identityOfEmail = UserManager.getInstance().findIdentityByEmail(emailAddress);
+		List<Identity> identityOfEmails = UserManager.getInstance().findIdentitiesByEmail(Collections.singletonList(emailAddress));
 		if (currentUsername != null) {
-			if ((identityOfEmail != null) && (!identityOfEmail.getName().equals(currentUsername))) {
-				return false;
-			}
-		} else {
-			if (identityOfEmail != null) {
+			if(identityOfEmails.size() == 0) {
+				//ok -> checkForScheduledAdressChange
+			} else if(identityOfEmails.size() == 1) {
+				Identity identityOfEmail = identityOfEmails.get(0);
+				if (identityOfEmail != null && !identityOfEmail.getName().equals(currentUsername)) {
+					return false;
+				}
+			} else {
 				return false;
 			}
+		} else if (identityOfEmails.size() > 0) {
+			return false;
 		}
-		
 		return checkForScheduledAdressChange(emailAddress);
 	}
 	
-- 
GitLab