I have called session.getRootNode(). Now when I call: Principal p = (Principal) ((User) authorizable).getPrincipal(); the program throws a NullPointerException.
Does anybody know why? Thanks. Regards. El lun, 24-01-2011 a las 23:53 +0300, Yusuf Aaji escribió: > Javier, > > Use session.getRootNode() to apply the new policy on the whole repository. > > BR, > Yusuf > > On Mon, Jan 24, 2011 at 7:40 PM, Javier Arias <[email protected]> wrote: > > > Hi, I am trying grant privileges to a user but I can not do it. The code > > I am using is the following. > > > > Can anybody help me? > > > > > > > > Repository repository = new TransientRepository(new File(_rep)); > > Session session = repository.login(new > > SimpleCredentials("admin","admin"); > > > > UserManager userManager = ((JackrabbitSession) > > session).getUserManager(); > > > > AccessControlManager acm = session.getAccessControlManager(); > > > > Node node = sessionAdmin.getRootNodeByIdentifier("admin"); > > > > > > Authorizable authorizable = userManager.getAuthorizable(user); > > Principal p = (Principal) ((User) authorizable).getPrincipal(); > > > > Privilege[] privileges = null; > > AccessControlPolicyIterator it = (AccessControlPolicyIterator) > > acm.getApplicablePolicies(node.getPath()); > > if (it.hasNext()) > > { > > AccessControlPolicy policy = it.nextAccessControlPolicy(); > > if (policy instanceof AccessControlList) > > { > > privileges[0] = acm.privilegeFromName(Privilege.JCR_MODIFY_PROPERTIES); > > privileges[1] = acm.privilegeFromName(Privilege.JCR_ADD_CHILD_NODES); > > privileges[2] = acm.privilegeFromName(Privilege.JCR_REMOVE_NODE); > > privileges[3] = > > acm.privilegeFromName(Privilege.JCR_REMOVE_CHILD_NODES); > > privileges[4] = > > acm.privilegeFromName(Privilege.JCR_NODE_TYPE_MANAGEMENT); > > > > > > ((AccessControlList)policy).addAccessControlEntry(p,privileges); > > acm.setPolicy(node.getPath(), policy); > > } > > } > > session.save(); > > session.logout(); > > > > > > Another problem is, in class AccessControlPolicy I must call > > AccessControlPolicy.getApplicablePolicies() and setPolicy() passing as > > parameter a node. I do not know how I should get this nodo. > > Session.getRootNode()? > > session.getNode("user")? > > session.getNodeByIdentifier("user")? > > > > If I call getNode("user") or getNodeByIdentifier("user") the program > > throws a Repository exception. > > > > Thank you in advance. Regards. > > > > El sáb, 22-01-2011 a las 18:44 +0100, Seidel. Robert escribió: > > > Hi Javier, > > > > > > The jsr specification helped me a lot: > > http://jcp.org/aboutJava/communityprocess/final/jsr283/index.html > > > > > > See page 225 and following. > > > > > > Regards, Robert > > > > > > -----Ursprüngliche Nachricht----- > > > Von: Angela Schreiber [mailto:[email protected]] > > > Gesendet: Freitag, 21. Januar 2011 15:10 > > > An: [email protected] > > > Betreff: Re: New information about my last email... > > > > > > hi javier > > > > > > > About grant privileges an user, I am some lost. I understood first step > > > > and second step but I do not know how follow. How can I get > > > > AccessControlList? How grant privileges with User.getPrincipal? > > > > > > did you take a look a the JCR API related to access control? > > > starting from Session.getAccessControlManager() you should find your > > > way through, i guess. > > > > > > angela > > > > > > > > > >
