[ 
https://issues.apache.org/jira/browse/JCRVLT-549?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tobias Bocanegra updated JCRVLT-549:
------------------------------------
    Summary: node cannot be deleted if it's a multi-mandatory child node  (was: 
Mandatory node is not deleted but it's marked for deletion)

> node cannot be deleted if it's a multi-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
>
> 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.3.4#803005)

Reply via email to