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