FELIX-2127: The explanation why a resource is included is nearly useless
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@916738 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Capability.java b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Capability.java
index 3eede77..c179ac1 100644
--- a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Capability.java
+++ b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Capability.java
@@ -45,4 +45,11 @@
* @return a Map<String,List>
*/
Map getProperties();
+
+ /**
+ * Return the resource this capability belongs to
+ *
+ * @return the resource
+ */
+ Resource getResource();
}
\ No newline at end of file
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 3112428..f360537 100644
--- a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Requirement.java
+++ b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/Requirement.java
@@ -50,4 +50,12 @@
String getComment();
boolean isSatisfied(Capability capability);
+
+ /**
+ * Return the resource this requirement belongs to
+ * or <code>null</code
+ *
+ * @return the resource
+ */
+ Resource getResource();
}
\ No newline at end of file
diff --git a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/CapabilityImpl.java b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/CapabilityImpl.java
index 9302195..01f6542 100644
--- a/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/CapabilityImpl.java
+++ b/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/CapabilityImpl.java
@@ -21,6 +21,7 @@
import java.util.*;
import org.apache.felix.bundlerepository.Capability;
+import org.apache.felix.bundlerepository.Resource;
public class CapabilityImpl implements Capability
{
@@ -32,7 +33,7 @@
{
}
- public ResourceImpl getResource()
+ public Resource getResource()
{
return m_resource;
}
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 10bdead..7e75a1b 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
@@ -116,6 +116,10 @@
public synchronized boolean equals(Object o)
{
+ if (this == o)
+ {
+ return true;
+ }
if (o instanceof Requirement)
{
Requirement r = (Requirement) o;
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 b27aafc..d0706fe 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
@@ -175,7 +175,9 @@
ResourceImpl fake = new ResourceImpl();
for (Iterator iter = m_addedRequirementSet.iterator(); iter.hasNext(); )
{
- fake.addRequire((Requirement) iter.next());
+ Requirement req = (Requirement) iter.next();
+ fake.addRequire(req);
+ ((RequirementImpl) req).setResource(null);
}
if (!resolve(fake, locals, remotes, false))
{
@@ -638,13 +640,6 @@
}
else
{
- for (int reqIdx = 0; reqIdx < reasons.length; reqIdx++)
- {
- if (req.equals(reasons[reqIdx]))
- {
- return;
- }
- }
Requirement[] tmp = new Requirement[reasons.length + 1];
System.arraycopy(reasons, 0, tmp, 0, reasons.length);
tmp[reasons.length] = req;