avoid concurrentModificationExceptions
authorKatja Luther <k.luther@bgbm.org>
Tue, 13 Sep 2022 08:01:41 +0000 (10:01 +0200)
committerKatja Luther <k.luther@bgbm.org>
Tue, 13 Sep 2022 08:01:41 +0000 (10:01 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmFormElement.java

index 00ffa2f28014439ac84ae1d7208b80f9133dade1..19262cec67f67af7af2bf8a6f60ecf7e4bb97ccc 100644 (file)
@@ -8,6 +8,7 @@
 */\r
 package eu.etaxonomy.taxeditor.ui.element;\r
 \r
+import java.util.ArrayList;\r
 import java.util.ConcurrentModificationException;\r
 import java.util.HashSet;\r
 import java.util.List;\r
@@ -224,9 +225,12 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
     public void firePropertyChangeEvent(CdmPropertyChangeEvent event) {\r
            //TODO: replace propertyChangeListeners with formFactory.getPropertyChangeListeners() and remove member propertyChangeListeners from AbstractCdmFormElement\r
                Assert.isNotNull(propertyChangeListeners, "Property change listeners are not present");\r
-\r
+               List<IPropertyChangeListener> temp = new ArrayList<>();\r
+               for (Object listener :propertyChangeListeners) {\r
+                       temp.add((IPropertyChangeListener)listener);\r
+               }\r
                try{\r
-                       for(Object listener : propertyChangeListeners){\r
+                       for(Object listener : temp){\r
                                ((IPropertyChangeListener)listener).propertyChange(event);\r
                        }\r
                }catch(ConcurrentModificationException e){\r
@@ -235,7 +239,9 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
                        // and here: http://dev.e-taxonomy.eu/trac/ticket/2438\r
                        // Ignoring the CME because nothing bad is happening\r
                        MessagingUtils.warn(getClass(), "ConcurrentModificationException. Can be ignored.");\r
+                       e.printStackTrace();\r
                }\r
+               temp = null;\r
        }\r
 \r
        /**\r