aries-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jwr...@apache.org
Subject svn commit: r1371183 - /aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/BundleResourceUninstaller.java
Date Thu, 09 Aug 2012 12:44:28 GMT
Author: jwross
Date: Thu Aug  9 12:44:28 2012
New Revision: 1371183

URL: http://svn.apache.org/viewvc?rev=1371183&view=rev
Log:
ARIES-902: Constituent relationships between subsystems and bundles are now retained or removed
as appropriate when a subsystem is being uninstalled.

Modified:
    aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/BundleResourceUninstaller.java

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/BundleResourceUninstaller.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/BundleResourceUninstaller.java?rev=1371183&r1=1371182&r2=1371183&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/BundleResourceUninstaller.java
(original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/BundleResourceUninstaller.java
Thu Aug  9 12:44:28 2012
@@ -26,9 +26,20 @@ public class BundleResourceUninstaller e
 	
 	public void uninstall() {
 		removeReference();
-		removeConstituent();
+		// Always remove the bundle as a constituent of the subsystem being
+		// acted upon. The bundle may or may not actually be a constituent.
+		// This covers the case of unscoped subsystems with shared content
+		// where the resource may not be uninstallable.
+		removeConstituent(subsystem, resource);
 		if (!isResourceUninstallable())
 			return;
+		// If the resource is uninstallable, remove it from the "provisioned to"
+		// subsystem in case it was a dependency. The "provisioned to" subsystem
+		// may be the same subsystem as the one being acted upon. This covers
+		// the case where a dependency of the subsystem being acted upon was 
+		// provisioned to another subsystem but is not content of the other
+		// subsystem.
+		removeConstituent(provisionTo, resource);
 		if (isBundleUninstallable())
 			uninstallBundle();
 	}



Mime
View raw message