Index: oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (date 1413282654000) +++ oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (date 1412611807000) @@ -515,6 +515,23 @@ for (String name : privileges.getChildNodeNames()) { resolvePrivilegeBits(privileges, name); } + + // adjust bits and aggregates of jcr:all + NodeBuilder jcrAll = privileges.child(JCR_ALL); + PrivilegeBits allBits = PrivilegeBits.getInstance(); + List names = newArrayList(); + for (String priv : privileges.getChildNodeNames()) { + if (!JCR_ALL.equals(priv)) { + names.add(priv); + NodeBuilder def = privileges.getChildNode(priv); + PropertyState b = def.getProperty(REP_BITS); + if (b != null) { + allBits.add(PrivilegeBits.getInstance(b)); + } + } + } + jcrAll.setProperty(allBits.asPropertyState(REP_BITS)); + jcrAll.setProperty(REP_AGGREGATES, names, NAMES); } private static PrivilegeBits resolvePrivilegeBits( Index: oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java (date 1413282654000) +++ oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java (date 1412611807000) @@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.upgrade; import static com.google.common.collect.Sets.newHashSet; +import static java.util.Arrays.asList; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; @@ -61,6 +62,7 @@ import java.math.BigDecimal; import java.util.Arrays; import java.util.Calendar; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.Set; @@ -249,7 +251,8 @@ JCR_VERSION_MANAGEMENT, JCR_LOCK_MANAGEMENT, JCR_LIFECYCLE_MANAGEMENT, JCR_RETENTION_MANAGEMENT, JCR_WORKSPACE_MANAGEMENT, JCR_NODE_TYPE_DEFINITION_MANAGEMENT, JCR_NAMESPACE_MANAGEMENT, REP_PRIVILEGE_MANAGEMENT, REP_USER_MANAGEMENT, - REP_INDEX_DEFINITION_MANAGEMENT, JCR_READ, JCR_MODIFY_PROPERTIES, JCR_WRITE, REP_WRITE}); + REP_INDEX_DEFINITION_MANAGEMENT, JCR_READ, JCR_MODIFY_PROPERTIES, JCR_WRITE, REP_WRITE, + "test:privilege", "test:aggregate"}); JackrabbitSession session = createAdminSession(); try { @@ -309,6 +312,11 @@ assertFalse(aggregate.isAbstract()); assertTrue(aggregate.isAggregate()); assertEquals(2, aggregate.getDeclaredAggregatePrivileges().length); + + Privilege jcrAll = manager.getPrivilege("jcr:all"); + List privileges = asList(jcrAll.getAggregatePrivileges()); + assertTrue(privileges.contains(privilege)); + assertTrue(privileges.contains(aggregate)); } finally { session.logout(); }