[ 
https://issues.apache.org/jira/browse/OAK-5229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15865483#comment-15865483
 ] 

angela commented on OAK-5229:
-----------------------------

I agree with [~alexparvulescu] and [~mreutegg] regarding being as conservative 
as possible. We clearly have to take care about the protected items that cannot 
be altered/removed through JCR API calls but only if the new _effective node 
type_ doesn't provide a matching item definition. I don't recall the very 
details of the patch and whether or not it uses the effective node type to spot 
those 'illegal' items... but that's how it should be from my pov.

If changing the primary type or modification of mixin types changes the item 
definition of a given node or property in a valid way this shouldn't lead to a 
removal or throwing an exception IMO. So far we never treated the protected 
items defined by JCR specification as really reserved... and if we would go 
this way we actually would need to prevent the usage of these items outside of 
the context they are defined but that would for sure require a much bigger 
refactoring and is likely to introduce some compatibility issues.... I did this 
for protected items I introduced more recently with Oak specific, system 
maintained items... but I am not sure if doing this for something like 
{{jcr:uuid}} or {{jcr:baseVersion}} or {{jcr:owner}} or {{jcr:title}} or 
{{jcr:data}} was really sensible.

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

Reply via email to