Created equals()/hashCode() methods for Wire (FELIX-3495), removed exception from
stop() activator method, and make copies of mandatory/optional resource parameters
from ResolveContext.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1333021 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/resolver/src/main/java/org/apache/felix/resolver/Activator.java b/resolver/src/main/java/org/apache/felix/resolver/Activator.java
index 0d1c262..2ed989a 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/Activator.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/Activator.java
@@ -48,6 +48,5 @@
public void stop(BundleContext bc) throws Exception
{
- throw new UnsupportedOperationException("Not supported yet.");
}
}
\ No newline at end of file
diff --git a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
index 3eed4f9..eb0f0a9 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
@@ -67,8 +67,9 @@
Map<Resource, Packages> resourcePkgMap =
new HashMap<Resource, Packages>();
- Collection<Resource> mandatoryResources = rc.getMandatoryResources();
- Collection<Resource> optionalResources = rc.getOptionalResources();
+ // Make copies of arguments in case we want to modify them.
+ Collection<Resource> mandatoryResources = new ArrayList(rc.getMandatoryResources());
+ Collection<Resource> optionalResources = new ArrayList(rc.getOptionalResources());
// TODO: RFC-112 - Need impl-specific type.
// Collection<Resource> ondemandFragments = (rc instanceof ResolveContextImpl)
// ? ((ResolveContextImpl) rc).getOndemandResources() : Collections.EMPTY_LIST;
diff --git a/resolver/src/main/java/org/apache/felix/resolver/WireImpl.java b/resolver/src/main/java/org/apache/felix/resolver/WireImpl.java
index 7af9b87..a79ac71 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/WireImpl.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/WireImpl.java
@@ -67,4 +67,50 @@
+ " -> "
+ "[" + m_provider + "]";
}
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj == null)
+ {
+ return false;
+ }
+ if (!(obj instanceof Wire))
+ {
+ return false;
+ }
+ final Wire other = (Wire) obj;
+ if (this.m_requirer != other.getRequirer()
+ && (this.m_requirer == null || !this.m_requirer.equals(other.getRequirer())))
+ {
+ return false;
+ }
+ if (this.m_req != other.getRequirement()
+ && (this.m_req == null || !this.m_req.equals(other.getRequirement())))
+ {
+ return false;
+ }
+ if (this.m_provider != other.getProvider()
+ && (this.m_provider == null || !this.m_provider.equals(other.getProvider())))
+ {
+ return false;
+ }
+ if (this.m_cap != other.getCapability()
+ && (this.m_cap == null || !this.m_cap.equals(other.getCapability())))
+ {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int hash = 5;
+ hash = 29 * hash + (this.m_requirer != null ? this.m_requirer.hashCode() : 0);
+ hash = 29 * hash + (this.m_req != null ? this.m_req.hashCode() : 0);
+ hash = 29 * hash + (this.m_provider != null ? this.m_provider.hashCode() : 0);
+ hash = 29 * hash + (this.m_cap != null ? this.m_cap.hashCode() : 0);
+ return hash;
+ }
}
\ No newline at end of file