in maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/converter/JavaClassConverterContext.java [349:394]
private Optional<FullyQualifiedJavadocReference> resolveMember(
JavaClass javaClass, Optional<String> member, Optional<String> label) {
final Optional<MemberType> memberType;
Optional<String> resolvedMember = member;
if (member.isPresent()) {
// member is either field...
if (javaClass.getFieldByName(member.get()) == null) {
// ...is method...
List<JavaType> parameterTypes = getParameterTypes(member.get());
String methodName = getMethodName(member.get());
if (javaClass.getMethodBySignature(methodName, parameterTypes) == null) {
// ...or is constructor
if ((!methodName.equals(javaClass.getSimpleName()))
|| (javaClass.getConstructor(parameterTypes) == null)) {
return Optional.empty();
} else {
memberType = Optional.of(MemberType.CONSTRUCTOR);
}
} else {
memberType = Optional.of(MemberType.METHOD);
}
// reconstruct member with fully qualified names but leaving out the argument names
StringBuilder memberBuilder = new StringBuilder(methodName);
memberBuilder.append("(");
memberBuilder.append(parameterTypes.stream()
.map(JavaType::getFullyQualifiedName)
.collect(Collectors.joining(",")));
memberBuilder.append(")");
resolvedMember = Optional.of(memberBuilder.toString());
} else {
memberType = Optional.of(MemberType.FIELD);
}
} else {
memberType = Optional.empty();
}
String className = javaClass
.getCanonicalName()
.substring(javaClass.getPackageName().length() + 1);
return Optional.of(new FullyQualifiedJavadocReference(
javaClass.getPackageName(),
Optional.of(className),
resolvedMember,
memberType,
label,
isExternal(javaClass)));
}