keycloak-uncached

Details

diff --git a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
index fd38a4c..8d75665 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
@@ -140,7 +140,7 @@ public class UsersResource {
         if (session.users().getUserByUsername(rep.getUsername(), realm) != null) {
             return Flows.errors().exists("User exists with same username");
         }
-        if (session.users().getUserByEmail(rep.getEmail(), realm) != null) {
+        if (rep.getEmail() != null && session.users().getUserByEmail(rep.getEmail(), realm) != null) {
             return Flows.errors().exists("User exists with same email");
         }
 
@@ -187,10 +187,10 @@ public class UsersResource {
                 user.setAttribute(attr.getKey(), attr.getValue());
             }
 
-            for (String key : user.getAttributes().keySet()) {
-                if (!rep.getAttributes().containsKey(key)) {
-                    user.removeAttribute(key);
-                }
+            Set<String> attrToRemove = new HashSet<String>(user.getAttributes().keySet());
+            attrToRemove.removeAll(rep.getAttributes().keySet());
+            for (String attr : attrToRemove) {
+                user.removeAttribute(attr);
             }
         }
     }