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