private Optional resolveMember()

in maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/converter/JavaClassConverterContext.java [300:339]


    private Optional<FullyQualifiedJavadocReference> resolveMember(
            String fullyQualifiedPackageNameClassName,
            String nestedClassName,
            Optional<String> member,
            Optional<String> label) {
        JavaClass javaClass = javaProjectBuilder.getClassByName(fullyQualifiedPackageNameClassName);
        if (!isClassFound(javaClass)) {
            JavaPackage javaPackage = javaProjectBuilder.getPackageByName(fullyQualifiedPackageNameClassName);
            if (javaPackage == null || !nestedClassName.isEmpty()) {
                // is it a nested class?
                int lastIndexOfDot = fullyQualifiedPackageNameClassName.lastIndexOf('.');
                if (lastIndexOfDot > 0) {
                    String newNestedClassName = nestedClassName;
                    if (!newNestedClassName.isEmpty()) {
                        newNestedClassName += '.';
                    }
                    newNestedClassName += fullyQualifiedPackageNameClassName.substring(lastIndexOfDot + 1);
                    return resolveMember(
                            fullyQualifiedPackageNameClassName.substring(0, lastIndexOfDot),
                            newNestedClassName,
                            member,
                            label);
                }
                return Optional.empty();
            } else {
                // reference to java package never has a member
                return Optional.of(
                        new FullyQualifiedJavadocReference(javaPackage.getName(), label, isExternal(javaPackage)));
            }
        } else {
            if (!nestedClassName.isEmpty()) {
                javaClass = javaClass.getNestedClassByName(nestedClassName);
                if (javaClass == null) {
                    return Optional.empty();
                }
            }

            return resolveMember(javaClass, member, label);
        }
    }