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;