[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