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

Stefan Guggisberg commented on JCR-3452:
----------------------------------------

bq. Yes, that is correct. BUT, adding additional child node types is making the 
restriction LESS restrictive and should be allowed. 

wrong. the required primary node types of a child node definition are logically 
ANDed during validation, i.e. adding req. types makes the constraint stronger, 
removing OTOH weaker. see [0].

bq. And setting the child node to nt:base makes the restriction LEAST 
restrictive.

agreed. that's an edge case that's currently not handled. since the abstract 
nt:base node type is the root of the node type hierarchy
it is implicitly included in every req. types constraint. explicitly adding or 
removing nt:base has no effect on the constraint.  

[0] 
http://www.day.com/specs/jcr/2.0/3_Repository_Model.html#3.7.4.1%20Required%20Primary%20Node%20Types

                
> Modified property and child node definition are rejected
> --------------------------------------------------------
>
>                 Key: JCR-3452
>                 URL: https://issues.apache.org/jira/browse/JCR-3452
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>    Affects Versions: 2.5.2
>            Reporter: Tom Quellenberg
>            Priority: Minor
>         Attachments: patch.txt
>
>
> NodeTypeDefDiff identifies modified properties and child nodes by 
> QNodeDefinitionId and QPropertyDefinitionId. Both classes have their own 
> equals and hashCode methods. Thus, properties and child nodes with trivial 
> changes (changed required types or isMultiple) are always considered as added 
> and removed ( = major change) and never as changed.
> Additional, the check for required child node types seems wrong to me: adding 
> additional (alternative) constraints are considered as major change. I think, 
> the opposite is true: removing node types from the list of required types is 
> a major change (there may exist child nodes of the removed type), adding 
> alternative constraints is a trivial change.
> There is one more change to the required child node types, which can easily 
> be checked: setting the required type to nt:base. This should always be 
> possible.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to