You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Julian Reschke (JIRA)" <ji...@apache.org> on 2012/07/05 15:15:35 UTC

[jira] [Resolved] (JCR-3371) TCK test for shareable nodes incorrectly assumes the 'mix:shareable' mixin cannot be removed

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

Julian Reschke resolved JCR-3371.
---------------------------------

       Resolution: Fixed
    Fix Version/s:     (was: 2.5.1)

Patch applied with minor changes (thanks, Randall!)
                
> TCK test for shareable nodes incorrectly assumes the 'mix:shareable' mixin cannot be removed
> --------------------------------------------------------------------------------------------
>
>                 Key: JCR-3371
>                 URL: https://issues.apache.org/jira/browse/JCR-3371
>             Project: Jackrabbit Content Repository
>          Issue Type: Task
>          Components: jackrabbit-jcr-tests, JCR 2.0, test
>    Affects Versions: 2.5
>            Reporter: Randall Hauch
>            Assignee: Julian Reschke
>             Fix For: 2.6
>
>         Attachments: JCR-3371-CorrectedShareableNodeTest-logic.patch, JCR-3371.patch
>
>
> The ShareableNodeTest.testRemoveMixin() assumes that removing the "mix:shareable" mixin will *always* throw an UnsupportedOperationException. This is not only checking for the incorrect exception, section 14.15 "RemoveMixin" specifically states that it *is* possible for an implementation to support removing the 'mix:shareable' mixin:
>    "If an attempt is made to remove the mix:shareable mixin node type from a node in a 
>     shared set the implementation may either throw a ConstraintViolationException or allow 
>     the removal and change the subgraph in some implementation-specific manner. 
>     One possibility is to replace the node with a copy that has no children (if this does not 
>     violate the node type restrictions of that node). Another possibility is to give the node 
>     a copy of all of its descendants (unless the resulting copy operation would be unfeasible, 
>     as would be the case if a share cycle were involved)."
> Thus, even though it is possible for an implementation not to allow removing the "mix:shareable" mixin, the test shouldn't expect that an implementation will throw an exception. For example, one particularly easy thing for an implementation to support is removing 'mix:shareable' if and only if there are no other shared nodes (e.g., the "getSharedSet().getSize() == 1").
> This test could be removed, or perhaps it might be possible to test that removing the mixin (and saving) will either succeed or will throws only a ConstraintViolationException.
> I marked as critical because the TCK test prevents other implementations from correctly proving compatibility.

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