fix #7665 Use iterator to avoid ConcurrentModificationException
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 22 Aug 2018 10:20:49 +0000 (12:20 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 22 Aug 2018 10:25:08 +0000 (12:25 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmFormElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractFormSection.java

index 3ef30b9a860a161802caf6bb58af523f97ad300e..ec1f11e29f3d2a1279b8b594120e171c52807f8f 100644 (file)
@@ -5,6 +5,7 @@ package eu.etaxonomy.taxeditor.ui.element;
 
 import java.util.ConcurrentModificationException;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -144,7 +145,8 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
         */
        @Override
     public void removeElements(){
-               for(ICdmFormElement childElement : getElements()){
+        for (Iterator<ICdmFormElement> iterator = getElements().iterator();iterator.hasNext();) {
+            ICdmFormElement childElement = iterator.next();
                        // recursion
                        childElement.removeElements();
 
index 90b5e2d486953ea17464b59fcad4a6600b4dcf8a..b816fe223241debc93b17d10e1297433b5f40201 100644 (file)
@@ -5,6 +5,7 @@ package eu.etaxonomy.taxeditor.ui.element;
 
 import java.util.ConcurrentModificationException;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -419,7 +420,8 @@ public abstract class AbstractFormSection<ENTITY> extends Section implements ISe
         */
        @Override
     public void removeElements() {
-               for (ICdmFormElement childElement : getElements()) {
+               for (Iterator<ICdmFormElement> formElementIterator = getElements().iterator();formElementIterator.hasNext();) {
+                   ICdmFormElement childElement = formElementIterator.next();
                        // recursion
                        childElement.removeElements();
 
@@ -436,7 +438,8 @@ public abstract class AbstractFormSection<ENTITY> extends Section implements ISe
                        formFactory.removePropertyChangeListener(childElement);
 
                        // dispose of the controls
-                       for (Control control : childElement.getControls()) {
+                       for (Iterator<Control> controlIterator = childElement.getControls().iterator();controlIterator.hasNext();) {
+                           Control control = controlIterator.next();
                                // we added the layoutComposite of the parental element as the
                                // layout composite to this formElement
                                // but we do not want to destroy it.