ProjectInfo getProjectInfo()

in maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java [297:337]


    ProjectInfo getProjectInfo() {
        Map<String, PackageInfo> allPackages = new TreeMap<>();
        Map<String, ClassInfo> allClasses = new TreeMap<>();

        for (PackageType pkg : packageManager.getPackageTypes()) {
            String pkgName = pkg.getName();
            String pkgDir = pkgName.replace('.', '/');
            String rootRef = pkgName.replaceAll("[^\\.]+(\\.|$)", "../");

            // special case for the default package
            // javadoc doesn't deal with it, but it's easy for us
            if (pkgName.length() == 0) {
                pkgName = "(default package)";
                pkgDir = ".";
                rootRef = "./";
            }

            Map<String, ClassInfo> pkgClasses = new TreeMap<>();
            for (ClassType clazz : pkg.getClassTypes()) {
                String className = clazz.getName();

                ClassInfo classInfo = new ClassInfo(className, pkgDir);

                classInfo.setFilename(clazz.getFilename());

                pkgClasses.put(className, classInfo);

                // Adding package name to key in order to ensure classes with identical names in different packages are
                // all included.
                allClasses.put(className + "#" + pkgName, classInfo);
            }

            PackageInfo pkgInfo = new PackageInfo(pkgName, pkgDir);
            pkgInfo.setClasses(pkgClasses);
            pkgInfo.setRootRef(rootRef);

            allPackages.put(pkgName, pkgInfo);
        }

        return new ProjectInfo(allPackages, allClasses);
    }