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) {