Author: tdraier
Date: Thu Dec 27 11:35:50 2007
New Revision: 19418

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19418&repname=
=3Djahia
Log:
fixed temporary implementation for jackrabbit permissions

Modified:
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/impl/jackrab=
bit/JackrabbitFileNodeWrapper.java&rev=3D19418&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/jackrabbit/JackrabbitFileNodeWrapper.java Thu Dec 27 11:3=
5:50 2007
@@ -1,7 +1,5 @@
 package org.jahia.services.content.impl.jackrabbit;
 =

-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
 import org.apache.log4j.Logger;
 import org.jahia.bin.Jahia;
 import org.jahia.exceptions.JahiaException;
@@ -11,10 +9,7 @@
 import org.jahia.services.content.JCRStoreProvider;
 import org.jahia.services.usermanager.JahiaUser;
 =

-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
+import javax.jcr.*;
 import java.security.Principal;
 import java.util.*;
 =

@@ -38,7 +33,8 @@
         try {
             String myPath =3D objectNode.getPath();
 =

-            Map permissions =3D ((org.apache.jackrabbit.core.security.Jahi=
aAccessManager) ((SessionImpl)session).getAccessManager()).getPermissions((=
(NodeImpl)objectNode).getId());
+            Map permissions =3D new HashMap();
+            recurseonACPs(permissions, getObjectNode());
 =

             for (Iterator iterator =3D permissions.keySet().iterator(); it=
erator.hasNext();) {
                 int p =3D 0;
@@ -167,4 +163,35 @@
         return acl;
     }
 =

+    private void recurseonACPs(Map results, Node n) throws RepositoryExcep=
tion  {
+        try {
+            while (true) {
+                if (n.isNodeType("mix:accessControlled")) {
+                    Node acp =3D n.getProperty("jcr:accessControlPolicy").=
getNode();
+                    NodeIterator aces =3D acp.getNode("jcr:acl").getNodes(=
"jcr:ace");
+                    while (aces.hasNext()) {
+                        Node ace =3D aces.nextNode();
+                        String principal =3D ace.getProperty("jcr:principa=
l").getString();
+                        String type =3D ace.getProperty("jcr:aceType").get=
String();
+                        Value[] privileges =3D ace.getProperty("jcr:privil=
eges").getValues();
+
+                        List p =3D (List) results.get(principal);
+
+                        if (p =3D=3D null)  {
+                            p =3D new ArrayList();
+                            results.put(principal, p);
+                            for (int i =3D 0; i < privileges.length; i++) {
+                                Value privilege =3D privileges[i];
+                                p.add(new String[]{n.getPath(), type, priv=
ilege.getString()});
+                            }
+                        }
+                    }
+                }
+                n =3D n.getParent();
+            }
+        } catch (ItemNotFoundException e) {
+            return;
+        }
+    }
+
 }

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to