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);
}