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 13bfeda417e..1991ce57863 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 @@ protected void doExecute(DeploymentSessionImpl session) throws Exception { * deployment package. Returns false 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 {