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;
}
}