[ https://issues.apache.org/jira/browse/JCRVLT-549?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Konrad Windszus resolved JCRVLT-549. ------------------------------------ Assignee: Konrad Windszus Resolution: Fixed > 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 > Assignee: Konrad Windszus > 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)