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