public PackagePathCache( ImmutableSet<IjFolder> startingFolders, JavaPackageFinder javaPackageFinder) { delegate = new ParsingJavaPackageFinder.PackagePathCache(); for (IjFolder startingFolder : startingFolders) { if (!startingFolder.getWantsPackagePrefix()) { continue; } Path path = FluentIterable.from(startingFolder.getInputs()).first().or(lookupPath(startingFolder)); delegate.insert(path, javaPackageFinder.findJavaPackageFolder(path)); } }
@Nullable private String getPackagPrefix(IjFolder folder) { if (!folder.getWantsPackagePrefix()) { return null; } Path fileToLookupPackageIn; if (!folder.getInputs().isEmpty() && folder.getInputs().first().getParent().equals(folder.getPath())) { fileToLookupPackageIn = folder.getInputs().first(); } else { fileToLookupPackageIn = folder.getPath().resolve("notfound"); } String packagePrefix = javaPackageFinder.findJavaPackage(fileToLookupPackageIn); if (packagePrefix.isEmpty()) { // It doesn't matter either way, but an empty prefix looks confusing. return null; } return packagePrefix; }