aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/terminal/AbstractExtension.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/vaadin/terminal/AbstractExtension.java')
-rw-r--r--src/com/vaadin/terminal/AbstractExtension.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/com/vaadin/terminal/AbstractExtension.java b/src/com/vaadin/terminal/AbstractExtension.java
new file mode 100644
index 0000000000..d01f7544c5
--- /dev/null
+++ b/src/com/vaadin/terminal/AbstractExtension.java
@@ -0,0 +1,25 @@
+package com.vaadin.terminal;
+
+import com.vaadin.terminal.gwt.server.ClientConnector;
+
+public abstract class AbstractExtension extends AbstractClientConnector implements
+ Extension {
+
+ protected Class<? extends ClientConnector> getAcceptedParentType() {
+ return ClientConnector.class;
+ }
+
+ @Override
+ public void setParent(ClientConnector parent) {
+ Class<? extends ClientConnector> acceptedParentType = getAcceptedParentType();
+ if (parent == null || acceptedParentType.isInstance(parent)) {
+ super.setParent(parent);
+ } else {
+ throw new IllegalArgumentException(getClass().getName()
+ + " can only be attached to parents of type "
+ + acceptedParentType.getName() + " but attach to "
+ + parent.getClass().getName() + " was attempted.");
+ }
+ }
+
+}