docs: display types information for pass through Map config item

This commit is contained in:
Manyanda Chitimbo
2019-11-01 19:05:53 +01:00
committed by Guillaume Smet
parent c84d84364e
commit af0b182c2b
2 changed files with 23 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package io.quarkus.annotation.processor.generate_doc;
import static io.quarkus.annotation.processor.generate_doc.DocGeneratorUtil.getJavaDocSiteLink;
import static io.quarkus.annotation.processor.generate_doc.DocGeneratorUtil.getKnownGenericType;
import static io.quarkus.annotation.processor.generate_doc.DocGeneratorUtil.hyphenate;
import static io.quarkus.annotation.processor.generate_doc.DocGeneratorUtil.stringifyType;
import java.util.ArrayList;
import java.util.List;
@@ -187,6 +188,7 @@ class ConfigDoItemFinder {
configDocItems.addAll(groupConfigItems);
continue;
} else {
type = "`" + stringifyType(declaredType) + "`";
configDocKey.setPassThroughMap(true);
configDocKey.setWithinAMap(true);
}

View File

@@ -12,6 +12,7 @@ import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
import io.quarkus.annotation.processor.Constants;
@@ -359,4 +360,24 @@ public class DocGeneratorUtil {
return false;
}
static String stringifyType(TypeMirror typeMirror) {
List<? extends TypeMirror> typeArguments = ((DeclaredType) typeMirror).getTypeArguments();
String simpleName = typeSimpleName(typeMirror);
if (typeArguments.isEmpty()) {
return simpleName;
} else if (typeArguments.size() == 1) {
return String.format("%s<%s>", simpleName, stringifyType(typeArguments.get(0)));
} else if (typeArguments.size() == 2) {
return String.format("%s<%s,%s>", simpleName, stringifyType(typeArguments.get(0)),
stringifyType(typeArguments.get(1)));
}
return "unknown"; // we should not reach here
}
private static String typeSimpleName(TypeMirror typeMirror) {
String type = ((DeclaredType) typeMirror).asElement().toString();
return type.substring(1 + type.lastIndexOf(Constants.DOT));
}
}