jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Randall Hauch (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (JCR-3371) TCK test for shareable nodes incorrectly assumes the 'mix:shareable' mixin cannot be removed
Date Tue, 03 Jul 2012 18:33:21 GMT

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

Randall Hauch updated JCR-3371:
-------------------------------

    Attachment: JCR-3371-CorrectedShareableNodeTest-logic.patch


The existing ShareableNodeTest.testRemoveMixin() test method assumed that an implementation
would 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.

This change fixes that test method to check only for the ConstraintViolationException or an
UnsupportedOperationException, or if neither of those happen then the test verifies that the
implementation correctly removed the mixin.

This test attempts to remove the mixin only after creating the node, adding the mixin, and
then saving the session. In other words, the shareable node was never used to create a shared
node. An additional test was added to test trying to remove the mixin from a node that has
already been shared. Again, either the ConstraintViolationException or UnsupportedOperationException
are thrown, or the test verifies that the implementation correctly removed the mixin.

                
> 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
>             Fix For: 2.5.1, 2.6
>
>         Attachments: JCR-3371-CorrectedShareableNodeTest-logic.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

        

Mime
View raw message