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] [Created] (JCR-3371) TCK test for shareable nodes incorrectly assumes the 'mix:shareable' mixin cannot be removed
Date Tue, 03 Jul 2012 02:00:46 GMT
Randall Hauch created JCR-3371:
----------------------------------

             Summary: 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: Bug
          Components: jackrabbit-jcr-tests, JCR 2.0, test
    Affects Versions: 2.5
            Reporter: Randall Hauch
            Priority: Critical
             Fix For: 2.5.1, 2.6


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