return super.convert(accessor);
}
@Override
public String convert(TypeMirror typeMirror) throws TemplateModelException {
DecoratedTypeMirror decorated = (DecoratedTypeMirror) TypeMirrorDecorator.decorate(typeMirror);
if (decorated.isArray()) {
DecoratedTypeMirror componentType = (DecoratedTypeMirror) ((ArrayType) decorated).getComponentType();
if (componentType.isPrimitive()) {
switch (((PrimitiveType)componentType).getKind()) {
case BOOLEAN:
return "com.google.gwt.core.client.JsArrayBoolean";
case BYTE:
return "java.lang.String";//byte arrays serialized as base64-encoded strings.
case CHAR:
case INT:
case SHORT:
return "com.google.gwt.core.client.JsArrayInteger";
case DOUBLE:
case FLOAT:
case LONG:
return "com.google.gwt.core.client.JsArrayNumber";
default:
return "com.google.gwt.core.client.JsArray";
}
}
else if (componentType.isInstanceOf(String.class.getName())) {
return "com.google.gwt.core.client.JsArrayString";
}
else {
return "com.google.gwt.core.client.JsArray<" + convert(componentType) + ">";
}
}
else if (decorated.isCollection()) {
Collection<TypeMirror> typeArgs = ((DecoratedDeclaredType) decorated).getActualTypeArguments();
if (typeArgs != null && typeArgs.size() == 1) {
DecoratedTypeMirror componentType = (DecoratedTypeMirror) typeArgs.iterator().next();
if (componentType.isInstanceOf(String.class.getName())) {
return "com.google.gwt.core.client.JsArrayString";
}
else if (componentType.isInstanceOf(Boolean.class.getName())) {
return "com.google.gwt.core.client.JsArrayBoolean";
}
else if (componentType.isInstanceOf(Integer.class.getName())
|| componentType.isInstanceOf(Character.class.getName())
|| componentType.isInstanceOf(Short.class.getName())) {
return "com.google.gwt.core.client.JsArrayInteger";
}
else if (componentType.isInstanceOf(Double.class.getName())
|| componentType.isInstanceOf(Float.class.getName())
|| componentType.isInstanceOf(Long.class.getName())) {
return "com.google.gwt.core.client.JsArrayNumber";
}
else {
return "com.google.gwt.core.client.JsArray<" + convert(componentType) + ">";
}