aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-04-04 18:01:16 +0300
committerLeif Åstrand <leif@vaadin.com>2012-04-04 18:18:42 +0300
commitc70ece28ea44c9e45b6ed8eff0c9c2fe8e0a797b (patch)
treeb32780dfc246279f917d8d40136f2768c88e502e /src
parent87e5022ca881154f7e4cba9b2c014b344646fa8f (diff)
downloadvaadin-framework-c70ece28ea44c9e45b6ed8eff0c9c2fe8e0a797b.tar.gz
vaadin-framework-c70ece28ea44c9e45b6ed8eff0c9c2fe8e0a797b.zip
Fixed problem with anonymous classes and with AbstractComponent mapping
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/terminal/gwt/client/WidgetSet.java7
-rw-r--r--src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java17
-rw-r--r--src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java13
3 files changed, 21 insertions, 16 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/WidgetSet.java b/src/com/vaadin/terminal/gwt/client/WidgetSet.java
index 5aa4b24764..e47837296d 100644
--- a/src/com/vaadin/terminal/gwt/client/WidgetSet.java
+++ b/src/com/vaadin/terminal/gwt/client/WidgetSet.java
@@ -44,8 +44,7 @@ public class WidgetSet {
conf, tag);
if (classType == null || classType == UnknownComponentConnector.class) {
- String serverSideName = conf
- .getUnknownServerClassNameByTag(tag);
+ String serverSideName = conf.getUnknownServerClassNameByTag(tag);
UnknownComponentConnector c = GWT
.create(UnknownComponentConnector.class);
c.setServerSideClassName(serverSideName);
@@ -91,9 +90,9 @@ public class WidgetSet {
Class<? extends ComponentConnector> connectorClass = null;
Integer t = tag;
do {
+ String serverSideClassName = conf.getServerSideClassNameForTag(t);
connectorClass = widgetMap
- .getConnectorClassForServerSideClassName(conf
- .getServerSideClassNameForTag(t));
+ .getConnectorClassForServerSideClassName(serverSideClassName);
t = conf.getParentTag(t);
} while (connectorClass == UnknownComponentConnector.class && t != null);
diff --git a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
index 727680bba2..1abdcb288f 100644
--- a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
+++ b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
@@ -1071,6 +1071,10 @@ public abstract class AbstractCommunicationManager implements Serializable {
if (typeMappingsOpen) {
// send the whole type inheritance map if any new mappings
for (Class<? extends ClientConnector> class1 : usedClientConnectors) {
+ if (!ClientConnector.class.isAssignableFrom(class1
+ .getSuperclass())) {
+ continue;
+ }
if (!typeInheritanceMapOpen) {
typeInheritanceMapOpen = true;
outWriter.print(", \"typeInheritanceMap\" : { ");
@@ -1080,8 +1084,6 @@ public abstract class AbstractCommunicationManager implements Serializable {
outWriter.print("\"");
outWriter.print(getTagForType(class1));
outWriter.print("\" : ");
- // note that if the superclass is not in typeMappings, a "dummy"
- // tag is used
outWriter
.print(getTagForType((Class<? extends ClientConnector>) class1
.getSuperclass()));
@@ -2026,12 +2028,13 @@ public abstract class AbstractCommunicationManager implements Serializable {
private BootstrapHandler bootstrapHandler;
String getTagForType(Class<? extends ClientConnector> class1) {
- Integer object = typeToKey.get(class1);
- if (object == null) {
- object = nextTypeKey++;
- typeToKey.put(class1, object);
+ Integer id = typeToKey.get(class1);
+ if (id == null) {
+ id = nextTypeKey++;
+ typeToKey.put(class1, id);
+ logger.log(Level.FINE, "Mapping " + class1.getName() + " to " + id);
}
- return object.toString();
+ return id.toString();
}
/**
diff --git a/src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java b/src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java
index 1b79f6e5b0..78fc4d5fba 100644
--- a/src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java
+++ b/src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java
@@ -984,17 +984,20 @@ public class JsonPaintTarget implements PaintTarget {
throw new IllegalArgumentException(
"Tags are only available for ClientConnectors");
}
- Class<?> clazz = paintable.getClass();
+ Class<? extends Paintable> paintableClass = paintable.getClass();
+ while (paintableClass.isAnonymousClass()) {
+ paintableClass = (Class<? extends Paintable>) paintableClass
+ .getSuperclass();
+ }
+ Class<?> clazz = paintableClass;
while (!usedClientConnectors.contains(clazz)
&& clazz.getSuperclass() != null
- && ClientConnector.class
- .isAssignableFrom(clazz.getSuperclass())) {
+ && ClientConnector.class.isAssignableFrom(clazz)) {
usedClientConnectors.add((Class<? extends ClientConnector>) clazz);
clazz = clazz.getSuperclass();
}
return manager
- .getTagForType((Class<? extends ClientConnector>) paintable
- .getClass());
+ .getTagForType((Class<? extends ClientConnector>) paintableClass);
}
Collection<Class<? extends ClientConnector>> getUsedClientConnectors() {