You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2010/03/21 09:24:41 UTC
svn commit: r925740 -
/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
Author: rickhall
Date: Sun Mar 21 08:24:41 2010
New Revision: 925740
URL: http://svn.apache.org/viewvc?rev=925740&view=rev
Log:
When calculating package sources, if a module exports the package more than
once then we must include all corresponding capabilities. (FELIX-2035)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java?rev=925740&r1=925739&r2=925740&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java Sun Mar 21 08:24:41 2010
@@ -1309,9 +1309,23 @@ ex.printStackTrace();
}
cycleMap.add(cap);
- Packages pkgs = modulePkgMap.get(cap.getModule());
- sources.add(cap);
+ // Get the package name associated with the capability.
String pkgName = cap.getAttribute(Capability.PACKAGE_ATTR).getValue().toString();
+
+ // Since a module can export the same package more than once, get
+ // all package capabilities for the specified package name.
+ List<Capability> caps = cap.getModule().getCapabilities();
+ for (int capIdx = 0; capIdx < caps.size(); capIdx++)
+ {
+ if (caps.get(capIdx).getNamespace().equals(Capability.PACKAGE_NAMESPACE)
+ && caps.get(capIdx).getAttribute(Capability.PACKAGE_ATTR).getValue().equals(pkgName))
+ {
+ sources.add(caps.get(capIdx));
+ }
+ }
+
+ // Then get any addition sources for the package from required bundles.
+ Packages pkgs = modulePkgMap.get(cap.getModule());
List<Blame> required = pkgs.m_requiredPkgs.get(pkgName);
if (required != null)
{