in tools/docgen/src/main/java/com/google/cloud/verticals/foundations/dataharmonization/doclet/FunctionScanner.java [201:245]
private void processFunctionDocArguments(
DocCommentTree docTree, FunctionDoc.Builder functionBuilder, ExecutableElement e) {
Map<String, String> argNameToDoc =
docTree.getBlockTags().stream()
.filter(ParamTree.class::isInstance)
.map(ParamTree.class::cast)
.collect(
Collectors.toMap(
pt -> docToString(ImmutableList.of(pt.getName())),
pt -> docToString(pt.getDescription())));
List<? extends VariableElement> parameters = e.getParameters();
for (int i = 0; i < parameters.size(); i++) {
VariableElement parameter = parameters.get(i);
String name = parameter.getSimpleName().toString();
Element elem = types.asElement(parameter.asType());
if (parameter.asType().getKind() == TypeKind.ARRAY) {
elem = types.asElement(((ArrayType) parameter.asType()).getComponentType());
}
String type;
if (elem == null) {
logger.atSevere().log("No type for %s of %s", parameter, e);
type = "???";
} else {
type = elem.getSimpleName().toString();
}
if (type.equals("RuntimeContext")) {
continue;
}
if (i == parameters.size() - 1 && e.isVarArgs()) {
type += "...";
}
ArgumentDoc arg =
ArgumentDoc.builder()
.setName(name)
.setType(type)
.setBody(argNameToDoc.getOrDefault(name, ""))
.build();
functionBuilder.addArgument(arg);
}
}