You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ie...@apache.org on 2010/09/24 14:26:16 UTC
svn commit: r1000833 - in
/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal:
DefaultContentCreator.java Loader.java PathEntry.java
Author: ieb
Date: Fri Sep 24 12:26:16 2010
New Revision: 1000833
URL: http://svn.apache.org/viewvc?rev=1000833&view=rev
Log:
SLING-1802 Made the ContentLoader look at the lastmodified timestamp of the bundle and failing that the lastmodified timestamp within the OSGi contaier to determine if
the content should be updated.
Modified:
sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java
sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java
sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/PathEntry.java
Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java?rev=1000833&r1=1000832&r2=1000833&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java (original)
+++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java Fri Sep 24 12:26:16 2010
@@ -698,10 +698,19 @@ public class DefaultContentCreator imple
// if node already exists but should be overwritten, delete it
if (parentNode.hasNode(name)) {
this.parentNodeStack.push(parentNode.getNode(name));
- this.parentNodeStack.push(parentNode.getNode(name).getNode("jcr:content"));
- if (!this.configuration.isOverwrite()) {
+ Node contentNode = parentNode.getNode(name).getNode("jcr:content");
+ this.parentNodeStack.push(contentNode);
+ long nodeLastModified = 0L;
+ if ( contentNode.hasProperty("jcr:lastModified") ) {
+ nodeLastModified = contentNode.getProperty("jcr:lastModified").getDate().getTimeInMillis();
+ }
+ if (!this.configuration.isOverwrite() && nodeLastModified >= lastModified ) {
return;
}
+ log.info(
+ "Updating {} lastModified:{} New Content LastModified:{}",
+ new Object[] { parentNode.getNode(name).getPath(),
+ new Date(nodeLastModified), new Date(lastModified) });
} else {
this.createNode(name, "nt:file", null);
this.createNode("jcr:content", "nt:resource", null);
Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java?rev=1000833&r1=1000832&r2=1000833&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java (original)
+++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java Fri Sep 24 12:26:16 2010
@@ -587,7 +587,7 @@ public class Loader extends BaseImportLo
this.contentCreator.init(configuration, defaultImportProviders, createdNodes, null);
this.contentCreator.prepareParsing(parent, name);
final URLConnection conn = source.openConnection();
- final long lastModified = conn.getLastModified();
+ final long lastModified = Math.min(conn.getLastModified(), configuration.getLastModified());
final String type = conn.getContentType();
final InputStream data = conn.getInputStream();
this.contentCreator.createFileAndResourceNode(path, data, type, lastModified);
Modified: sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/PathEntry.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/PathEntry.java?rev=1000833&r1=1000832&r2=1000833&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/PathEntry.java (original)
+++ sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/PathEntry.java Fri Sep 24 12:26:16 2010
@@ -102,14 +102,21 @@ public class PathEntry extends ImportOpt
/** Workspace to import into. */
private final String workspace;
+ private long lastModified;
+
public static Iterator<PathEntry> getContentPaths(final Bundle bundle) {
final List<PathEntry> entries = new ArrayList<PathEntry>();
-
+ String bundleLastModifiedStamp = (String) bundle.getHeaders().get("Bnd-LastModified");
+ long bundleLastModified = bundle.getLastModified(); // time last modified inside the container
+ if ( bundleLastModifiedStamp != null ) {
+ bundleLastModified = Math.min(bundleLastModified, Long.parseLong(bundleLastModifiedStamp));
+ }
final String root = (String) bundle.getHeaders().get(CONTENT_HEADER);
if (root != null) {
final ManifestHeader header = ManifestHeader.parse(root);
for (final ManifestHeader.Entry entry : header.getEntries()) {
- entries.add(new PathEntry(entry));
+
+ entries.add(new PathEntry(entry, bundleLastModified ));
}
}
@@ -119,8 +126,9 @@ public class PathEntry extends ImportOpt
return entries.iterator();
}
- public PathEntry(ManifestHeader.Entry entry) {
+ public PathEntry(ManifestHeader.Entry entry, long bundleLastModified) {
this.path = entry.getValue();
+ this.lastModified = bundleLastModified;
// check for directives
@@ -182,7 +190,11 @@ public class PathEntry extends ImportOpt
this.workspace = null;
}
}
-
+
+ public long getLastModified() {
+ return lastModified;
+ }
+
public String getPath() {
return this.path;
}