You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by jw...@apache.org on 2013/02/22 21:25:40 UTC

svn commit: r1449199 - /aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java

Author: jwross
Date: Fri Feb 22 20:25:40 2013
New Revision: 1449199

URL: http://svn.apache.org/r1449199
Log:
Add dynamic imports to sharing policy when Import-Package absent.

Fixes an issue where dynamic package imports added to a woven class were not added to a subsystem's sharing policy
if the subsystem had no Import-Package header, resulting in a NoClassDefFoundError.

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

Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java?rev=1449199&r1=1449198&r2=1449199&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/SubsystemResource.java Fri Feb 22 20:25:40 2013
@@ -723,15 +723,7 @@ public class SubsystemResource implement
 	}
 	
 	private void setImportIsolationPolicy(RegionFilterBuilder builder, ImportPackageHeader header) throws InvalidSyntaxException {
-		if (header == null)
-			return;
 		String policy = RegionFilter.VISIBLE_PACKAGE_NAMESPACE;
-		for (ImportPackageHeader.Clause clause : header.getClauses()) {
-			ImportPackageRequirement requirement = new ImportPackageRequirement(clause, this);
-			String filter = requirement.getDirectives().get(ImportPackageRequirement.DIRECTIVE_FILTER);
-			builder.allow(policy, filter);
-		}
-		
 		// work around https://www.osgi.org/bugzilla/show_bug.cgi?id=144 
 		// In the first instance, what if the various weaving services were to have a property, 
 		// osgi.woven.packages, that was a comma separated list of packages that might be woven 
@@ -740,6 +732,13 @@ public class SubsystemResource implement
 		for (String pkg : wovenPackages) { 
 			builder.allow(policy, "(osgi.wiring.package=" + pkg + ")");
 		}
+		if (header == null)
+			return;
+		for (ImportPackageHeader.Clause clause : header.getClauses()) {
+			ImportPackageRequirement requirement = new ImportPackageRequirement(clause, this);
+			String filter = requirement.getDirectives().get(ImportPackageRequirement.DIRECTIVE_FILTER);
+			builder.allow(policy, filter);
+		}
 	}
 	
 	// First pass at this: really just a sketch.