[ https://issues.apache.org/jira/browse/JCRVLT-85?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Konrad Windszus updated JCRVLT-85: ---------------------------------- Comment: was deleted (was: IMHO the option IMPORT_UUID_COLLISION_THROW makes much more sense when importing a node. In case the colliding node and the new node are at the same path the {{SAXException}} being triggered in https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java#L1028 could be caught and the existing node first removed (in case it is at the same location).) > Import behaviour not always correct in case of conflicting node IDs > ------------------------------------------------------------------- > > Key: JCRVLT-85 > URL: https://issues.apache.org/jira/browse/JCRVLT-85 > Project: Jackrabbit FileVault > Issue Type: Bug > Components: Packaging > Affects Versions: 3.1.16 > Reporter: Konrad Windszus > > There are two issue with conflicting IDs: > # {{DocViewSAXImporter.addNode(DocViewNode)}} checks if an ID set in the node > which is about to be imported to the JCR is already taken > (https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java#L777). > Unfortunately this check will completely skip the import if the conflicting > node is a sibling of the to-be-imported node > # Since between the check for the conflicting node id and the actual import > in {{DocViewSAXImporter.createNode(DocViewNode)}} there might be other JCR > operations happening leading to a conflicting node the import behaviour set > in > https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java#L979 > might still matter in edge cases. > Currently it is using the > {{ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING}}. > According to the JCR Spec > (http://www.day.com/specs/jcr/2.0/11_Import.html#11.8.2%20Remove%20Existing%20Node) > that means the node with the same ID is first removed from the repo (no > matter where it is located), then the new node one is imported with that ID. > That is a problem, if by coincidence the ID 1 is used for node /content/a in > the repository and now you install a package containing /content/b also > having the ID 1. Then the package would remove the /content/a node from the > repository, although this is not intended. I would rather recommend using > {{ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)