@Override public AnnotationValueInfo visitArray(List<? extends AnnotationValue> list, String p) { List<Object> valueInfoList = WayIterables.from(list) .transform(this) .transform(AnnotationValueInfoValue.get()) .toImmutableList(); if (kind == null) { TypeMirror returnType = element.getReturnType(); kind = returnType.accept(new ArrayVisitor(), AnnotationValueKind.ARRAY_TYPE); } return AnnotationValueInfo.builder() .name(p) .kind(kind.toArray()) .value(valueInfoList) .build(); }
@Override public AnnotationValueInfo visitType(TypeMirror t, String p) { kind = AnnotationValueKind.TYPE; SimpleTypeInfo typeInfo = SimpleTypeInfoTypeMirror.wrap(processingEnv, t); return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(typeInfo) .build(); }
@Override public AnnotationValueInfo visitInt(int i, String p) { kind = AnnotationValueKind.PRIMITIVE_INT; return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(i) .build(); }
@Override public AnnotationValueInfo visitEnumConstant(VariableElement element, String p) { EnumConstantInfo value = EnumConstantInfoVariableElement.wrap(processingEnv, element); kind = AnnotationValueKind.ENUM; return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(value) .build(); }
@Override public AnnotationValueInfo visitAnnotation(AnnotationMirror type, String p) { kind = AnnotationValueKind.ANNOTATION; AnnotationMirrorWrapper wrapper = AnnotationMirrorWrapper.wrapperOf(processingEnv, type); AnnotationInfo value = wrapper.toAnnotationInfo(); return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(value) .build(); }
@Override public AnnotationValueInfo visitString(String s, String p) { kind = AnnotationValueKind.STRING; return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(s) .build(); }
@Override public AnnotationValueInfo visitLong(long i, String p) { kind = AnnotationValueKind.PRIMITIVE_LONG; return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(i) .build(); }
@Override public AnnotationValueInfo visitChar(char c, String p) { kind = AnnotationValueKind.PRIMITIVE_CHAR; return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(c) .build(); }
@Override public AnnotationValueInfo visitBoolean(boolean b, String p) { kind = AnnotationValueKind.PRIMITIVE_BOOLEAN; return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(b) .build(); }
@Override protected AnnotationValueInfo defaultAction(Object o, String p) { kind = AnnotationValueKind.UNKNOWN; return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(o) .build(); }
@Override public AnnotationValueInfo build() { return AnnotationValueInfo.builder() .name(name) .kind(kind) .value(value) .build(); }
@Override public AnnotationValueInfo visitDouble(double d, String p) { kind = AnnotationValueKind.PRIMITIVE_DOUBLE; return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(d) .build(); }
@Override public AnnotationValueInfo visitFloat(float f, String p) { kind = AnnotationValueKind.PRIMITIVE_FLOAT; return AnnotationValueInfo.builder() .name(p) .kind(kind) .value(f) .build(); }