Fixed synchronization for add/remove listener contention.
diff --git a/java/maven/src/org/netbeans/modules/maven/queries/MavenDependencyResult.java b/java/maven/src/org/netbeans/modules/maven/queries/MavenDependencyResult.java
index 07237e9..685ddd8 100644
--- a/java/maven/src/org/netbeans/modules/maven/queries/MavenDependencyResult.java
+++ b/java/maven/src/org/netbeans/modules/maven/queries/MavenDependencyResult.java
@@ -130,19 +130,15 @@
if (listeners == null) {
attach = true;
listeners = new ArrayList<>();
+ wL = WeakListeners.propertyChange(this, mavenProject);
+ mavenProject.addPropertyChangeListener(wL);
}
listeners.add(l);
}
- if (!attach) {
- return;
- }
- wL = WeakListeners.propertyChange(this, mavenProject);
- mavenProject.addPropertyChangeListener(wL);
}
@Override
public void removeChangeListener(ChangeListener l) {
- boolean detach = false;
synchronized (this) {
if (listeners == null) {
return;
@@ -150,6 +146,7 @@
listeners.remove(l);
if (listeners.isEmpty()) {
mavenProject.removePropertyChangeListener(wL);
+ listeners = null;
}
}
}