You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:47:24 UTC
[sling-org-apache-sling-jcr-contentloader] 21/36: SLING-694 :
Initial Content does not load initial content from a file
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.jcr.contentloader-2.0.6
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-contentloader.git
commit 27a98746e73793164f7deb95e2c5d20e190aecde
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Fri Dec 11 12:12:00 2009 +0000
SLING-694 : Initial Content does not load initial content from a file
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/contentloader@889584 13f79535-47bb-0310-9956-ffa450edef68
---
.../sling/jcr/contentloader/internal/Loader.java | 134 +++++++++++++--------
1 file changed, 84 insertions(+), 50 deletions(-)
diff --git a/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java b/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java
index ef41c58..6b87271 100644
--- a/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java
+++ b/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java
@@ -336,17 +336,30 @@ public class Loader {
final Node parent,
final List<String> createdNodes)
throws RepositoryException {
+ // init content creator
+ this.contentCreator.init(configuration, this.defaultImportProviders, createdNodes);
+
+ final Map<URL, Node> processedEntries = new HashMap<URL, Node>();
@SuppressWarnings("unchecked")
Enumeration<String> entries = bundle.getEntryPaths(path);
if (entries == null) {
- log.info("install: No initial content entries at {}", path);
+ // check for single content
+ final URL u = bundle.getEntry(path);
+ if ( u == null ) {
+ log.info("install: No initial content entries at {} in bundle {}", path, bundle.getSymbolicName());
+ return;
+ }
+ // we have a single file content, let's check if this has an import provider extension
+ for (String ext : this.contentCreator.getImportProviders().keySet()) {
+ if ( path.endsWith(ext) ) {
+
+ }
+ }
+ handleFile(path, bundle, processedEntries, configuration, parent, createdNodes);
return;
}
- // init content creator
- this.contentCreator.init(configuration, this.defaultImportProviders, createdNodes);
- final Map<URL, Node> processedEntries = new HashMap<URL, Node>();
// potential root node import/extension
URL rootNodeDescriptor = importRootNode(parent.getSession(), bundle, path);
if (rootNodeDescriptor != null) {
@@ -356,7 +369,7 @@ public class Loader {
while (entries.hasMoreElements()) {
final String entry = entries.nextElement();
- log.debug("Processing initial content entry {}", entry);
+ log.debug("Processing initial content entry {} in bundle {}", entry, bundle.getSymbolicName());
if (entry.endsWith("/")) {
// dir, check for node descriptor , else create dir
@@ -392,55 +405,76 @@ public class Loader {
}
} else {
-
// file => create file
- final URL file = bundle.getEntry(entry);
- if (processedEntries.containsKey(file)) {
- // this is a consumed node descriptor
- continue;
- }
- final String name = getName(entry);
+ handleFile(entry, bundle, processedEntries, configuration, parent, createdNodes);
+ }
+ }
+ }
- // file, check for node descriptor , else create dir
- URL nodeDescriptor = null;
- for (String ext : this.contentCreator.getImportProviders().keySet()) {
- nodeDescriptor = bundle.getEntry(entry + ext);
- if (nodeDescriptor != null) {
- break;
- }
- }
+ /**
+ * Handle a file entry.
+ * @param entry
+ * @param file The url to the content file.
+ * @param bundle
+ * @param processedEntries
+ * @param configuration
+ * @param parent
+ * @param createdNodes
+ * @throws RepositoryException
+ */
+ private void handleFile(final String entry,
+ final Bundle bundle,
+ final Map<URL, Node> processedEntries,
+ final PathEntry configuration,
+ final Node parent,
+ final List<String> createdNodes)
+ throws RepositoryException {
+ final URL file = bundle.getEntry(entry);
+ final String name = getName(entry);
- // install if it is a descriptor
- boolean foundProvider = this.contentCreator.getImportProvider(entry) != null;
+ if (processedEntries.containsKey(file)) {
+ // this is a consumed node descriptor
+ return;
+ }
- Node node = null;
- if (foundProvider) {
- if ((node = createNode(parent, name, file, configuration)) != null) {
- processedEntries.put(file, node);
- }
- }
+ // check for node descriptor
+ URL nodeDescriptor = null;
+ for (String ext : this.contentCreator.getImportProviders().keySet()) {
+ nodeDescriptor = bundle.getEntry(entry + ext);
+ if (nodeDescriptor != null) {
+ break;
+ }
+ }
- // otherwise just place as file
- if ( node == null ) {
- try {
- createFile(configuration, parent, file, createdNodes);
- node = parent.getNode(name);
- } catch (IOException ioe) {
- log.warn("Cannot create file node for {}", file, ioe);
- }
- }
- // if we have a descriptor, which has not been processed yet,
- // process it
- if (nodeDescriptor != null && processedEntries.get(nodeDescriptor) == null ) {
- try {
- this.contentCreator.setIgnoreOverwriteFlag(true);
- node = createNode(parent, name, nodeDescriptor,
- configuration);
- processedEntries.put(nodeDescriptor, node);
- } finally {
- this.contentCreator.setIgnoreOverwriteFlag(false);
- }
- }
+ // install if it is a descriptor
+ boolean foundProvider = this.contentCreator.getImportProvider(entry) != null;
+
+ Node node = null;
+ if (foundProvider) {
+ if ((node = createNode(parent, name, file, configuration)) != null) {
+ processedEntries.put(file, node);
+ }
+ }
+
+ // otherwise just place as file
+ if ( node == null ) {
+ try {
+ createFile(configuration, parent, file, createdNodes);
+ node = parent.getNode(name);
+ } catch (IOException ioe) {
+ log.warn("Cannot create file node for {}", file, ioe);
+ }
+ }
+ // if we have a descriptor, which has not been processed yet,
+ // process it
+ if (nodeDescriptor != null && processedEntries.get(nodeDescriptor) == null ) {
+ try {
+ this.contentCreator.setIgnoreOverwriteFlag(true);
+ node = createNode(parent, name, nodeDescriptor,
+ configuration);
+ processedEntries.put(nodeDescriptor, node);
+ } finally {
+ this.contentCreator.setIgnoreOverwriteFlag(false);
}
}
}
@@ -545,7 +579,7 @@ public class Loader {
}
/**
- * Gets and decods the name part of the <code>path</code>. The name is
+ * Gets and decodes the name part of the <code>path</code>. The name is
* the part of the path after the last slash (or the complete path if no
* slash is contained). To support names containing unsupported characters
* such as colon (<code>:</code>), names may be URL encoded (see
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.