diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/TestsPacketsReceiver.java b/plugins/junit/src/com/intellij/execution/junit2/ui/TestsPacketsReceiver.java index ae364d2247c9..fffc5e5760c4 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/TestsPacketsReceiver.java +++ b/plugins/junit/src/com/intellij/execution/junit2/ui/TestsPacketsReceiver.java @@ -68,7 +68,7 @@ public class TestsPacketsReceiver implements PacketProcessor, Disposable { private final InputObjectRegistry myObjectRegistry; - private Set myCurrentTests = new HashSet(); + private final Set myCurrentTests = new HashSet(); private boolean myIsTerminated = false; private JUnitRunningModel myModel; private final JUnitConsoleProperties myConsoleProperties; @@ -81,7 +81,9 @@ public class TestsPacketsReceiver implements PacketProcessor, Disposable { } public Set getCurrentTests() { - return new HashSet(myCurrentTests); + synchronized (myCurrentTests) { + return new HashSet(myCurrentTests); + } } public void processPacket(final String packet) { @@ -125,7 +127,9 @@ public class TestsPacketsReceiver implements PacketProcessor, Disposable { public void notifyTestStart(ObjectReader reader) { final TestProxy testProxy = reader.readObject(); - myCurrentTests.add(testProxy); + synchronized (myCurrentTests) { + myCurrentTests.add(testProxy); + } final JUnitRunningModel model = getModel(); if (model != null && testProxy.getParent() == null && model.getRoot() != testProxy) { getDynamicParent(model, testProxy).addChild(testProxy); @@ -161,7 +165,9 @@ public class TestsPacketsReceiver implements PacketProcessor, Disposable { public void notifyTestResult(ObjectReader reader) { final TestProxy testProxy = reader.readObject(); - myCurrentTests.remove(testProxy); + synchronized (myCurrentTests) { + myCurrentTests.remove(testProxy); + } final int state = reader.readInt(); final StateChanger stateChanger = STATE_CLASSES.get(new Integer(state)); stateChanger.changeStateOf(testProxy, reader); @@ -169,7 +175,9 @@ public class TestsPacketsReceiver implements PacketProcessor, Disposable { public void notifyFinish(ObjectReader reader) { myIsTerminated = true; - myCurrentTests.clear(); + synchronized (myCurrentTests) { + myCurrentTests.clear(); + } final JUnitRunningModel model = getModel(); if (model != null) { model.getNotifier().fireRunnerStateChanged(new CompletionEvent(true, reader.readInt()));