FELIX-2140: The Requirement#isSatisfied() method should actually check the capability/requirement namespace
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@916766 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Requirement.java b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Requirement.java
index f360537..c45549b 100644
--- a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Requirement.java
+++ b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Requirement.java
@@ -49,6 +49,12 @@
String getComment();
+ /**
+ * Check if the given capability satisfied this requirement.
+ *
+ * @param capability the capability to check
+ * @return <code>true</code> is the capability satisfies this requirement, <code>false</code> otherwise
+ */
boolean isSatisfied(Capability capability);
/**
diff --git a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/RequirementImpl.java b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/RequirementImpl.java
index 7e75a1b..4ccc4da 100644
--- a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/RequirementImpl.java
+++ b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/RequirementImpl.java
@@ -71,7 +71,7 @@
public synchronized boolean isSatisfied(Capability capability)
{
- return m_filter.matchCase(capability.getProperties());
+ return m_name.equals(capability.getName()) && m_filter.matchCase(capability.getProperties());
}
public synchronized boolean isExtend()
diff --git a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/ResolverImpl.java b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/ResolverImpl.java
index d0706fe..b5bc169 100644
--- a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/ResolverImpl.java
+++ b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/ResolverImpl.java
@@ -340,8 +340,7 @@
Capability[] caps = resource.getCapabilities();
for (int capIdx = 0; (caps != null) && (capIdx < caps.length); capIdx++)
{
- if (caps[capIdx].getName().equals(req.getName())
- && req.isSatisfied(caps[capIdx]))
+ if (req.isSatisfied(caps[capIdx]))
{
// The requirement is already satisfied an existing
// resource, return the resource.
@@ -371,8 +370,7 @@
Capability[] caps = resources[resIdx].getCapabilities();
for (int capIdx = 0; (caps != null) && (capIdx < caps.length); capIdx++)
{
- if (caps[capIdx].getName().equals(req.getName())
- && req.isSatisfied(caps[capIdx]))
+ if (req.isSatisfied(caps[capIdx]))
{
matchingCapabilities.add(caps[capIdx]);
}