in dataenum-processor/src/main/java/com/spotify/dataenum/processor/parser/ValueParser.java [48:93]
static Value parse(Element element, ProcessingContext ctx) {
Messager messager = ctx.env.getMessager();
ExecutableElement methodElement = (ExecutableElement) element;
if (methodElement.getTypeParameters().size() != 0) {
messager.printMessage(
Diagnostic.Kind.ERROR,
String.format(
"Type parameters must be specified on the top-level interface, found: %s", element),
element);
return null;
}
if (methodElement.isVarArgs()) {
messager.printMessage(
Diagnostic.Kind.ERROR,
String.format("Vararg parameters not permitted: %s", element),
element);
return null;
}
List<Parameter> parameters = new ArrayList<>();
for (VariableElement parameterElement : methodElement.getParameters()) {
String parameterName = parameterElement.getSimpleName().toString();
TypeName parameterType = TypeName.get(parameterElement.asType());
boolean nullable = isAnnotationPresent(parameterElement, ValueParser::isNullableAnnotation);
boolean redacted = isAnnotationPresent(parameterElement, ValueParser::isRedactedAnnotation);
Element parameterTypeElement = ctx.env.getTypeUtils().asElement(parameterElement.asType());
boolean isEnum =
parameterTypeElement != null && parameterTypeElement.getKind() == ElementKind.ENUM;
parameters.add(new Parameter(parameterName, parameterType, nullable, redacted, isEnum));
}
String javadoc = ctx.env.getElementUtils().getDocComment(element);
if (javadoc != null) {
javadoc = javadoc.trim();
}
String valueSimpleName = methodElement.getSimpleName().toString();
return new Value(
valueSimpleName, javadoc, parameters, parseMethodAnnotations(methodElement, messager));
}