[ https://issues.apache.org/jira/browse/JCR-643?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
angela updated JCR-643: ----------------------- Attachment: VersionStorageAccessTest.java > Own AccessManager + VersionManager : AccesDenied problem > -------------------------------------------------------- > > Key: JCR-643 > URL: https://issues.apache.org/jira/browse/JCR-643 > Project: Jackrabbit > Issue Type: Bug > Components: jackrabbit-core, versioning > Affects Versions: 1.4, 1.5.0 > Reporter: Andrey > Attachments: VersionStorageAccessTest.java > > > 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. - You can reply to this email to add a comment to the issue online.