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-978) Remove circular dependency between VersionManagerImpl and VersionItemStateProvider
Date Tue, 02 Oct 2007 09:28:50 GMT

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

Jukka Zitting updated JCR-978:
------------------------------

    Fix Version/s:     (was: 1.4)
                   1.3.2

Merged to the 1.3 branch in revision 581168.

> 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
>             Fix For: 1.3.2
>
>         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.


Mime
View raw message