Exception "ConcurrentModificationException" a causa de un rich:inplaceSelect

Buenos dias compañeros , Solicito de su ayuda ya que no he podido desplazar un error que tengo en una de mis listas les cuento

Tengo dos rich:inplaceSelect dentro de un rich:dataTable que son combos en cascada al seleccionar el combo de calidad se llena el combo de colores correspondientes a la calidad seleccionada les muestro mi codigo

 
<rich:dataTable value="#{tabOrderEntry.itemLineList}" id="itemLineList" width="900"  rowClasses="rowlbl1,rowlbl2"  var="list" rows="10"      binding="#{tabOrderEntry.itemLineListBin}">

<rich:column styleClass="select" rendered="#{!tabOrderEntry.showColumFLoor}">
                        <rich:inplaceSelect styleClass="select" id="cmbQualityOrderItem" binding="#{tabOrderEntry.cmbInputSelect}"
                        value="#{list.idQuality}" defaultLabel="#{list.nameQuality}">
                        <f:selectItems value="#{list.qualityList}"/>
                        <a4j:support event="onviewactivated" action="#tabOrderEntry.loadColorByQuality}"                                                                                                                                                                reRender="cmbColorsOrderItem,lblPriceItem,lblTotalLinea" ajaxSingle="true" id="supportChangeColor"/>   
                        </rich:inplaceSelect>
                </rich:column>
               
                <rich:column styleClass="select">
                        <rich:inplaceSelect styleClass="select" id="cmbColorsOrderItem"
                                                                                            value="#{list.idColor}" defaultLabel="#{list.nameColor}">
                                                                                        <f:selectItems value="#{list.colorList}"/>
                        </rich:inplaceSelect>
                </rich:column>

###################################################Metodo que recupera el list.idQuality###############################

public void loadColorByQuality(){
                SelectedBundleOrderEntry bundle = new SelectedBundleOrderEntry ();
                bundle = getListItemOrderBundle().get(getTableItemsOrder().getRowIndex());
               
                List<SelectItem> listColor = new ArrayList<SelectItem> ();       
                SelectItem item = null;

                 // obtiene el idQuality que seleccionan en el inplaceSelect con el binding (bundle.getIdQuality()) y va a buscar los colores          //correspondientes a esta calidad
                 for(InvColor color : colorService.getColorByIdQuality(bundle.getIdQuality())){
                         item = new SelectItem (color.getIdColor(),color.getColorName());
                         listColor.add(item);
                 }
        //Posterirmente conociendo los colores los settea en el combo posterior
            bundle.setListColorOrderItem(listColor);
        }

Espero me sepa explicar el punto es que cuando selecciono una opcion de <rich:inplaceSelect styleClass="select" id="cmbQualityOrderItem"  , en la primera ocacion o despues sea cual sea es decir no siempre me pasa la exception es oleatoria por decirlo de alguna manera me arroga esta Exception "ConcurrentModificationException" siendo que ya entrado en debug y si entra al debug y el codigo no me marca el error si no que lo marca antes de entrar al debug pero a final de cuentas si entra al debug ... espero me entiendan , esto no es todo solo me manda el error cuando coloco el focus con el tabulador, siendo que si lo coloco con el raton no me marca error !!! la verdad nose que estoy haciendo mal ... porsteriormente elaborare un video para que vean la funcionalidad que les indico .. espero sus comentarios ya que me haran de gran utilidad ,,, se que el error sale cuando estas utilizando un for:ich en un arrayList y estas modificando un elemento de la misma lista que estas iterando .. pero no entiendo en caso del binding porque lo hace si realmente si entra al debug aunque mande primero la exception ... Gracias por sus comentarios

http://www.youtube.com/watch?v=nGRZAwGRAMc

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Trabaja un poco más en el

Trabaja un poco más en el formato de tu pregunta, cuesta mucho trabajo entender que escribiste. Te puse <code> y </code> en algunas partes.

En términos generales ConcurrentModificationException ocurre cuando agregas o quitas elementos a una lista que estás iterando.

Ejemplo

import java.util.*;
class Ejemplo {
   public static void main( String...args ) {
       List<Integer> lista = new ArrayList<Integer>( Arrays.asList(1,2,3,4,5));
       for( Integer i  : lista ) {
           lista.remove( 0 ); // intentando quitar el primer elemento lanza ConcurrentModificationException
       }
   }
}

Habrá algunas implementaciones de listas que no lo lancen. Revisa si va por ahí tu problema.

Imagen de ezamudio

modificación

Tu lista listColor no puede ser la que arroja la excepción, porque es una variable local, de modo que aunque 100 hilos invocaran a ese método de manera simultánea, cada uno creará su propia lista.

Yo sospecho del código dentro del colorService.getColorIdByQuality, que aparentemente regresa una lista de InvColor y tal vez tiene una lista maestra que se modifica de alguna forma cada vez que se invoca el método; si dos usuarios invocan tu método entonces el servicio (que es una sola instancia) sí puede modificar su lista, si la tiene como propiedad, y se arroja esa excepción.

Imagen de rj@vasso

Ok

Si listo OscarRyz !!! ni yo mismo me entiendo por eso realice un video para explicarme mejor , entiendo el porque es la exception pero la diferencia el componente se encarga de iterar mi lista ya que no estoy eliminando ningun elemento simplemente lo quiero modificar !!! te dejo el link gracias por el comentario

http://www.youtube.com/watch?v=nGRZAwGRAMc

Imagen de rj@vasso

Muy bien

Gracias ezamudio no lo habia pensado pero lo checo y te cuento .. .mil gracias nose si has visto mi link del problema pero te lo paso !!! Gracias nuevamente
http://www.youtube.com/watch?v=nGRZAwGRAMc

Imagen de ezamudio

ConcurrentModificationException...NOT

Pues no vi ninguna ConcurrentModificationException en tu video. Vi algo de un ID duplicado y luego algo de que una vista no es hija de no sé qué cosa.