private JsonType newJsonType(TypeMirror typeMirror) { if (isJsonPrimitive(typeMirror)) { return new JsonPrimitive(typeMirror.toString()); } else if (typeMirror.getKind() == TypeKind.DECLARED) { // some sort of object... walk it DeclaredType type = (DeclaredType) typeMirror; return newJsonType(type, type.getTypeArguments(), new HashSet<DeclaredType>()); } else if (typeMirror.getKind() == TypeKind.VOID) { return null; } else if (typeMirror.getKind() == TypeKind.ARRAY) { return newJsonType(((ArrayType) typeMirror).getComponentType()); } else { throw new UnsupportedOperationException(typeMirror.toString()); } }
private boolean isJsonPrimitive(TypeMirror typeMirror) { return (typeMirror.getKind().isPrimitive() || JsonPrimitive.isPrimitive(typeMirror.toString())); }