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

Jukka Zitting updated JCR-890:
------------------------------

    Attachment: session-class-move-norename.patch

As a first step to implementing this, I'd like to make the following moves of 
session-related classes form o.a.j.core to a new o.a.j.core.session package. As 
discussed on dev@, the rationale for this change is to be able to better manage 
the code paths to and from the internal state of each session.

    cd jackrabbit-trunk/src/main/java/org/apache/jackrabbit/core
    svn mkdir session
    svn move AbstractNodeData.java session
    svn move BatchedItemOperations.java session
    svn move ItemData.java session
    svn move ItemImpl.java session
    svn move ItemLifeCycleListener.java session
    svn move ItemManager.java session
    svn move ItemValidator.java session
    svn move LazyItemIterator.java session
    svn move NodeData.java session
    svn move NodeDataRef.java session
    svn move NodeImpl.java session
    svn move PropertyData.java session
    svn move PropertyImpl.java session
    svn move ProtectedItemModifier.java session
    svn move SessionImpl.java session
    svn move SessionListener.java session
    svn move SystemSession.java session
    svn move VersionManagerImpl.java session
    svn move WorkspaceImpl.java session
    svn move XASessionImpl.java session
    svn move XAWorkspace.java session

The attached patch (session-class-move.patch) contains all the import statement 
changes and other minor refactorings required to make the trunk compile and 
pass all tests after the above moves.

Note that the patch includes dummy child classes in org.apache.jackrabbit.core 
for the JCR implementation classes ItemImpl, NodeImpl, PropertyImpl, 
SessionImpl, VersionManagerImpl and WorkspaceImpl. These classes simply inherit 
the similarly named classes that were moved to o.a.j.core.session. The purpose 
of these classes is to maintain compatibility with client code that casts JCR 
objects to Jackrabbit implementation classes. Later on it may be a good idea to 
turn these classes into facades that access the underlying functionality in 
o.a.j.core.session after taking care of trivial operations like name/path 
parsing, etc.

This step is a purely structural refactoring, it does not introduce any 
functional changes in the code. All code outside o.a.j.core and 
o.a.j.core.session can be updated to reflect these changes simply by updating 
the relevant import statements. To make reviewing the patch easier, I've 
attached also a version without all the trivial package renames 
(session-class-move-rename.patch). Note that the new package boundary required 
changes to the visibility of a number of methods and classes. My plan is to 
refactor these cases so that we don't expose more of the Jackrabbit internals 
to client code.

> concurrent read-only access to a session
> ----------------------------------------
>
>                 Key: JCR-890
>                 URL: https://issues.apache.org/jira/browse/JCR-890
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: jackrabbit-core
>            Reporter: David Nuescheler
>            Assignee: Jukka Zitting
>             Fix For: 2.2.0
>
>         Attachments: session-class-move-norename.patch
>
>
> Even though the JCR specification does not make a statement about Sessions 
> shared across a number of threads I think it would be great for many 
> applications if we could state that sharing a read-only session is supported 
> by Jackrabbit.
> On many occasions in the mailing lists we stated that there should not be an 
> issue with sharing a read-only session, however I think it has never been 
> thoroughly tested or even specified as a "design goal".
> If we can come to an agreement that this is desirable I think it would be 
> great to start including testcases to validate that behaviour and update the 
> documentation respectively.

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