Solved a small logical error in the stop command:
- only if the stopUnaffectedBundles isn't set, we can omit stopping
bundles. If it *is* set, we should *always* stop all bundles.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1652840 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/StopBundleCommand.java b/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/StopBundleCommand.java
index 13bfeda..1991ce5 100644
--- a/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/StopBundleCommand.java
+++ b/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/spi/StopBundleCommand.java
@@ -88,17 +88,19 @@
* deployment package. Returns <code>false</code> otherwise.
*/
private boolean omitBundleStop(DeploymentSessionImpl session, String symbolicName) {
- boolean stopUnaffectedBundle = session.getConfiguration().isStopUnaffectedBundles();
+ boolean stopUnaffectedBundles = session.getConfiguration().isStopUnaffectedBundles();
+ if (stopUnaffectedBundles) {
+ // Default behavior: stop all bundles (see spec)...
+ return false;
+ }
- boolean result = stopUnaffectedBundle;
BundleInfoImpl sourceBundleInfo = session.getSourceAbstractDeploymentPackage().getBundleInfoByName(symbolicName);
BundleInfoImpl targetBundleInfo = session.getTargetAbstractDeploymentPackage().getBundleInfoByName(symbolicName);
+
boolean fixPackageMissing = sourceBundleInfo != null && sourceBundleInfo.isMissing();
boolean sameVersion = (targetBundleInfo != null && sourceBundleInfo != null && targetBundleInfo.getVersion().equals(sourceBundleInfo.getVersion()));
- if (fixPackageMissing || sameVersion) {
- result = true;
- }
- return result;
+
+ return (fixPackageMissing || sameVersion);
}
private static class StartBundleRunnable extends AbstractAction {