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());


Reply via email to