fixed memory leak in remove(Dependency) method
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1023376 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/compat/src/main/java/org/apache/felix/dependencymanager/impl/ServiceImpl.java b/dependencymanager/compat/src/main/java/org/apache/felix/dependencymanager/impl/ServiceImpl.java
index f828266..940f4bb 100644
--- a/dependencymanager/compat/src/main/java/org/apache/felix/dependencymanager/impl/ServiceImpl.java
+++ b/dependencymanager/compat/src/main/java/org/apache/felix/dependencymanager/impl/ServiceImpl.java
@@ -49,10 +49,6 @@
public Service add(Dependency dependency)
{
- synchronized (this)
- {
- m_dependencies.add(dependency);
- }
if (dependency instanceof ServiceDependencyImpl)
{
m_delegate.add(((org.apache.felix.dependencymanager.impl.ServiceDependencyImpl) dependency).getDelegate());
@@ -66,11 +62,20 @@
{
throw new IllegalArgumentException("dependency type not supported: " + dependency);
}
+
+ synchronized (this)
+ {
+ m_dependencies.add(dependency);
+ }
return this;
}
public Service remove(Dependency dependency)
{
+ synchronized (this)
+ {
+ m_dependencies.remove(dependency);
+ }
if (dependency instanceof ServiceDependencyImpl)
{
m_delegate.remove(((org.apache.felix.dependencymanager.impl.ServiceDependencyImpl) dependency).getDelegate());