return super.convert(accessor);
}
@Override
public String convert(TypeMirror typeMirror) throws TemplateModelException {
DecoratedTypeMirror decorated = (DecoratedTypeMirror) TypeMirrorDecorator.decorate(typeMirror);
if (decorated.isPrimitive()) {
PrimitiveType.Kind kind = ((PrimitiveType) decorated).getKind();
switch (kind) {
case BOOLEAN:
return "int";
case BYTE:
return "unsigned char";
case INT:
return "int";
case SHORT:
return "short";
case FLOAT:
return "float";
case DOUBLE:
return "double";
case LONG:
return "long long";
case CHAR:
return "unsigned short";
default:
return "xmlChar";
}
}
else if (decorated.isCollection()) {
if (decorated instanceof DeclaredType) {
Collection<TypeMirror> typeArgs = ((DeclaredType) typeMirror).getActualTypeArguments();
if (typeArgs.size() == 1) {
TypeMirror typeArg = typeArgs.iterator().next();
if (typeArg instanceof WildcardType) {
WildcardType wildcardType = (WildcardType) typeArg;
if (wildcardType.getUpperBounds() != null && !wildcardType.getUpperBounds().isEmpty()) {
typeArg = wildcardType.getUpperBounds().iterator().next();
}
}
return convert(typeArg);
}
}
return "xmlNode";
}
else if (decorated.isArray()) {
TypeMirror componentType = ((ArrayType) decorated).getComponentType();
if ((componentType instanceof PrimitiveType) && (((PrimitiveType) componentType).getKind() == PrimitiveType.Kind.BYTE)) {
return "unsigned char";
}