@NotNull public PrivilegeBits modifiable() { if (d instanceof ModifiableData) { return this; } else { return getInstance(this); } }
@NotNull @Override public PrivilegeBits supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits) { PrivilegeBits result = PrivilegeBits.getInstance(); for (AggregatedPermissionProvider aggregatedPermissionProvider : pps) { PrivilegeBits supported = aggregatedPermissionProvider.supportedPrivileges(tree, privilegeBits); result.add(supported); } return result; }
@Nonnull @Override public PrivilegeBits supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits) { PrivilegeBits result = PrivilegeBits.getInstance(); for (AggregatedPermissionProvider aggregatedPermissionProvider : pps) { PrivilegeBits supported = aggregatedPermissionProvider.supportedPrivileges(tree, privilegeBits); result.add(supported); } return result; }
@NotNull @Override public PrivilegeBits supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits) { PrivilegeBits supported = PrivilegeBits.getInstance( PrivilegeBits.BUILT_IN.get(JCR_NAMESPACE_MANAGEMENT), PrivilegeBits.BUILT_IN.get(REP_READ_NODES)); if (privilegeBits != null) { return PrivilegeBits.getInstance(privilegeBits).retain(supported); } else { return supported; } }
@NotNull private PermissionEntry createPermissionEntry(@NotNull String path, @NotNull Tree entryTree) { PropertyState ps = entryTree.getProperty(REP_PRIVILEGE_BITS); PrivilegeBits bits = (isJcrAll(ps)) ? allBits : PrivilegeBits.getInstance(ps); boolean isAllow = TreeUtil.getBoolean(entryTree, REP_IS_ALLOW); return new PermissionEntry(path, isAllow, Integer.parseInt(entryTree.getName()), bits, restrictionProvider.getPattern(path, entryTree)); }
@NotNull private PermissionEntry createPermissionEntry(@NotNull String path, @NotNull Tree entryTree) { PropertyState ps = entryTree.getProperty(REP_PRIVILEGE_BITS); PrivilegeBits bits = (isJcrAll(ps)) ? allBits : PrivilegeBits.getInstance(ps); boolean isAllow = TreeUtil.getBoolean(entryTree, REP_IS_ALLOW); return new PermissionEntry(path, isAllow, Integer.parseInt(entryTree.getName()), bits, restrictionProvider.getPattern(path, entryTree)); }
PrivilegeDefinitionWriter(@NotNull Root root) { this.root = root; this.bitsMgr = new PrivilegeBitsProvider(root); Tree privilegesTree = bitsMgr.getPrivilegesTree(); if (privilegesTree.exists() && privilegesTree.hasProperty(REP_NEXT)) { next = PrivilegeBits.getInstance(privilegesTree); } else { next = PrivilegeBits.NEXT_AFTER_BUILT_INS; } }
PrivilegeDefinitionWriter(@NotNull Root root) { this.root = root; this.bitsMgr = new PrivilegeBitsProvider(root); Tree privilegesTree = bitsMgr.getPrivilegesTree(); if (privilegesTree.exists() && privilegesTree.hasProperty(REP_NEXT)) { next = PrivilegeBits.getInstance(privilegesTree); } else { next = PrivilegeBits.NEXT_AFTER_BUILT_INS; } }
@Override public void propertyChanged(PropertyState before, PropertyState after) throws CommitFailedException { if (REP_NEXT.equals(before.getName())) { validateNext(PrivilegeBits.getInstance(getPrivilegesTree(rootBefore).getProperty(REP_NEXT))); } else { throw new CommitFailedException(CONSTRAINT, 45, "Attempt to modify existing privilege definition."); } }
@Override public void propertyChanged(PropertyState before, PropertyState after) throws CommitFailedException { if (REP_NEXT.equals(before.getName())) { validateNext(PrivilegeBits.getInstance(getPrivilegesTree(rootBefore).getProperty(REP_NEXT))); } else { throw new CommitFailedException(CONSTRAINT, 45, "Attempt to modify existing privilege definition."); } }
@Test public void testGetInstanceFromTreeJcrRead() { Tree readPrivTree = Mockito.mock(Tree.class); when(readPrivTree.getName()).thenReturn(JCR_READ); assertEquals(PrivilegeBits.BUILT_IN.get(JCR_READ), PrivilegeBits.getInstance(readPrivTree)); }
private static PrivilegeBits toBits(Set<String> supported, PrivilegeBitsProvider pbp) { PrivilegeBits suppBits = PrivilegeBits.getInstance(); for (String s : supported) { suppBits.add(pbp.getBits(s)); } return suppBits; }
private void validateNext(PrivilegeBits bits) throws CommitFailedException { PrivilegeBits next = PrivilegeBits.getInstance(getPrivilegesTree(rootAfter).getProperty(REP_NEXT)); if (!next.equals(bits.nextBits())) { throw new CommitFailedException(CONSTRAINT, 43, "Next bits not updated"); } }
@Test public void testGetInstanceFromTreeCustomPriv() { PrivilegeBits next = PrivilegeBits.NEXT_AFTER_BUILT_INS; Tree tmp = Mockito.mock(Tree.class); when(tmp.getName()).thenReturn("tmpPrivilege"); when(tmp.getProperty(REP_BITS)).thenReturn(next.asPropertyState(REP_BITS)); assertEquals(next, PrivilegeBits.getInstance(tmp)); }
ACE createEntry(boolean isAllow, String... privilegeName) throws RepositoryException { if (privilegeName.length == 1) { return createEntry(testPrincipal, PrivilegeBits.BUILT_IN.get(privilegeName[0]), isAllow); } else { PrivilegeBits bits = PrivilegeBits.getInstance(); for (String n : privilegeName) { bits.add(PrivilegeBits.BUILT_IN.get(n)); } return createEntry(testPrincipal, bits.unmodifiable(), isAllow); } }
@Test public void testPrivilegeBits() { Tree jcrReadTree = PrivilegeUtil.getPrivilegesTree(root).getChild(PrivilegeConstants.JCR_READ); Tree repWriteTree = PrivilegeUtil.getPrivilegesTree(root).getChild(PrivilegeConstants.REP_WRITE); PrivilegeBitsProvider provider = new PrivilegeBitsProvider(root); PrivilegeBits privilegeBits = provider.getBits(PrivilegeConstants.REP_WRITE, PrivilegeBits.JCR_READ); PrivilegeBits readBits = PrivilegeBits.getInstance(jcrReadTree); PrivilegeBits writeBits = PrivilegeBits.getInstance(jcrReadTree); // EXERCISE: play with 'PrivilegeBits' methods to compare 'privilegeBits' with 'readBits' and 'writeBits' // EXERCISE: retrieve the property that stores the long representation of each privilege above }
@Test public void testNextBitsFromEmpty() { // empty assertSame(PrivilegeBits.EMPTY, PrivilegeBits.EMPTY.nextBits()); PrivilegeBits bits = PrivilegeBits.getInstance().unmodifiable(); assertSame(bits, bits.nextBits()); }
@Test public void testGetBitsBuiltInIterable() { PrivilegeBits bits = bitsProvider.getBits(ImmutableList.of(JCR_ADD_CHILD_NODES, JCR_REMOVE_CHILD_NODES)); assertFalse(bits.isEmpty()); PrivilegeBits mod = PrivilegeBits.getInstance(bitsProvider.getBits(JCR_ADD_CHILD_NODES)).add(bitsProvider.getBits(JCR_REMOVE_CHILD_NODES)); assertEquals(bits, mod.unmodifiable()); }
@Test public void testGetBitsBuiltInNames() { PrivilegeBits bits = bitsProvider.getBits(JCR_ADD_CHILD_NODES, JCR_REMOVE_CHILD_NODES); assertFalse(bits.isEmpty()); PrivilegeBits mod = PrivilegeBits.getInstance(bitsProvider.getBits(JCR_ADD_CHILD_NODES)).add(bitsProvider.getBits(JCR_REMOVE_CHILD_NODES)); assertEquals(bits, mod.unmodifiable()); }
@Test public void testModifiable() { assertNotSame(PrivilegeBits.EMPTY, PrivilegeBits.EMPTY.modifiable()); // other privilege bits PrivilegeBits mod = PrivilegeBits.getInstance(READ_NODES_PRIVILEGE_BITS); assertSame(mod, mod.modifiable()); assertNotSame(mod, mod.unmodifiable()); assertNotEquals(mod, mod.unmodifiable()); }