diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2016-02-08 16:42:00 +0200 |
---|---|---|
committer | Teemu Suo-Anttila <teemusa@vaadin.com> | 2016-02-08 16:59:48 +0200 |
commit | f2b31bac2bc521945c8887b8a8c16df2d5845ac1 (patch) | |
tree | 824e9809d8c37f817b1cbecf671baa2a1fdfda07 /server | |
parent | 6d0680b7cd9c79876682e4e8929360e31e8b15b7 (diff) | |
download | vaadin-framework-f2b31bac2bc521945c8887b8a8c16df2d5845ac1.tar.gz vaadin-framework-f2b31bac2bc521945c8887b8a8c16df2d5845ac1.zip |
Fix removing extension from a connector that is not its parent (#19569)
Change-Id: I0201c2dc94cd50d09931d54bb9e18893e6737d9c
Diffstat (limited to 'server')
-rw-r--r-- | server/src/com/vaadin/server/AbstractClientConnector.java | 5 | ||||
-rw-r--r-- | server/tests/src/com/vaadin/tests/server/ExtensionTest.java | 40 |
2 files changed, 45 insertions, 0 deletions
diff --git a/server/src/com/vaadin/server/AbstractClientConnector.java b/server/src/com/vaadin/server/AbstractClientConnector.java index fa2b741ddd..c624663d50 100644 --- a/server/src/com/vaadin/server/AbstractClientConnector.java +++ b/server/src/com/vaadin/server/AbstractClientConnector.java @@ -589,6 +589,11 @@ public abstract class AbstractClientConnector implements ClientConnector, @Override public void removeExtension(Extension extension) { + if (extension.getParent() != this) { + throw new IllegalArgumentException( + "This connector is not the parent for given extension"); + } + extension.setParent(null); extensions.remove(extension); markAsDirty(); diff --git a/server/tests/src/com/vaadin/tests/server/ExtensionTest.java b/server/tests/src/com/vaadin/tests/server/ExtensionTest.java new file mode 100644 index 0000000000..8f8e8dcb59 --- /dev/null +++ b/server/tests/src/com/vaadin/tests/server/ExtensionTest.java @@ -0,0 +1,40 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.server; + +import org.junit.Test; + +import com.vaadin.server.AbstractClientConnector; +import com.vaadin.server.AbstractExtension; +import com.vaadin.ui.Label; +import com.vaadin.ui.TextField; + +public class ExtensionTest { + + public static class DummyExtension extends AbstractExtension { + public DummyExtension(AbstractClientConnector target) { + super(target); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testRemoveExtensionFromWrongConnector() { + Label l = new Label(); + TextField t = new TextField(); + t.removeExtension(new DummyExtension(l)); + } + +} |