Author: gnodet
Date: Mon Oct 12 07:33:26 2009
New Revision: 824250

URL: http://svn.apache.org/viewvc?rev=824250&view=rev
Log:
FELIX-1736: after a restart, fileinstall does not always properly uninstall 
bundles

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=824250&r1=824249&r2=824250&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
 Mon Oct 12 07:33:26 2009
@@ -699,6 +699,10 @@
         try
         {
             File path = artifact.getPath();
+            // Find a listener for this artifact if needed
+            if (artifact.getListener() == null) {
+                artifact.setListener(findListener(path, 
FileInstall.getListeners()));
+            }
             // Forget this artifact
             currentManagedArtifacts.remove(path);
             // Delete transformed file
@@ -709,7 +713,7 @@
                 ((ArtifactInstaller) artifact.getListener()).uninstall(path);
             }
             // else we need uninstall the bundle
-            else if (artifact.getListener() instanceof ArtifactTransformer)
+            else if (artifact.getBundleId() != 0)
             {
                 // old can't be null because of the way we calculate deleted 
list.
                 bundle = context.getBundle(artifact.getBundleId());
@@ -721,6 +725,7 @@
                         + ". The bundle has already been uninstalled", null);
                     return null;
                 }
+                log("Uninstalling bundle " + bundle.getBundleId() + " (" + 
bundle.getSymbolicName() + ")", null);
                 bundle.uninstall();
             }
             log("Uninstalled " + path, null);


Reply via email to