jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jukka Zitting (JIRA)" <j...@apache.org>
Subject [jira] Updated: (JCR-643) Own AccessManager + VersionManager : AccesDenied problem
Date Fri, 17 Oct 2008 10:02:46 GMT

     [ https://issues.apache.org/jira/browse/JCR-643?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jukka Zitting updated JCR-643:
------------------------------

          Component/s: jackrabbit-core
    Affects Version/s: 1.5.0
                       1.4

> 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
>
> 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.


Mime
View raw message