[
https://issues.apache.org/jira/browse/OAK-5229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15865921#comment-15865921
]
Alex Parvulescu commented on OAK-5229:
--------------------------------------
bq. Fail setPrimaryType() with a ConstraintViolationException when there are
non-protected items that do not have a matching item definition after the
change of the primary type. With Tobi's example in the description, the
setPrimaryType() call would fail and it would be the responsibility of the
application to first remove those items (e.g. unstructured_child).
As it turns out, this item is the one that has a lot of potential for causing
trouble with the vlt code itself.
I tracked down a failure during testing a new version of the patch to this code
[0], and it looks like the importer first does a {{setPrimaryType}} and then
it deletes the extra properties. this means that the state of the node can be
illegal as it was not yet cleaned.
[0]
https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java#L882
> 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)