Skip to content

Commit 0f4256a

Browse files
authored
Merge pull request #137 from SeeSharpSoft/fb_concurrent_modification_exc
[FIX] use CopyOnWriteArraySet to avoid ConcurrentModificationException
2 parents 28de17e + 8af1b9c commit 0f4256a

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/main/java/net/seesharpsoft/intellij/plugins/csv/editor/table/swing/MultiLineCellRenderer.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@
1313
import javax.swing.table.TableCellRenderer;
1414
import javax.swing.text.BadLocationException;
1515
import java.awt.*;
16-
import java.util.*;
16+
import java.util.EventObject;
17+
import java.util.Iterator;
18+
import java.util.Set;
19+
import java.util.concurrent.CopyOnWriteArraySet;
1720

1821
public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer, TableCellEditor {
1922

20-
private Set<CellEditorListener> cellEditorListenerSet = new HashSet<>();
23+
private Set<CellEditorListener> cellEditorListenerSet = new CopyOnWriteArraySet<>();
2124
private final UserDataHolder userDataHolder;
2225

2326
public MultiLineCellRenderer(CsvTableEditorKeyListener keyListener, UserDataHolder userDataHolderParam) {
@@ -123,11 +126,11 @@ public void cancelCellEditing() {
123126
protected void fireStopCellEditing() {
124127
ChangeEvent changeEvent = new ChangeEvent(this);
125128
synchronized (cellEditorListenerSet) {
126-
Iterator<CellEditorListener> it = cellEditorListenerSet.iterator();
127-
while (it.hasNext()) {
128-
it.next().editingStopped(changeEvent);
129-
}
130-
}
129+
Iterator<CellEditorListener> it = cellEditorListenerSet.iterator();
130+
while (it.hasNext()) {
131+
it.next().editingStopped(changeEvent);
132+
}
133+
}
131134
}
132135

133136
protected void fireCancelCellEditing() {

0 commit comments

Comments
 (0)