public Boolean perform(SessionContext context) throws RepositoryException { NodeImpl nMembers = (groupNode.hasNode(UserConstants.N_MEMBERS) ? groupNode.getNode(UserConstants.N_MEMBERS) : groupNode.addNode(UserConstants.N_MEMBERS, UserConstants.NT_REP_MEMBERS, null)); // Create N_MEMBERS node structure for holding member references for (Membership.Member member : nonExisting) { PropertySequence properties = GroupImpl.getPropertySequence(nMembers, userManager); String propName = member.name; if (propName == null) { log.debug("Ignoring unnamed user with id {}", member.id); continue; } if (properties.hasItem(propName)) { log.debug("Overwriting authorizable {} which is already member of {}.", propName, gr); properties.removeProperty(propName); } Value newMember = session.getValueFactory().createValue(member.id.toString(), PropertyType.WEAKREFERENCE); properties.addProperty(propName, newMember); } return null; } });
/** * @see MembershipProvider#getMembers(boolean, int) */ public Iterator<Authorizable> getMembers(boolean includeIndirect, int type) throws RepositoryException { if (node.hasNode(N_MEMBERS)) { PropertySequence members = getPropertySequence(node.getNode(N_MEMBERS), userManager); if (includeIndirect) { return includeIndirect(toAuthorizables(members.iterator(), type), type); } else { return toAuthorizables(members.iterator(), type); } } else { return Iterators.empty(); } }
private static void checkNotFound(PropertySequence properties, List<String> keys) throws RepositoryException { for (String key : keys) { assertFalse("PropertySequence should not contain key " + key, properties.hasItem(key)); try { properties.getItem(key); fail("PropertySequence should not contain key " + key); } catch (RepositoryException expected) { } } }
public void testSingletonPropertySequence() throws RepositoryException { Comparator<String> order = Rank.<String>comparableComparator(); TreeManager treeManager = new BTreeManager(testNode, 2, 4, order, true); PropertySequence properties = ItemSequence.createPropertySequence(treeManager, errorHandler); ValueFactory vFactory = testNode.getSession().getValueFactory(); properties.addProperty("key", vFactory.createValue("key_")); assertTrue(properties.hasItem("key")); Iterator<Property> propertyIt = properties.iterator(); assertTrue(propertyIt.hasNext()); assertEquals("key", propertyIt.next().getName()); assertFalse(propertyIt.hasNext()); properties.removeProperty("key"); assertEmpty(properties); }
public Boolean perform(SessionContext context) throws RepositoryException { NodeImpl nMembers = node.getNode(N_MEMBERS); try { PropertySequence properties = getPropertySequence(nMembers, userManager); String propName = Text.escapeIllegalJcrChars(authorizable.getID()); if (properties.hasItem(propName)) { properties.removeProperty(propName); if (!properties.iterator().hasNext()) { nMembers.remove(); } } else { log.debug("Authorizable {} was not member of {}", authorizable.getID(), getID()); return false; } if (userManager.isAutoSave()) { node.save(); } return true; } catch (RepositoryException e) { log.debug("removeMember failed. Reverting changes", e); nMembers.refresh(false); throw e; } } });
public Boolean perform(SessionContext context) throws RepositoryException { NodeImpl nMembers = (node.hasNode(N_MEMBERS) ? node.getNode(N_MEMBERS) : node.addNode(N_MEMBERS, NT_REP_MEMBERS, null)); try { PropertySequence properties = getPropertySequence(nMembers, userManager); String propName = Text.escapeIllegalJcrChars(authorizable.getID()); if (properties.hasItem(propName)) { log.debug("Authorizable {} is already member of {}", authorizable, this); return false; } else { Value newMember = getSession().getValueFactory().createValue(authorizable.getNode(), true); properties.addProperty(propName, newMember); } if (userManager.isAutoSave()) { node.save(); } return true; } catch (RepositoryException e) { log.debug("addMember failed. Reverting changes", e); if (nMembers.isNew()) { node.refresh(false); } else { nMembers.refresh(false); } throw e; } } });
/** * @see MembershipProvider#hasMember(AuthorizableImpl) */ public boolean hasMember(AuthorizableImpl authorizable) throws RepositoryException { if (node.hasNode(N_MEMBERS)) { PropertySequence members = getPropertySequence(node.getNode(N_MEMBERS), userManager); return members.hasItem(authorizable.getID()); } else { return false; } }
private static void removeAll(PropertySequence properties, List<String> words) throws RepositoryException { for (String name : words) { properties.removeProperty(name); } }
private static void addAll(PropertySequence properties, List<String> words, ValueFactory vFactory) throws RepositoryException { for (String name : words) { properties.addProperty(name, vFactory.createValue(name + " value")); } }
public Boolean perform(SessionContext context) throws RepositoryException { NodeImpl nMembers = node.getNode(N_MEMBERS); try { PropertySequence properties = getPropertySequence(nMembers, userManager); String propName = Text.escapeIllegalJcrChars(authorizable.getID()); if (properties.hasItem(propName)) { properties.removeProperty(propName); if (!properties.iterator().hasNext()) { nMembers.remove(); } } else { log.debug("Authorizable {} was not member of {}", authorizable.getID(), getID()); return false; } if (userManager.isAutoSave()) { node.save(); } return true; } catch (RepositoryException e) { log.debug("removeMember failed. Reverting changes", e); nMembers.refresh(false); throw e; } } });
public Boolean perform(SessionContext context) throws RepositoryException { NodeImpl nMembers = (node.hasNode(N_MEMBERS) ? node.getNode(N_MEMBERS) : node.addNode(N_MEMBERS, NT_REP_MEMBERS, null)); try { PropertySequence properties = getPropertySequence(nMembers, userManager); String propName = Text.escapeIllegalJcrChars(authorizable.getID()); if (properties.hasItem(propName)) { log.debug("Authorizable {} is already member of {}", authorizable, this); return false; } else { Value newMember = getSession().getValueFactory().createValue(authorizable.getNode(), true); properties.addProperty(propName, newMember); } if (userManager.isAutoSave()) { node.save(); } return true; } catch (RepositoryException e) { log.debug("addMember failed. Reverting changes", e); if (nMembers.isNew()) { node.refresh(false); } else { nMembers.refresh(false); } throw e; } } });
/** * @see MembershipProvider#hasMember(AuthorizableImpl) */ public boolean hasMember(AuthorizableImpl authorizable) throws RepositoryException { if (node.hasNode(N_MEMBERS)) { PropertySequence members = getPropertySequence(node.getNode(N_MEMBERS), userManager); return members.hasItem(authorizable.getID()); } else { return false; } }
public Boolean perform(SessionContext context) throws RepositoryException { NodeImpl nMembers = (groupNode.hasNode(UserConstants.N_MEMBERS) ? groupNode.getNode(UserConstants.N_MEMBERS) : groupNode.addNode(UserConstants.N_MEMBERS, UserConstants.NT_REP_MEMBERS, null)); // Create N_MEMBERS node structure for holding member references for (Membership.Member member : nonExisting) { PropertySequence properties = GroupImpl.getPropertySequence(nMembers, userManager); String propName = member.name; if (propName == null) { log.debug("Ignoring unnamed user with id {}", member.id); continue; } if (properties.hasItem(propName)) { log.debug("Overwriting authorizable {} which is already member of {}.", propName, gr); properties.removeProperty(propName); } Value newMember = session.getValueFactory().createValue(member.id.toString(), PropertyType.WEAKREFERENCE); properties.addProperty(propName, newMember); } return null; } });
private static void checkLookup(PropertySequence properties, List<String> keys) throws RepositoryException { for (String key : keys) { assertTrue("Missing key: " + key, properties.hasItem(key)); Property property = properties.getItem(key); assertEquals("Key " + key + " does not match name of property " + property, key, property.getName()); } }
/** * @see MembershipProvider#getMembers(boolean, int) */ public Iterator<Authorizable> getMembers(boolean includeIndirect, int type) throws RepositoryException { if (node.hasNode(N_MEMBERS)) { PropertySequence members = getPropertySequence(node.getNode(N_MEMBERS), userManager); if (includeIndirect) { return includeIndirect(toAuthorizables(members.iterator(), type), type); } else { return toAuthorizables(members.iterator(), type); } } else { return Iterators.empty(); } }
public void testEmptyPropertySequence() throws RepositoryException { Comparator<String> order = Rank.<String>comparableComparator(); TreeManager treeManager = new BTreeManager(testNode, 2, 4, order, true); PropertySequence properties = ItemSequence.createPropertySequence(treeManager, errorHandler); Iterator<Property> propertyIt = properties.iterator(); assertFalse(propertyIt.hasNext()); assertEmpty(properties); }