[ https://issues.apache.org/jira/browse/OAK-5229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15865459#comment-15865459 ]
Alex Parvulescu commented on OAK-5229: -------------------------------------- bq. I agree with Tobias Bocanegra that protected items should be cleaned up automatically instead of becoming regular items. I think we have to be really careful with the wording here, if you read this comment it actually contradicts this view: bq. e.g. if you change a nt:folder to nt:unstructured, the jcr:created etc should stay. So which is it? Should the protected items stay or go? I strongly believe that the repo should not silently delete data unless it absolutely has to, which is: protected properties that have no match in the new type. Everything else should stay and become regular properties. Re. UUID (and probably any protected property outside the mixin context that gives it special meaning) you can already manually set it on a node and the repo will not complain. Then you can set the corresponding mixin and you'll get a validation of the type integrity. Next removing the mixin would only mean the special properties are not special any more, but I would not delete them unless they are not accepted by the new definition. Setting the primary type is already a very rare operation and leaving the properties there has minimal side effects. [~mduerig] Is there anything in particular you'd worry about if we go with the lazy approach? [0] https://issues.apache.org/jira/browse/OAK-5229?focusedCommentId=15863061&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15863061 > Using Node.setPrimaryType() should fail if non-matching childnodes > ------------------------------------------------------------------ > > Key: OAK-5229 > URL: https://issues.apache.org/jira/browse/OAK-5229 > Project: Jackrabbit Oak > Issue Type: Bug > Components: core > Affects Versions: 1.5.14 > Reporter: Tobias Bocanegra > Assignee: Alex Parvulescu > Priority: Critical > Fix For: 1.8, 1.6.1 > > Attachments: OAK-5229.patch, OAK-5229-tests.patch, OAK-5229-v2.patch, > OAK-5229-v3.patch, OAK-5229-v4.patch > > > 1. Assume the following: > {noformat} > /testNode [nt:unstructured] > /unstructured_child [nt:unstructured] > {noformat} > 2. setting "/testNode".setPrimaryType("nt:folder") > 3. save the session. > Altering the primary type works, thus leaving the repository in an > inconsistent state. > Interestingly, subsequent calls to > "/testNiode/unstructured_child".setProperty() will fail: > {noformat} > javax.jcr.nodetype.ConstraintViolationException: OakConstraint0001: > /test_node[[nt:folder]]: No matching definition found for child node > unstructured_child with effective type [nt:unstructured] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.15#6346)