jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrey (JIRA)" <j...@apache.org>
Subject [jira] Created: (JCR-643) Own AccessManager + VersionManager : AccesDenied problem
Date Thu, 23 Nov 2006 15:37:02 GMT
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

        

Mime
View raw message