From a2488b51bb9f1f8c72d9b97c13ef91ff60422cba Mon Sep 17 00:00:00 2001 From: =?utf8?q?Leif=20=C3=85strand?= Date: Tue, 28 Aug 2012 16:58:49 +0300 Subject: [PATCH] Include UnknownComponentConnector in eager ConnectorBundle (#9371) --- .../ConnectorBundleLoaderFactory.java | 3 ++ .../metadata/ConnectorBundle.java | 5 ++- .../metadata/ConnectorInitVisitor.java | 11 +++-- .../UnknownComponentConnectorTest.html | 27 +++++++++++ .../UnknownComponentConnectorTest.java | 45 +++++++++++++++++++ 5 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.html create mode 100644 tests/testbench/com/vaadin/tests/components/UnknownComponentConnectorTest.java 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 @@ + + + + + + +New Test + + + + + + + + + + + + + + + + + +
New Test
open/run/com.vaadin.tests.components.UnknownComponentConnectorTest?restartApplication
assertTextvaadin=runcomvaadintestscomponentsUnknownComponentConnectorTest::/VVerticalLayout[0]/VVerticalLayout[0]/VUnknownComponent[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]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.
+ + 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; + } + +} -- 2.39.5