Own AccessManager + VersionManager : AccesDenied problem
--------------------------------------------------------

                 Key: JCR-643
                 URL: http://issues.apache.org/jira/browse/JCR-643
             Project: Jackrabbit
          Issue Type: Bug
          Components: versioning
            Reporter: Andrey


I have implemented my own AccessManager, and everything works fine, until I 
want to use versioning (mix:versionable). 

When I try this code:

Node root = session.getRootNode();
if (root.canAddMixin("mix:referenceable")) root.addMixin("mix:referenceable");

Node new_node = root.addNode("some_name");
if (new_node.canAddMixin("mix:referenceable")) 
new_node.addMixin("mix:referenceable");
if (new_node.canAddMixin("mix:versionable")) 
new_node.addMixin("mix:versionable");

// here I grant privileges to new_node
handler.addACL(root.getUUID(), new_node.getUUID());

session.save();

I have a AccessDeniedException, then I look at jackrabbit sources 
(VersionManagerImpl.java) and found this:

 public VersionHistory createVersionHistory(Session session, final NodeState 
node)
            throws RepositoryException {
        InternalVersionHistory history = (InternalVersionHistory)
                escFactory.doSourced((SessionImpl) session, new SourcedTarget(){
            public Object run() throws RepositoryException {
                return createVersionHistory(node);
            }
        });
// HERE IS new version node created

        if (history == null) {
            throw new VersionException("History already exists for node " + 
node.getNodeId());
        }
// AND HERE you want to check privileges for newly created node
        return (VersionHistory) ((SessionImpl) 
session).getNodeById(history.getId());
}

// so, SessionImpl ask ItemManager for  NodeImpl, 
// ItemManager ask  AccessManager about Item privileges ( 
session.getAccessManager().isGranted(id, AccessManager.READ) ),
// and my AccessManager don't know anything about this Item, so it (Item) 
haven't any privileges, 
// and I have a AccessDeniedException


Did I miss something? Can I use versioning with own AccessManager?


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to