From 39515829548b0ff2097e4562c0d75e8d02074e15 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Johannes=20Dahlstr=C3=B6m?= Date: Tue, 16 Oct 2012 11:13:35 +0300 Subject: [PATCH] Delegate UI.replaceComponent() to content instead of throwing UOE (#9967) * Added a test, also renamed tests/server/component/root to tests/server/component/ui Change-Id: I80d30dd5acb3643cfb3cfc0b972f52ffa4512691 --- server/src/com/vaadin/ui/UI.java | 6 +- .../{root => ui}/CustomUIClassLoader.java | 2 +- .../component/ui/UIAddRemoveComponents.java | 65 +++++++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) rename server/tests/src/com/vaadin/tests/server/component/{root => ui}/CustomUIClassLoader.java (98%) create mode 100644 server/tests/src/com/vaadin/tests/server/component/ui/UIAddRemoveComponents.java diff --git a/server/src/com/vaadin/ui/UI.java b/server/src/com/vaadin/ui/UI.java index 31a7446e96..2878d10fa1 100644 --- a/server/src/com/vaadin/ui/UI.java +++ b/server/src/com/vaadin/ui/UI.java @@ -556,9 +556,13 @@ public abstract class UI extends AbstractComponentContainer implements return this; } + /** + * This implementation replaces a component in the content container ( + * {@link #getContent()}) instead of in the actual UI. + */ @Override public void replaceComponent(Component oldComponent, Component newComponent) { - throw new UnsupportedOperationException(); + getContent().replaceComponent(oldComponent, newComponent); } /** diff --git a/server/tests/src/com/vaadin/tests/server/component/root/CustomUIClassLoader.java b/server/tests/src/com/vaadin/tests/server/component/ui/CustomUIClassLoader.java similarity index 98% rename from server/tests/src/com/vaadin/tests/server/component/root/CustomUIClassLoader.java rename to server/tests/src/com/vaadin/tests/server/component/ui/CustomUIClassLoader.java index 405d3d1931..82b9944371 100644 --- a/server/tests/src/com/vaadin/tests/server/component/root/CustomUIClassLoader.java +++ b/server/tests/src/com/vaadin/tests/server/component/ui/CustomUIClassLoader.java @@ -1,4 +1,4 @@ -package com.vaadin.tests.server.component.root; +package com.vaadin.tests.server.component.ui; import java.util.ArrayList; import java.util.List; diff --git a/server/tests/src/com/vaadin/tests/server/component/ui/UIAddRemoveComponents.java b/server/tests/src/com/vaadin/tests/server/component/ui/UIAddRemoveComponents.java new file mode 100644 index 0000000000..1b07321605 --- /dev/null +++ b/server/tests/src/com/vaadin/tests/server/component/ui/UIAddRemoveComponents.java @@ -0,0 +1,65 @@ +package com.vaadin.tests.server.component.ui; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertSame; + +import org.junit.Test; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.ui.Component; +import com.vaadin.ui.Label; +import com.vaadin.ui.UI; + +public class UIAddRemoveComponents { + + private static class TestUI extends UI { + @Override + protected void init(VaadinRequest request) { + } + } + + @Test + public void addComponent() { + UI ui = new TestUI(); + Component c = new Label("abc"); + + ui.addComponent(c); + + assertSame(c, ui.iterator().next()); + assertSame(c, ui.getContent().iterator().next()); + assertEquals(1, ui.getComponentCount()); + assertEquals(1, ui.getContent().getComponentCount()); + } + + @Test + public void removeComponent() { + UI ui = new TestUI(); + Component c = new Label("abc"); + + ui.addComponent(c); + + ui.removeComponent(c); + + assertFalse(ui.iterator().hasNext()); + assertFalse(ui.getContent().iterator().hasNext()); + assertEquals(0, ui.getComponentCount()); + assertEquals(0, ui.getContent().getComponentCount()); + } + + @Test + public void replaceComponent() { + UI ui = new TestUI(); + Component c = new Label("abc"); + Component d = new Label("def"); + + ui.addComponent(c); + + ui.replaceComponent(c, d); + + assertSame(d, ui.iterator().next()); + assertSame(d, ui.getContent().iterator().next()); + assertEquals(1, ui.getComponentCount()); + assertEquals(1, ui.getContent().getComponentCount()); + } +} -- 2.39.5