[exo-jcr-commits] exo-jcr SVN: r886 - jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Nov 26 09:17:46 EST 2009
Author: sergiykarpenko
Date: 2009-11-26 09:17:46 -0500 (Thu, 26 Nov 2009)
New Revision: 886
Modified:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java
Log:
EXOJCR-270: updateTreeACL - updated
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java 2009-11-26 14:10:48 UTC (rev 885)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java 2009-11-26 14:17:46 UTC (rev 886)
@@ -765,7 +765,7 @@
if (!prevData.getACL().equals(data.getACL()))
{
- updateTreeACL(node, data.getACL());
+ updateChildsACL(node, data.getACL());
}
}
@@ -878,58 +878,53 @@
* @param newACL - new ACL that must be inserted to node data.
* @throws RepositoryException on error state detected
*/
- protected void updateTreeACL(Node<Serializable, Object> node, AccessControlList newACL) throws RepositoryException
+ protected void updateChildsACL(Node<Serializable, Object> node, AccessControlList newACL) throws RepositoryException
{
- NodeData prevData = (NodeData)node.get(ITEM_DATA);
-
- // is exo:Privilegeable
- boolean isPrivilegeable = false;
- for (InternalQName mixin : prevData.getMixinTypeNames())
+ for (Node<Serializable, Object> child : node.getChildren())
{
- if (mixin.equals(Constants.EXO_PRIVILEGEABLE))
+ String childNodeId = (String)child.get(ITEM_ID);
+ if (childNodeId == null)
{
- isPrivilegeable = true;
- break;
+ throw new RepositoryException("FATAL Child Node Id key is null. Parent " + node.getFqn());
}
- }
- if (!isPrivilegeable || prevData.getACL().equals(newACL))
- {
- // do update NodeData
+ Node<Serializable, Object> childNode = nodesRoot.getChild(makeNodeFqn(childNodeId));
+ if (childNode == null)
+ {
+ throw new RepositoryException("FATAL Node record not found (" + childNodeId + "), but listed in childs of "
+ + node.getFqn());
+ }
- if (!prevData.getACL().equals(newACL))
+ NodeData prevData = (NodeData)childNode.get(ITEM_DATA);
+ // is exo:Privilegeable
+ boolean isPrivilegeable = false;
+ for (InternalQName mixin : prevData.getMixinTypeNames())
{
+ if (mixin.equals(Constants.EXO_PRIVILEGEABLE))
+ {
+ isPrivilegeable = true;
+ break;
+ }
+ }
+
+ if (!isPrivilegeable)
+ {
+ // do update NodeData
AccessControlList acl = new AccessControlList(prevData.getACL().getOwner(), newACL.getPermissionEntries());
TransientNodeData newData =
new TransientNodeData(prevData.getQPath(), prevData.getIdentifier(), prevData.getPersistedVersion(),
prevData.getPrimaryTypeName(), prevData.getMixinTypeNames(), prevData.getOrderNumber(), prevData
.getParentIdentifier(), acl);
- newData.addState(TransientPropertyData.TRANSITIVE_PATH_UPDATED);
- node.put(ITEM_DATA, newData);
- }
+ newData.addState(TransientPropertyData.TRANSITIVE_ACL_UPDATED);
+ childNode.put(ITEM_DATA, newData);
- // do update child nodes
-
- for (Node<Serializable, Object> child : node.getChildren())
- {
- String childNodeId = (String)child.get(ITEM_ID);
- if (childNodeId == null)
- {
- throw new RepositoryException("FATAL Child Node Id key is null. Parent " + prevData.getQPath());
- }
-
- Node<Serializable, Object> childNode = nodesRoot.getChild(makeNodeFqn(childNodeId));
- if (childNode == null)
- {
- throw new RepositoryException("FATAL Node record not found (" + childNodeId
- + "), but listed in childs of " + prevData.getQPath());
- }
-
- updateTreeACL(childNode, newACL);
+ // do update childs
+ updateChildsACL(childNode, newACL);
}
}
+
}
/**
More information about the exo-jcr-commits
mailing list