FELIX-701 Stop running bundles before updating it and start only
when all bundles have been installed/updated to prevent resolution
issues when updating running bundles
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@690574 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/ResolverImpl.java b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/ResolverImpl.java
index 972c146..ec06639 100644
--- a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/ResolverImpl.java
+++ b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/ResolverImpl.java
@@ -485,11 +485,21 @@
// Update the installed bundle.
try
{
+ // stop the bundle before updating to prevent
+ // the bundle update from throwing due to not yet
+ // resolved dependencies
+ boolean doStartBundle = start;
+ if (localResource.getBundle().getState() == Bundle.ACTIVE)
+ {
+ doStartBundle = true;
+ localResource.getBundle().stop();
+ }
+
localResource.getBundle().update(deployResources[i].getURL().openStream());
// If necessary, save the updated bundle to be
// started later.
- if (start)
+ if (doStartBundle)
{
startList.add(localResource.getBundle());
}