[
https://issues.apache.org/jira/browse/JCRVLT-549?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Konrad Windszus updated JCRVLT-549:
-----------------------------------
Summary: node cannot be deleted if it's a residual mandatory child node
(was: node cannot be deleted if it's a multi-mandatory child node)
> 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)