Browse Source

Fixed problem with anonymous classes and with AbstractComponent mapping

tags/7.0.0.alpha2
Artur Signell 12 years ago
parent
commit
c70ece28ea

+ 3
- 4
src/com/vaadin/terminal/gwt/client/WidgetSet.java View File

@@ -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);


+ 10
- 7
src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java View File

@@ -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();
}

/**

+ 8
- 5
src/com/vaadin/terminal/gwt/server/JsonPaintTarget.java View File

@@ -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() {

Loading…
Cancel
Save