summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeif Åstrand <leif@vaadin.com>2012-08-28 16:58:49 +0300
committerLeif Åstrand <leif@vaadin.com>2012-08-28 16:59:09 +0300
commita2488b51bb9f1f8c72d9b97c13ef91ff60422cba (patch)
tree162baa4a21d72c67275ac19cd6fb80a707f478a5
parent0b93b5ada8db19e3144d36d94cc9230e34ff0bd4 (diff)
downloadvaadin-framework-a2488b51bb9f1f8c72d9b97c13ef91ff60422cba.tar.gz
vaadin-framework-a2488b51bb9f1f8c72d9b97c13ef91ff60422cba.zip
Include UnknownComponentConnector in eager ConnectorBundle (#9371)
-rw-r--r--client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/ConnectorBundleLoaderFactory.java3
-rw-r--r--client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorBundle.java5
-rw-r--r--client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorInitVisitor.java11
-rw-r--r--tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.html27
-rw-r--r--tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.java45
5 files changed, 86 insertions, 5 deletions
diff --git a/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/ConnectorBundleLoaderFactory.java b/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/ConnectorBundleLoaderFactory.java
index 752f290a42..6959a549ed 100644
--- a/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/ConnectorBundleLoaderFactory.java
+++ b/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/ConnectorBundleLoaderFactory.java
@@ -42,6 +42,7 @@ import com.vaadin.terminal.gwt.client.metadata.ProxyHandler;
import com.vaadin.terminal.gwt.client.metadata.TypeData;
import com.vaadin.terminal.gwt.client.metadata.TypeDataBundle;
import com.vaadin.terminal.gwt.client.metadata.TypeDataStore;
+import com.vaadin.terminal.gwt.client.ui.UnknownComponentConnector;
import com.vaadin.terminal.gwt.widgetsetutils.metadata.ClientRpcVisitor;
import com.vaadin.terminal.gwt.widgetsetutils.metadata.ConnectorBundle;
import com.vaadin.terminal.gwt.widgetsetutils.metadata.ConnectorInitVisitor;
@@ -604,6 +605,8 @@ public class ConnectorBundleLoaderFactory extends Generator {
// Eager connectors and all RPC interfaces are loaded by default
eagerBundle.processTypes(eagerLogger,
connectorsByLoadStyle.get(LoadStyle.EAGER));
+ eagerBundle.processType(eagerLogger, typeOracle
+ .findType(UnknownComponentConnector.class.getCanonicalName()));
eagerBundle.processSubTypes(eagerLogger,
typeOracle.getType(ClientRpc.class.getName()));
eagerBundle.processSubTypes(eagerLogger,
diff --git a/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorBundle.java b/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorBundle.java
index 1db551ed9a..a3659b43ed 100644
--- a/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorBundle.java
+++ b/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorBundle.java
@@ -34,6 +34,7 @@ import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.ComponentConnector;
import com.vaadin.terminal.gwt.client.ServerConnector;
import com.vaadin.terminal.gwt.client.communication.JSONSerializer;
+import com.vaadin.terminal.gwt.client.ui.UnknownComponentConnector;
public class ConnectorBundle {
private static final String FAIL_IF_NOT_SERIALIZABLE = "vFailIfNotSerializable";
@@ -431,7 +432,9 @@ public class ConnectorBundle {
}
private static boolean isConnected(JClassType type) {
- return type.isAnnotationPresent(Connect.class);
+ return type.isAnnotationPresent(Connect.class)
+ || type.getQualifiedSourceName().equals(
+ UnknownComponentConnector.class.getCanonicalName());
}
public static boolean isConnectedComponentConnector(JClassType type) {
diff --git a/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorInitVisitor.java b/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorInitVisitor.java
index 09cdaddc31..fec337afd9 100644
--- a/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorInitVisitor.java
+++ b/client-compiler/src/com/vaadin/terminal/gwt/widgetsetutils/metadata/ConnectorInitVisitor.java
@@ -14,11 +14,14 @@ public class ConnectorInitVisitor extends TypeVisitor {
@Override
public void visitConnector(TreeLogger logger, JClassType type,
ConnectorBundle bundle) {
- logger.log(Type.INFO, type.getName() + " will be in the "
- + bundle.getName().replaceAll("^_*", "") + " bundle");
Connect connectAnnotation = type.getAnnotation(Connect.class);
- bundle.setIdentifier(type, connectAnnotation.value().getCanonicalName());
- bundle.setNeedsGwtConstructor(type);
+ if (connectAnnotation != null) {
+ logger.log(Type.INFO, type.getName() + " will be in the "
+ + bundle.getName().replaceAll("^_*", "") + " bundle");
+ bundle.setIdentifier(type, connectAnnotation.value()
+ .getCanonicalName());
+ bundle.setNeedsGwtConstructor(type);
+ }
}
}
diff --git a/tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.html b/tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.html
new file mode 100644
index 0000000000..20f0e8e71e
--- /dev/null
+++ b/tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.html
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>New Test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">New Test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.UnknownComponentConnectorTest?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>vaadin=runcomvaadintestscomponentsUnknownComponentConnectorTest::/VVerticalLayout[0]/VVerticalLayout[0]/VUnknownComponent[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]</td>
+ <td>Widgetset does not contain implementation for com.vaadin.tests.components.UnknownComponentConnectorTest.ComponentWithoutConnector. Check its component connector's @Connect mapping, widgetsets GWT module description file and re-compile your widgetset. In case you have downloaded a vaadin add-on package, you might want to refer to add-on instructions.</td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.java b/tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.java
new file mode 100644
index 0000000000..a64216aed1
--- /dev/null
+++ b/tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2011 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.components;
+
+import com.vaadin.terminal.WrappedRequest;
+import com.vaadin.ui.AbstractComponent;
+
+public class UnknownComponentConnectorTest extends AbstractTestUI {
+
+ public static class ComponentWithoutConnector extends AbstractComponent {
+
+ }
+
+ @Override
+ protected void setup(WrappedRequest request) {
+ addComponent(new ComponentWithoutConnector());
+ }
+
+ @Override
+ protected String getTestDescription() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}