You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2017/03/15 16:38:20 UTC
svn commit: r1787077 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java
Author: angela
Date: Wed Mar 15 16:38:19 2017
New Revision: 1787077
URL: http://svn.apache.org/viewvc?rev=1787077&view=rev
Log:
OAK-5939 : MembershipWriter.removeMembers writes back too often
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java?rev=1787077&r1=1787076&r2=1787077&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java Wed Mar 15 16:38:19 2017
@@ -214,23 +214,23 @@ public class MembershipWriter {
PropertyState refs = t.getProperty(UserConstants.REP_MEMBERS);
if (refs != null) {
PropertyBuilder<String> prop = PropertyBuilder.copy(Type.WEAKREFERENCE, refs);
- Iterator<Map.Entry<String,String>> memberEntries = memberIds.entrySet().iterator();
- while (memberEntries.hasNext()) {
- String memberContentId = memberEntries.next().getKey();
+ Iterator<Map.Entry<String,String>> it = memberIds.entrySet().iterator();
+ while (it.hasNext() && !prop.isEmpty()) {
+ String memberContentId = it.next().getKey();
if (prop.hasValue(memberContentId)) {
prop.removeValue(memberContentId);
- if (prop.isEmpty()) {
- if (t == groupTree) {
- t.removeProperty(UserConstants.REP_MEMBERS);
- } else {
- t.remove();
- }
- } else {
- t.setProperty(prop.getPropertyState());
- }
- memberEntries.remove();
+ it.remove();
}
}
+ if (prop.isEmpty()) {
+ if (t == groupTree) {
+ t.removeProperty(UserConstants.REP_MEMBERS);
+ } else {
+ t.remove();
+ }
+ } else {
+ t.setProperty(prop.getPropertyState());
+ }
}
}
return Sets.newHashSet(memberIds.values());