[
https://issues.apache.org/jira/browse/JCRVLT-549?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17442614#comment-17442614
]
Julian Reschke commented on JCRVLT-549:
---------------------------------------
Hmmm. Good find.
One could argue that it's a bug in Oak that it supports these, and that should
be fixed. That may be hard now that it apparently is used in practice. Would be
good to find out what *exactly* Oak is enforcing here (to see whether that
support is actually meaningful and could be considered an "extension" of JCR).
For *this* ticket, I would suggest to put it aside (and not wait for its
resolution for the next filevault release), until we have made our homework on
the Oak side of things.
> node cannot be deleted if it's a residual mandatory child node
> --------------------------------------------------------------
>
> Key: JCRVLT-549
> URL: https://issues.apache.org/jira/browse/JCRVLT-549
> Project: Jackrabbit FileVault
> Issue Type: Bug
> Components: vlt
> Affects Versions: 3.4.0
> Reporter: Ankita Agarwal
> Priority: Major
> Fix For: 3.5.6
>
>
> Let say we have a rule in nodetype.cnd file
> {code:xml}
> [a:RolloutConfig] > mix:title
> orderable
> - a:trigger (string) mandatory
> + * (a:LiveSyncAction) mandatory
> [a:LiveSyncAction] > nt:unstructured
> {code}
> When a package(first) is installed where parent node's(rolloutconfigs)
> .content.xml has:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
> xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
> jcr:mixinTypes="[rep:AccessControllable]"
> jcr:primaryType="sling:OrderedFolder"
> jcr:title="Rollout Configurations">
> <default/>
> <pushonmodify/>
> <activate/>
> <deactivate/>
> </jcr:root>
> {code}
> and default node's has .content.xml
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <jcr:root xmlns:a="http://www.day.com/jcr/a/1.0"
> xmlns:jcr="http://www.jcp.org/jcr/1.0"
> a:trigger="rollout"
> jcr:description="abc"
> jcr:primaryType="a:RolloutConfig"
> jcr:title="Standard rollout config">
> <contentUpdate jcr:primaryType="a:LiveSyncAction"/>
> <contentCopy jcr:primaryType="a:LiveSyncAction"/>
> <contentDelete jcr:primaryType="a:LiveSyncAction"/>
> <referencesUpdate jcr:primaryType="a:LiveSyncAction"/>
> <personalizationContentRollout jcr:primaryType="a:LiveSyncAction"/>
> </jcr:root>
> {code}
> Installing another package(second) with the same cnd file but with different
> child node's(default node) content.xml:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <jcr:root xmlns:a"http://www.day.com/jcr/a/1.0"
> xmlns:jcr="http://www.jcp.org/jcr/1.0"
> a:trigger="rollout"
> jcr:description="abc"
> jcr:primaryType="a:RolloutConfig"
> jcr:title="Standard rollout config">
> <activate jcr:primaryType="a:LiveSyncAction"/>
> <contentCopy jcr:primaryType="a:LiveSyncAction"/>
> </jcr:root>
> {code}
> marks the below node for Deletion but doesn't delete them because it's a
> mandatory node
> {code:xml}
> D /x/y/z/rolloutconfigs/default/contentDelete
> D /x/y/z/rolloutconfigs/default/contentUpdate
> D /x/y/z/rolloutconfigs/default/orderChildren
> D /x/y/z/rolloutconfigs/default/personalizationContentRollout
> D /x/y/z/rolloutconfigs/default/referencesUpdate
> {code}
> The issue lies at
> https://github.com/apache/jackrabbit-filevault/blob/jackrabbit-filevault-3.2.8/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java#L1190
> . Here, check for the child node is mandatory or not is done after marking
> it for delete importInfo.onDeleted(path) which gives wrong information that
> the child node is deleted but in the repository, it still exists.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)