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

Konrad Windszus updated JCRVLT-598:
-----------------------------------
    Description: 
Currently, according to the documentation 
([https://jackrabbit.apache.org/filevault/referenceablenodes.html]), 
"IdConflictPolicy.FORCE_REMOVE_CONFLICTING_ID" is supposed to behave as 3.5.0 
did.

My tests show however that in 3.5.0, when importing a package with two nodes 
with conflicting UUIDs, both nodes were imported (and one of the UUIDs changed).

Update: It turned out that this is only the conflict handling for non-sibling 
nodes, for sibling nodes the behaviour depends on whether the existing 
conflicting node is contained in the filter or not. If the newly imported node 
is a sibling of the existing conflicting it either removes the existing node 
with the conflicting id but keep its references (in case the conflicting one is 
contained in the filter) or skip the to be imported node (and continue with 
importing its children as if they were below the existing one).

>From that point of view, CREATE_NEW_ID seems to be closer (but that one 
>assigns new UUIDs to *both* nodes).

-Proposal: adjust CREATE_NEW_ID behavior to keep assigning a new UUID only when 
needed (thus preserving it for one of the nodes), and document *that* mode as 
compatible to 3.5.0.-

Updated Proposal: Create new IdConflictPolicy.LEGACY which replicates the 
behaviour described above.

  was:
Currently, according to the documentation 
([https://jackrabbit.apache.org/filevault/referenceablenodes.html]), 
"IdConflictPolicy.FORCE_REMOVE_CONFLICTING_ID" is supposed to behave as 3.5.0 
did.

My tests show however that in 3.5.0, when importing a package with two nodes 
with conflicting UUIDs, both nodes were imported (and one of the UUIDs changed).

Update: It turned out that this is only the conflict handling for non-sibling 
nodes, for sibling nodes the behaviour depends on whether the existing 
conflicting node is contained in the filter or not. If it is contained the 
to-be imported node just replaced the conflicting node, if it is not contained, 
the to-be imported node is just skipped!

>From that point of view, CREATE_NEW_ID seems to be closer (but that one 
>assigns new UUIDs to *both* nodes).

-Proposal: adjust CREATE_NEW_ID behavior to keep assigning a new UUID only when 
needed (thus preserving it for one of the nodes), and document *that* mode as 
compatible to 3.5.0.-

Updated Proposal: Create new IdConflictPolicy.LEGACY which removes conflicting 
nodes in case they are siblings (i.e. share the same parent node), otherwise 
will create a new ID for the to be imported referencable node


> need IdConflictPolicy compatible with 3.5.0 behavior
> ----------------------------------------------------
>
>                 Key: JCRVLT-598
>                 URL: https://issues.apache.org/jira/browse/JCRVLT-598
>             Project: Jackrabbit FileVault
>          Issue Type: Sub-task
>          Components: vlt
>    Affects Versions: 3.5.8
>            Reporter: Julian Reschke
>            Assignee: Konrad Windszus
>            Priority: Major
>             Fix For: 3.6.2
>
>         Attachments: test-duplicate-referencable-on-child-element-only.zip, 
> test-referenceable.zip
>
>
> Currently, according to the documentation 
> ([https://jackrabbit.apache.org/filevault/referenceablenodes.html]), 
> "IdConflictPolicy.FORCE_REMOVE_CONFLICTING_ID" is supposed to behave as 3.5.0 
> did.
> My tests show however that in 3.5.0, when importing a package with two nodes 
> with conflicting UUIDs, both nodes were imported (and one of the UUIDs 
> changed).
> Update: It turned out that this is only the conflict handling for non-sibling 
> nodes, for sibling nodes the behaviour depends on whether the existing 
> conflicting node is contained in the filter or not. If the newly imported 
> node is a sibling of the existing conflicting it either removes the existing 
> node with the conflicting id but keep its references (in case the conflicting 
> one is contained in the filter) or skip the to be imported node (and continue 
> with importing its children as if they were below the existing one).
> From that point of view, CREATE_NEW_ID seems to be closer (but that one 
> assigns new UUIDs to *both* nodes).
> -Proposal: adjust CREATE_NEW_ID behavior to keep assigning a new UUID only 
> when needed (thus preserving it for one of the nodes), and document *that* 
> mode as compatible to 3.5.0.-
> Updated Proposal: Create new IdConflictPolicy.LEGACY which replicates the 
> behaviour described above.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to