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

Marcel Reutegger updated JCR-978:
---------------------------------

    Attachment: JCR-978.patch

> Remove circular dependency between VersionManagerImpl and 
> VersionItemStateProvider
> ----------------------------------------------------------------------------------
>
>                 Key: JCR-978
>                 URL: https://issues.apache.org/jira/browse/JCR-978
>             Project: Jackrabbit
>          Issue Type: Improvement
>          Components: versioning
>            Reporter: Marcel Reutegger
>            Priority: Minor
>         Attachments: JCR-978.patch
>
>
> From a architectural perspective the VersionManagerImpl (VMgr) is at a higher 
> level as the VersionItemStateProvider (VISP). While the VMgr deals with Items 
> the VISP deals with ItemState object. Nonetheless the VISP has a reference to 
> the VMgr and also calls the method setNodeReferences(), which violates the 
> rule of a strictly layered system. E.g. one negative effect of this was a 
> deadlock as described in JCR-672. It also makes it hard to solve JCR-962.
> The attached patch includes the following changes:
> - Move method VersionManagerImpl.setNodeReferences() VersionItemStateManager. 
> The method can operate on ItemStates only and does not need to be in 
> VersionManagerImpl. As can be seen in the current method it directly calls 
> the PeristenceManager, which indicates it should be located in a lower layer.
> - Promote the class VersionItemStateManager to a top level class
> - Change method VersionManagerImpl.createSharedStateManager to return a 
> VersionItemStateManager
> - Remove VersionManagerImpl instance variable from VersionItemStateProvider
> - In VersionItemStateProvider.setNodeReferences() call 
> VersionItemStateManager.setNodeReferences()
> - Instead of using the PersistenceManager in 
> VersionManagerImpl.getItemReferences() use the ItemStateManager. It also 
> seems that locking is not necessary for this method.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to