private static String getReferenceSignature()

in log4j-docgen/src/main/java/org/apache/logging/log4j/docgen/processor/AbstractAsciiDocTreeVisitor.java [242:281]


    private static String getReferenceSignature(final ReferenceTree referenceTree, final AsciiDocData data) {

        // If it is of type `{@link #foo}`
        final String referenceSignature = referenceTree.getSignature();
        if (referenceSignature.startsWith("#")) {
            return data.qualifiedClassName + referenceSignature;
        }

        // Determine class and method parts of the reference signature
        final int methodSplitterIndex = referenceSignature.indexOf('#');
        final String classSignature;
        final String methodSignature;
        if (methodSplitterIndex > 0) {
            classSignature = referenceSignature.substring(0, methodSplitterIndex);
            methodSignature = referenceSignature.substring(methodSplitterIndex).replaceAll(" +", "");
        } else {
            classSignature = referenceSignature;
            methodSignature = "";
        }

        // If it is an imported class
        @Nullable final String importedClassFqcn = data.imports.get(classSignature);
        if (importedClassFqcn != null) {
            return importedClassFqcn + methodSignature;
        }

        // If it is a `java.lang` class
        try {
            final String qualifiedClassName = "java.lang." + classSignature;
            Class.forName(qualifiedClassName);
            return qualifiedClassName + methodSignature;
        } catch (final ClassNotFoundException ignored) {
            // Do nothing
        }

        // Otherwise it is a package-local class
        final String packageName = data.qualifiedClassName.substring(0, data.qualifiedClassName.lastIndexOf('.'));
        final boolean alreadyQualified = classSignature.startsWith(packageName);
        return alreadyQualified ? referenceSignature : packageName + '.' + classSignature + methodSignature;
    }