Author: gnodet
Date: Tue Apr  8 14:00:52 2014
New Revision: 1585732

URL: http://svn.apache.org/r1585732
Log:
[FELIX-4436] [fileinstall] Do not refresh bundles that have not been modified

Modified:
    
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java

Modified: 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java?rev=1585732&r1=1585731&r2=1585732&view=diff
==============================================================================
--- 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
 (original)
+++ 
felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/DirectoryWatcher.java
 Tue Apr  8 14:00:52 2014
@@ -922,6 +922,7 @@ public class DirectoryWatcher extends Th
     {
         File path = artifact.getPath();
         Bundle bundle = null;
+        AtomicBoolean modified = new AtomicBoolean();
         try
         {
             // If the listener is an installer, ask for an update
@@ -942,7 +943,7 @@ public class DirectoryWatcher extends Th
                 BufferedInputStream in = new 
BufferedInputStream(transformed.openStream());
                 try
                 {
-                    bundle = installOrUpdateBundle(location, in, 
artifact.getChecksum());
+                    bundle = installOrUpdateBundle(location, in, 
artifact.getChecksum(), modified);
                 }
                 finally
                 {
@@ -963,7 +964,7 @@ public class DirectoryWatcher extends Th
                 BufferedInputStream in = new BufferedInputStream(new 
FileInputStream(transformed != null ? transformed : path));
                 try
                 {
-                    bundle = installOrUpdateBundle(location, in, 
artifact.getChecksum());
+                    bundle = installOrUpdateBundle(location, in, 
artifact.getChecksum(), modified);
                 }
                 finally
                 {
@@ -983,11 +984,11 @@ public class DirectoryWatcher extends Th
             // jar has been modified.
             installationFailures.put(path, artifact);
         }
-        return bundle;
+        return modified.get() ? bundle : null;
     }
 
     private Bundle installOrUpdateBundle(
-        String bundleLocation, BufferedInputStream is, long checksum)
+        String bundleLocation, BufferedInputStream is, long checksum, 
AtomicBoolean modified)
         throws IOException, BundleException
     {
         is.mark(256 * 1024);
@@ -1017,6 +1018,7 @@ public class DirectoryWatcher extends Th
                         stopTransient(b);
                         Util.storeChecksum(b, checksum, context);
                         b.update(is);
+                        modified.set(true);
                     }
                     return b;
                 }
@@ -1027,7 +1029,8 @@ public class DirectoryWatcher extends Th
                 + " / " + v, null);
         Bundle b = context.installBundle(bundleLocation, is);
         Util.storeChecksum(b, checksum, context);
-        
+        modified.set(true);
+
         // Set default start level at install time, the user can override it 
if he wants
         if (startLevel != 0)
         {


Reply via email to