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