package com.vaadin.tests.components.panel; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; import com.vaadin.ui.Notification; import com.vaadin.ui.Panel; import com.vaadin.ui.VerticalLayout; public class PanelConcurrentModificationException extends TestBase { private final VerticalLayout panelLayout = new VerticalLayout(); private final Panel panel = new Panel(panelLayout); @Override protected void setup() { panelLayout.setMargin(true); addComponent(new Button("Click here for exception", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { panelLayout.addComponent(new Label("Label")); } })); addComponent( new Button("Or click here first", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { Notification.show( "It is now safe to click the other button"); } })); addComponent(panel); } @Override protected String getDescription() { return "Modifying Panel content causes Internal Error (ConcurrentModificationException)"; } @Override protected Integer getTicketNumber() { // TODO Auto-generated method stub return null; } }