Author: ieb
Date: Fri Feb 25 17:31:52 2011
New Revision: 1074643
URL: http://svn.apache.org/viewvc?rev=1074643&view=rev
Log:
SLING-1995 Adjusted loader to update installed bundles if they were installed
after the content was last installed. Acts the same as a bundle that was
explicity updated.
Modified:
sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java
sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/Loader.java
Modified:
sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java?rev=1074643&r1=1074642&r2=1074643&view=diff
==============================================================================
---
sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java
(original)
+++
sling/trunk/bundles/jcr/contentloader/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java
Fri Feb 25 17:31:52 2011
@@ -35,6 +35,7 @@ import javax.jcr.Session;
import javax.jcr.Value;
import javax.jcr.lock.LockException;
+import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.commons.mime.MimeTypeService;
import org.apache.sling.engine.SlingSettingsService;
import org.apache.sling.jcr.api.SlingRepository;
@@ -61,7 +62,7 @@ import org.slf4j.LoggerFactory;
public class ContentLoaderService implements SynchronousBundleListener,
JcrContentHelper {
public static final String PROPERTY_CONTENT_LOADED = "content-loaded";
- private static final String PROPERTY_CONTENT_LOADED_AT =
"content-load-time";
+ public static final String PROPERTY_CONTENT_LOADED_AT =
"content-load-time";
private static final String PROPERTY_CONTENT_LOADED_BY =
"content-loaded-by";
private static final String PROPERTY_CONTENT_UNLOADED_AT =
"content-unload-time";
private static final String PROPERTY_CONTENT_UNLOADED_BY =
"content-unloaded-by";
@@ -368,6 +369,9 @@ public class ContentLoaderService implem
return null;
}
final Map<String, Object> info = new HashMap<String, Object>();
+ if (
bcNode.hasProperty(ContentLoaderService.PROPERTY_CONTENT_LOADED_AT)) {
+ info.put(ContentLoaderService.PROPERTY_CONTENT_LOADED_AT,
bcNode.getProperty(ContentLoaderService.PROPERTY_CONTENT_LOADED_AT).getDate());
+ }
if ( bcNode.hasProperty(ContentLoaderService.PROPERTY_CONTENT_LOADED)
) {
info.put(ContentLoaderService.PROPERTY_CONTENT_LOADED,
bcNode.getProperty(ContentLoaderService.PROPERTY_CONTENT_LOADED).getBoolean());
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=1074643&r1=1074642&r2=1074643&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 Feb 25 17:31:52 2011
@@ -27,6 +27,7 @@ import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
@@ -153,8 +154,15 @@ public class Loader extends BaseImportLo
try {
final boolean contentAlreadyLoaded = ((Boolean)
bundleContentInfo.get(ContentLoaderService.PROPERTY_CONTENT_LOADED)).booleanValue();
-
- if (!isUpdate && contentAlreadyLoaded) {
+ boolean isBundleUpdated = false;
+ Calendar lastLoadedAt = (Calendar)
bundleContentInfo.get(ContentLoaderService.PROPERTY_CONTENT_LOADED_AT);
+ if ( lastLoadedAt != null) {
+ // this assumes that the bundle has been installed or
updated after the content has been loaded
+ if ( lastLoadedAt.getTimeInMillis() <
bundle.getLastModified() ) {
+ isBundleUpdated = true;
+ }
+ }
+ if (!isUpdate && !isBundleUpdated && contentAlreadyLoaded) {
log.info("Content of bundle already loaded {}.",
bundle.getSymbolicName());