@Override public void writeRestrictions(String oakPath, Tree aceTree, Set<Restriction> restrictions) throws RepositoryException { getProvider().writeRestrictions(oakPath, aceTree, restrictions); }
@Override public void writeRestrictions(String oakPath, Tree aceTree, Set<Restriction> restrictions) throws RepositoryException { getProvider().writeRestrictions(oakPath, aceTree, restrictions); }
@Override public void writeRestrictions(String oakPath, Tree aceTree, Set<Restriction> restrictions) throws RepositoryException { getProvider().writeRestrictions(oakPath, aceTree, restrictions); }
@Override public void writeRestrictions(String oakPath, Tree aceTree, Set<Restriction> restrictions) throws RepositoryException { Iterator<Restriction> it = Sets.newHashSet(restrictions).iterator(); while (it.hasNext()) { Restriction r = it.next(); if (REP_NODE_PATH.equals(r.getDefinition().getName())) { it.remove(); } } base.writeRestrictions(oakPath, aceTree, restrictions); }
@Override public void writeRestrictions(String oakPath, Tree aceTree, Set<Restriction> restrictions) throws RepositoryException { for (Restriction r : restrictions) { RestrictionProvider rp = getProvider(oakPath, getName(r)); rp.writeRestrictions(oakPath, aceTree, Collections.singleton(r)); } }
@Override public void writeRestrictions(String oakPath, Tree aceTree, Set<Restriction> restrictions) throws RepositoryException { for (Restriction r : restrictions) { RestrictionProvider rp = getProvider(oakPath, getName(r)); rp.writeRestrictions(oakPath, aceTree, Collections.singleton(r)); } }
@Override public void writeRestrictions(String oakPath, Tree aceTree, Set<Restriction> restrictions) throws RepositoryException { Sets.newHashSet(restrictions).removeIf(r -> REP_NODE_PATH.equals(r.getDefinition().getName())); base.writeRestrictions(oakPath, aceTree, restrictions); }
@Override public void writeRestrictions(String oakPath, Tree aceTree, Set<Restriction> restrictions) throws RepositoryException { Sets.newHashSet(restrictions).removeIf(r -> REP_NODE_PATH.equals(r.getDefinition().getName())); base.writeRestrictions(oakPath, aceTree, restrictions); }
@Test public void testWriteRestrictions() throws Exception { Restriction r = Mockito.mock(Restriction.class); RestrictionProvider.EMPTY.writeRestrictions(null, Mockito.mock(Tree.class), ImmutableSet.of(r)); RestrictionProvider.EMPTY.writeRestrictions("/any/path", Mockito.mock(Tree.class), ImmutableSet.of(r)); }
private void setNodeBasedAcl(@Nullable String oakPath, @NotNull Tree tree, @NotNull ACL acl) throws RepositoryException { Tree aclTree = getAclTree(oakPath, tree); if (aclTree != null) { // remove all existing aces for (Tree aceTree : aclTree.getChildren()) { aceTree.remove(); } } else { aclTree = createAclTree(oakPath, tree); } aclTree.setOrderableChildren(true); List<ACE> entries = acl.getEntries(); for (int i = 0; i < entries.size(); i++) { ACE ace = entries.get(i); String nodeName = Util.generateAceName(ace, i); String ntName = (ace.isAllow()) ? NT_REP_GRANT_ACE : NT_REP_DENY_ACE; Tree aceNode = TreeUtil.addChild(aclTree, nodeName, ntName); aceNode.setProperty(REP_PRINCIPAL_NAME, ace.getPrincipal().getName()); aceNode.setProperty(REP_PRIVILEGES, ImmutableList.copyOf(AccessControlUtils.namesFromPrivileges(ace.getPrivileges())), Type.NAMES); Set<Restriction> restrictions = ace.getRestrictions(); restrictionProvider.writeRestrictions(oakPath, aceNode, restrictions); } }
private void setNodeBasedAcl(@Nullable String oakPath, @NotNull Tree tree, @NotNull ACL acl) throws RepositoryException { Tree aclTree = getAclTree(oakPath, tree); if (aclTree != null) { // remove all existing aces for (Tree aceTree : aclTree.getChildren()) { aceTree.remove(); } } else { aclTree = createAclTree(oakPath, tree); } aclTree.setOrderableChildren(true); List<ACE> entries = acl.getEntries(); for (int i = 0; i < entries.size(); i++) { ACE ace = entries.get(i); String nodeName = Util.generateAceName(ace, i); String ntName = (ace.isAllow()) ? NT_REP_GRANT_ACE : NT_REP_DENY_ACE; Tree aceNode = TreeUtil.addChild(aclTree, nodeName, ntName); aceNode.setProperty(REP_PRINCIPAL_NAME, ace.getPrincipal().getName()); aceNode.setProperty(REP_PRIVILEGES, ImmutableList.copyOf(AccessControlUtils.namesFromPrivileges(ace.getPrivileges())), Type.NAMES); Set<Restriction> restrictions = ace.getRestrictions(); restrictionProvider.writeRestrictions(oakPath, aceNode, restrictions); } }
private void setNodeBasedAcl(@Nullable String oakPath, @Nonnull Tree tree, @Nonnull ACL acl) throws RepositoryException { Tree aclTree = getAclTree(oakPath, tree); if (aclTree != null) { // remove all existing aces for (Tree aceTree : aclTree.getChildren()) { aceTree.remove(); } } else { aclTree = createAclTree(oakPath, tree); } aclTree.setOrderableChildren(true); List<ACE> entries = acl.getEntries(); for (int i = 0; i < entries.size(); i++) { ACE ace = entries.get(i); String nodeName = Util.generateAceName(ace, i); String ntName = (ace.isAllow()) ? NT_REP_GRANT_ACE : NT_REP_DENY_ACE; Tree aceNode = TreeUtil.addChild(aclTree, nodeName, ntName); aceNode.setProperty(REP_PRINCIPAL_NAME, ace.getPrincipal().getName()); aceNode.setProperty(REP_PRIVILEGES, ImmutableList.copyOf(AccessControlUtils.namesFromPrivileges(ace.getPrivileges())), Type.NAMES); Set<Restriction> restrictions = ace.getRestrictions(); restrictionProvider.writeRestrictions(oakPath, aceNode, restrictions); } }
@Test public void testWriteUnsupportedRestrictions() throws Exception { NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE); Restriction invalid = new RestrictionImpl(PropertyStates.createProperty("invalid", vf.createValue(true)), false); try { provider.writeRestrictions("/test", aceNode.getTree(), ImmutableSet.<Restriction>of(invalid)); fail("AccessControlException expected"); } catch (AccessControlException e) { // success } }
@Test public void testWriteRestrictions() throws Exception { NodeUtil aceNode = new NodeUtil(root.getTree("/")).addChild("test", NT_REP_GRANT_ACE); Set<Restriction> restrictions = ImmutableSet.of( provider.createRestriction("/test","boolean", vf.createValue(true)), provider.createRestriction("/test", "longs"), provider.createRestriction("/test", REP_GLOB, vf.createValue("*")), provider.createRestriction("/test", REP_NT_NAMES, vf.createValue("nt:base", PropertyType.NAME), vf.createValue("nt:version", PropertyType.NAME))); provider.writeRestrictions("/test", aceNode.getTree(), restrictions); }