You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2015/01/27 18:37:55 UTC
svn commit: r1655098 -
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java
Author: mreutegg
Date: Tue Jan 27 17:37:55 2015
New Revision: 1655098
URL: http://svn.apache.org/r1655098
Log:
OAK-2452: Avoid lookup of conflicting node with ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java?rev=1655098&r1=1655097&r2=1655098&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java Tue Jan 27 17:37:55 2015
@@ -454,7 +454,15 @@ public class ImporterImpl implements Imp
// create node
if (id == null) {
// no potential uuid conflict, always add new node
- tree = createTree(parent, nodeInfo, id);
+ tree = createTree(parent, nodeInfo, null);
+ } else if (uuidBehavior == ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW) {
+ // always create a new UUID even if no
+ // conflicting node exists. see OAK-1244
+ tree = createTree(parent, nodeInfo, UUID.randomUUID().toString());
+ // remember uuid mapping
+ if (isNodeType(tree, JcrConstants.MIX_REFERENCEABLE)) {
+ refTracker.put(nodeInfo.getUUID(), TreeUtil.getString(tree, JcrConstants.JCR_UUID));
+ }
} else {
//1. First check from base state that tree corresponding to
@@ -475,12 +483,7 @@ public class ImporterImpl implements Imp
conflicting = currentStateIdManager.getTree(id);
}
- // resolve conflict if there is one or force
- // conflict resolution when behavior is IMPORT_UUID_CREATE_NEW.
- // the latter will always create a new UUID even if no
- // conflicting node exists. see OAK-1244
- if ((conflicting != null && conflicting.exists())
- || uuidBehavior == ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW) {
+ if (conflicting != null && conflicting.exists()) {
// resolve uuid conflict
tree = resolveUUIDConflict(parent, conflicting, id, nodeInfo);
if (tree == null) {