You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-dev@jackrabbit.apache.org by "Jukka Zitting (JIRA)" <ji...@apache.org> on 2012/07/05 14:29:34 UTC

[jira] [Created] (OAK-168) Basic JCR VersionManager support

Jukka Zitting created OAK-168:
---------------------------------

             Summary: Basic JCR VersionManager support
                 Key: OAK-168
                 URL: https://issues.apache.org/jira/browse/OAK-168
             Project: Jackrabbit Oak
          Issue Type: Bug
          Components: jcr
            Reporter: Jukka Zitting


Versioning is a highly useful feature for many applications, so we definitely should support that in Oak.

We could start by adding a basic JCR VersionManager implementation that simply implements checkin operations by copying content from a node to the respective version history under {{/jcr:system/jcr:versionStorage}}.

The next step would then be figuring out whether we want to expose such an operation directly in the Oak API, or if a separate versioning plugin and an associated validator for changes in the {{/jcr:system/jcr:versionStorage}} subtree works better.

Based on that we can then proceed to implement more of the JCR versioning features.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (OAK-168) Basic JCR VersionManager support

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13407045#comment-13407045 ] 

Jukka Zitting commented on OAK-168:
-----------------------------------

Note that a versioning implementation should also take the somewhat unique access control implications of versioning into account. For example, is access to a version history controlled separately, or does it follow the access controls of the latest checked out version? What about a version history with no checked out version?
                
> Basic JCR VersionManager support
> --------------------------------
>
>                 Key: OAK-168
>                 URL: https://issues.apache.org/jira/browse/OAK-168
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: jcr
>            Reporter: Jukka Zitting
>
> Versioning is a highly useful feature for many applications, so we definitely should support that in Oak.
> We could start by adding a basic JCR VersionManager implementation that simply implements checkin operations by copying content from a node to the respective version history under {{/jcr:system/jcr:versionStorage}}.
> The next step would then be figuring out whether we want to expose such an operation directly in the Oak API, or if a separate versioning plugin and an associated validator for changes in the {{/jcr:system/jcr:versionStorage}} subtree works better.
> Based on that we can then proceed to implement more of the JCR versioning features.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (OAK-168) Basic JCR VersionManager support

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13427425#comment-13427425 ] 

Jukka Zitting commented on OAK-168:
-----------------------------------

In revision 1368588 I added a dummy {{VersionManager}} implementation that for now just throws exceptions unless instructed otherwise with {{-Dtodo=log}} or  {{-Dtodo=none}}.
                
> Basic JCR VersionManager support
> --------------------------------
>
>                 Key: OAK-168
>                 URL: https://issues.apache.org/jira/browse/OAK-168
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: jcr
>            Reporter: Jukka Zitting
>
> Versioning is a highly useful feature for many applications, so we definitely should support that in Oak.
> We could start by adding a basic JCR VersionManager implementation that simply implements checkin operations by copying content from a node to the respective version history under {{/jcr:system/jcr:versionStorage}}.
> The next step would then be figuring out whether we want to expose such an operation directly in the Oak API, or if a separate versioning plugin and an associated validator for changes in the {{/jcr:system/jcr:versionStorage}} subtree works better.
> Based on that we can then proceed to implement more of the JCR versioning features.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (OAK-168) Basic JCR VersionManager support

Posted by "Julian Sedding (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13407121#comment-13407121 ] 

Julian Sedding commented on OAK-168:
------------------------------------

An alternative approach to implement versioning could be to "tag" a revision in the MicroKernel (like a Git tag). A tagged revision may not be garbage collected.

In order to expose the {{/jcr:system/jcr:versionStorage}} only the tag, and information about which node is being versioned, need to be persisted. Based on this information, it should then be possible to construct a suitable {{/jcr:system/jcr:versionStorage}} view in oak-jcr.

Having support for tagging in oak/mk, i.e. providing the possibility for taking snapshots of the entire content tree at a relatively low cost, opens up a range of possibilities. E.g. viewing the entire content tree as it was on 5th July 2012, but also e.g. hot-backups, which could discard any information that was written after s tagged state, and thus guarantee consistency.

In my ideal world, a versioning mechanism that versions the entire repository, would even find its way into the JCR spec.
                
> Basic JCR VersionManager support
> --------------------------------
>
>                 Key: OAK-168
>                 URL: https://issues.apache.org/jira/browse/OAK-168
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: jcr
>            Reporter: Jukka Zitting
>
> Versioning is a highly useful feature for many applications, so we definitely should support that in Oak.
> We could start by adding a basic JCR VersionManager implementation that simply implements checkin operations by copying content from a node to the respective version history under {{/jcr:system/jcr:versionStorage}}.
> The next step would then be figuring out whether we want to expose such an operation directly in the Oak API, or if a separate versioning plugin and an associated validator for changes in the {{/jcr:system/jcr:versionStorage}} subtree works better.
> Based on that we can then proceed to implement more of the JCR versioning features.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira