diff --git a/java/com.sap.sse.security.userstore.mongodb/src/com/sap/sse/security/userstore/mongodb/AccessControlStoreImpl.java b/java/com.sap.sse.security.userstore.mongodb/src/com/sap/sse/security/userstore/mongodb/AccessControlStoreImpl.java index 397951d2a04..9ac0c235a86 100755 --- a/java/com.sap.sse.security.userstore.mongodb/src/com/sap/sse/security/userstore/mongodb/AccessControlStoreImpl.java +++ b/java/com.sap.sse.security.userstore.mongodb/src/com/sap/sse/security/userstore/mongodb/AccessControlStoreImpl.java @@ -421,25 +421,29 @@ public class AccessControlStoreImpl implements AccessControlStore { @Override public void run() { Set knownOwnerships = userGroupToOwnership.get(userGroup); - // do not use setOwnership, we know the user will not change, and we can use the more effective - // remove - // for userGroupToOwnership after deleting - for (OwnershipAnnotation ownership : knownOwnerships) { - final OwnershipAnnotation groupLessOwnership = new OwnershipAnnotation( - new OwnershipImpl(ownership.getAnnotation().getUserOwner(), null), - ownership.getIdOfAnnotatedObject(), ownership.getDisplayNameOfAnnotatedObject()); - ownerships.put(ownership.getIdOfAnnotatedObject(), groupLessOwnership); - mongoObjectFactory.storeOwnership(groupLessOwnership); + if (knownOwnerships != null) { + // do not use setOwnership, we know the user will not change, and we can use the more effective + // remove + // for userGroupToOwnership after deleting + for (OwnershipAnnotation ownership : knownOwnerships) { + final OwnershipAnnotation groupLessOwnership = new OwnershipAnnotation( + new OwnershipImpl(ownership.getAnnotation().getUserOwner(), null), + ownership.getIdOfAnnotatedObject(), ownership.getDisplayNameOfAnnotatedObject()); + ownerships.put(ownership.getIdOfAnnotatedObject(), groupLessOwnership); + mongoObjectFactory.storeOwnership(groupLessOwnership); + } + userGroupToOwnership.remove(userGroup); } - userGroupToOwnership.remove(userGroup); Set knownACLEntries = userGroupToAccessControlListAnnotation .get(userGroup); - for (AccessControlListAnnotation acl : knownACLEntries) { - internalRemoveUserGroupToACLMapping(userGroup, acl); - mongoObjectFactory.storeAccessControlList(acl); + if (knownACLEntries != null) { + for (AccessControlListAnnotation acl : knownACLEntries) { + internalRemoveUserGroupToACLMapping(userGroup, acl); + mongoObjectFactory.storeAccessControlList(acl); + } + userGroupToAccessControlListAnnotation.remove(userGroup); } - userGroupToAccessControlListAnnotation.remove(userGroup); } }); } @@ -450,16 +454,19 @@ public class AccessControlStoreImpl implements AccessControlStore { @Override public void run() { Set knownOwnerships = userToOwnership.get(user); - // do not use setOwnership, we know the group will not change, and we can use the more effective remove - // for userToOwnership after deleting - for (OwnershipAnnotation ownership : knownOwnerships) { - final OwnershipAnnotation userLessOwnership = new OwnershipAnnotation( - new OwnershipImpl(null, ownership.getAnnotation().getTenantOwner()), - ownership.getIdOfAnnotatedObject(), ownership.getDisplayNameOfAnnotatedObject()); - ownerships.put(ownership.getIdOfAnnotatedObject(), userLessOwnership); - mongoObjectFactory.storeOwnership(userLessOwnership); + if (knownOwnerships != null) { + // do not use setOwnership, we know the group will not change, and we can use the more effective + // remove + // for userToOwnership after deleting + for (OwnershipAnnotation ownership : knownOwnerships) { + final OwnershipAnnotation userLessOwnership = new OwnershipAnnotation( + new OwnershipImpl(null, ownership.getAnnotation().getTenantOwner()), + ownership.getIdOfAnnotatedObject(), ownership.getDisplayNameOfAnnotatedObject()); + ownerships.put(ownership.getIdOfAnnotatedObject(), userLessOwnership); + mongoObjectFactory.storeOwnership(userLessOwnership); + } + userToOwnership.remove(user); } - userToOwnership.remove(user); } }); }