Author: fmeschbe
Date: Thu Jun 19 05:35:30 2008
New Revision: 669469

URL: http://svn.apache.org/viewvc?rev=669469&view=rev
Log:
SLING-545 Apply modified patch (see issue for modification details)

Modified:
    
incubator/sling/trunk/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java

Modified: 
incubator/sling/trunk/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java?rev=669469&r1=669468&r2=669469&view=diff
==============================================================================
--- 
incubator/sling/trunk/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java
 (original)
+++ 
incubator/sling/trunk/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java
 Thu Jun 19 05:35:30 2008
@@ -295,13 +295,14 @@
             return;
         }
 
-        Set<URL> ignoreEntry = new HashSet<URL>();
+        Map<URL, Node> processedEntries = new HashMap<URL, Node>();
 
         // potential root node import/extension
         URL rootNodeDescriptor = importRootNode(parent.getSession(), bundle,
             path, versionables, checkin);
         if (rootNodeDescriptor != null) {
-            ignoreEntry.add(rootNodeDescriptor);
+            processedEntries.put(rootNodeDescriptor,
+                parent.getSession().getRootNode());
         }
 
         while (entries.hasMoreElements()) {
@@ -325,11 +326,13 @@
                 // otherwise call createFolder, which creates an nt:folder or
                 // returns an existing node (created by a descriptor)
                 Node node = null;
-                if (nodeDescriptor != null
-                    && !ignoreEntry.contains(nodeDescriptor)) {
-                    node = createNode(parent, name, nodeDescriptor, overwrite,
-                        versionables, checkin);
-                    ignoreEntry.add(nodeDescriptor);
+                if (nodeDescriptor != null) {
+                    node = processedEntries.get(nodeDescriptor);
+                    if (node == null) {
+                        node = createNode(parent, name, nodeDescriptor,
+                            overwrite, versionables, checkin);
+                        processedEntries.put(nodeDescriptor, node);
+                    }
                 } else {
                     node = createFolder(parent, name, overwrite);
                 }
@@ -344,7 +347,7 @@
                 
                 // file => create file
                 URL file = bundle.getEntry(entry);
-                if (ignoreEntry.contains(file)) {
+                if (processedEntries.containsKey(file)) {
                     // this is a consumed node descriptor
                     continue;
                 }
@@ -359,9 +362,10 @@
                     }
                 }
                 if (foundProvider) {
-                    if (createNode(parent, getName(entry), file, overwrite,
-                        versionables, checkin) != null) {
-                        ignoreEntry.add(file);
+                    Node node = null;
+                    if ((node = createNode(parent, getName(entry), file, 
overwrite,
+                        versionables, checkin)) != null) {
+                        processedEntries.put(file, node);
                         continue;
                     }
                 }


Reply via email to