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-15 17:11:26 +0200 |
commit | f8e2cd09c683a03f9721d124246391c6f45c8d84 (patch) | |
tree | da8c05a4f986a567b3469569df43aca4abff4f47 /server | |
parent | 9799ed309bf7f996eab48f6dec32ced5c408fb03 (diff) | |
download | vaadin-framework-f8e2cd09c683a03f9721d124246391c6f45c8d84.tar.gz vaadin-framework-f8e2cd09c683a03f9721d124246391c6f45c8d84.zip |
Fix removing extension from a connector that is not its parent (#19569)
Change-Id: I9c40d3d85386437a640879470ab3b0cdfe042a42
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)); + } + +} |