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