You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/06/10 15:06:47 UTC
svn commit: r783346 - in /jackrabbit/trunk/jackrabbit-core/src:
main/java/org/apache/jackrabbit/core/security/user/
main/resources/org/apache/jackrabbit/core/nodetype/
test/java/org/apache/jackrabbit/api/security/user/
Author: angela
Date: Wed Jun 10 13:06:47 2009
New Revision: 783346
URL: http://svn.apache.org/viewvc?rev=783346&view=rev
Log:
JCR-2135: UserManagement: make membership a weakreferences
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java?rev=783346&r1=783345&r2=783346&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java Wed Jun 10 13:06:47 2009
@@ -39,6 +39,7 @@
import javax.jcr.PropertyIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
+import javax.jcr.ItemNotFoundException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.PropertyDefinition;
import java.security.Principal;
@@ -304,8 +305,7 @@
boolean addToGroup(GroupImpl group) throws RepositoryException {
try {
Value[] values;
- // TODO: replace by weak-refs
- Value added = getSession().getValueFactory().createValue(group.getNode());
+ Value added = getSession().getValueFactory().createValue(group.getNode(), true);
NodeImpl node = getNode();
if (node.hasProperty(P_GROUPS)) {
Value[] old = node.getProperty(P_GROUPS).getValues();
@@ -364,10 +364,16 @@
}
Value[] refs = node.getProperty(P_GROUPS).getValues();
for (int i = 0; i < refs.length; i++) {
- NodeImpl groupNode = (NodeImpl) getSession().getNodeByUUID(refs[i].getString());
- Group group = GroupImpl.create(groupNode, userManager);
- if (groups.add(group) && includedIndirect) {
- ((AuthorizableImpl) group).collectMembership(groups, true);
+ try {
+ NodeImpl groupNode = (NodeImpl) getSession().getNodeByUUID(refs[i].getString());
+ Group group = GroupImpl.create(groupNode, userManager);
+ if (groups.add(group) && includedIndirect) {
+ ((AuthorizableImpl) group).collectMembership(groups, true);
+ }
+ } catch (ItemNotFoundException e) {
+ // groupNode doesn't exist any more
+ log.warn("Group node referenced by " + getID() + " doesn't exist -> Ignored from membership list.");
+ // TODO: ev. clean up list of group memberships
}
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java?rev=783346&r1=783345&r2=783346&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java Wed Jun 10 13:06:47 2009
@@ -168,8 +168,7 @@
* @throws RepositoryException If an error occurs while collecting the members.
*/
private Collection getMembers(boolean includeIndirect) throws RepositoryException {
- // TODO: replace by weak-refs
- PropertyIterator itr = getNode().getReferences();
+ PropertyIterator itr = getNode().getWeakReferences();
Collection members = new HashSet((int) itr.getSize());
while (itr.hasNext()) {
NodeImpl n = (NodeImpl) itr.nextProperty().getParent();
Modified: jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd?rev=783346&r1=783345&r2=783346&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/resources/org/apache/jackrabbit/core/nodetype/builtin_nodetypes.cnd Wed Jun 10 13:06:47 2009
@@ -252,7 +252,7 @@
+ * (rep:AuthorizableFolder) = rep:AuthorizableFolder protected version
- rep:principalName (string) protected mandatory
- rep:referees (string) protected multiple
- - rep:groups (reference) protected multiple < 'rep:Group'
+ - rep:groups (weakreference) protected multiple < 'rep:Group'
- * (undefined)
- * (undefined) multiple
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java?rev=783346&r1=783345&r2=783346&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java Wed Jun 10 13:06:47 2009
@@ -279,14 +279,12 @@
}
/**
- * TODO: uncomment once membership-relation is stored as weak ref.
* Removing a GroupImpl must be possible even if there are still existing
* members present.
*
* @throws RepositoryException
* @throws NotExecutableException
*/
- /*
public void testRemoveGroupIfMemberExist() throws RepositoryException, NotExecutableException {
User auth = getTestUser(superuser);
String newGroupId = null;
@@ -306,5 +304,4 @@
}
}
}
- */
}
\ No newline at end of file