diff options
author | 2015-09-22 07:40:24 +0000 | |
---|---|---|
committer | 2015-09-22 17:07:18 +0000 | |
commit | d72db8db34ea76a7939138d02c258035699b1f1c (patch) | |
tree | eecae3f2ab5bc5ec73024b68d85c315cd6a1fbc9 /src | |
parent | dfd3497c572f8710ad228ac35fda9f8053f004b4 (diff) |
Thread the repository name all the way from TargetPatternResolver to RecursivePkgFunction.
This introduces some redundancy with RootedPath, but only in the case of remote repositories. There doesn't seem to be a good way of removing this redundancy.
--
MOS_MIGRATED_REVID=103621610
Diffstat (limited to 'src')
12 files changed, 71 insertions, 36 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java index 54fd93254a..b127009d91 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java @@ -423,7 +423,8 @@ public abstract class TargetPattern implements Serializable { public <T> ResolvedTargets<T> eval(TargetPatternResolver<T> resolver, ImmutableSet<String> excludedSubdirectories) throws TargetParsingException, InterruptedException { - return resolver.findTargetsBeneathDirectory(getOriginalPattern(), directory, rulesOnly, + return resolver.findTargetsBeneathDirectory( + PackageIdentifier.DEFAULT_REPOSITORY_NAME, getOriginalPattern(), directory, rulesOnly, excludedSubdirectories); } diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java index 3566b2393b..4234ad5e10 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.cmdline; import com.google.common.collect.ImmutableSet; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; /** * A callback interface that is used during the process of converting target patterns (such as @@ -76,8 +77,8 @@ public interface TargetPatternResolver<T> { * to ignore * @throws TargetParsingException under implementation-specific failure conditions */ - ResolvedTargets<T> findTargetsBeneathDirectory(String originalPattern, String directory, - boolean rulesOnly, ImmutableSet<String> excludedSubdirectories) + ResolvedTargets<T> findTargetsBeneathDirectory(RepositoryName repository, String originalPattern, + String directory, boolean rulesOnly, ImmutableSet<String> excludedSubdirectories) throws TargetParsingException, InterruptedException; /** diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/RecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/pkgcache/RecursivePackageProvider.java index e5608a6747..de79d9db23 100644 --- a/src/main/java/com/google/devtools/build/lib/pkgcache/RecursivePackageProvider.java +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/RecursivePackageProvider.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.pkgcache; import com.google.common.collect.ImmutableSet; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; @@ -28,6 +29,6 @@ public interface RecursivePackageProvider extends PackageProvider { * @param excludedSubdirectories a set of {@link PathFragment}s, all of which are beneath * {@code directory}, specifying transitive subdirectories to exclude */ - Iterable<PathFragment> getPackagesUnderDirectory(RootedPath directory, + Iterable<PathFragment> getPackagesUnderDirectory(RepositoryName repository, RootedPath directory, ImmutableSet<PathFragment> excludedSubdirectories); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java index de739ac7e3..7ea637df2d 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/EnvironmentBackedRecursivePackageProvider.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException; @@ -89,13 +90,14 @@ public final class EnvironmentBackedRecursivePackageProvider implements Recursiv } @Override - public Iterable<PathFragment> getPackagesUnderDirectory(RootedPath directory, + public Iterable<PathFragment> getPackagesUnderDirectory( + RepositoryName repository, RootedPath directory, ImmutableSet<PathFragment> excludedSubdirectories) throws MissingDepException { PathFragment rootedPathFragment = directory.getRelativePath(); PathFragment.checkAllPathsAreUnder(excludedSubdirectories, rootedPathFragment); RecursivePkgValue lookup = (RecursivePkgValue) env.getValue( - RecursivePkgValue.key(directory, excludedSubdirectories)); + RecursivePkgValue.key(repository, directory, excludedSubdirectories)); if (lookup == null) { // Typically a null value from Environment.getValue(k) means that either the key k is missing // a dependency or an exception was thrown during evaluation of k. Here, if this getValue diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java index 5c1cc7d9dd..2d1b1de6c0 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/GraphBackedRecursivePackageProvider.java @@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.cmdline.TargetPattern; import com.google.devtools.build.lib.cmdline.TargetPattern.Type; import com.google.devtools.build.lib.events.Event; @@ -98,7 +99,8 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka } @Override - public Iterable<PathFragment> getPackagesUnderDirectory(RootedPath directory, + public Iterable<PathFragment> getPackagesUnderDirectory( + RepositoryName repository, RootedPath directory, ImmutableSet<PathFragment> excludedSubdirectories) { PathFragment.checkAllPathsAreUnder(excludedSubdirectories, directory.getRelativePath()); @@ -120,16 +122,17 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka // directory wasn't in the universe, so return an empty list. ImmutableList.Builder<PathFragment> builder = ImmutableList.builder(); if (filteringPolicy != null) { - collectPackagesUnder(directory, excludedSubdirectories, builder, filteringPolicy); + collectPackagesUnder(repository, directory, excludedSubdirectories, builder, filteringPolicy); } return builder.build(); } - private void collectPackagesUnder(RootedPath directory, + private void collectPackagesUnder(RepositoryName repository, RootedPath directory, ImmutableSet<PathFragment> excludedSubdirectories, ImmutableList.Builder<PathFragment> builder, FilteringPolicy policy) { SkyKey key = - PrepareDepsOfTargetsUnderDirectoryValue.key(directory, excludedSubdirectories, policy); + PrepareDepsOfTargetsUnderDirectoryValue.key( + repository, directory, excludedSubdirectories, policy); // If the key does not exist in the graph, because the SkyQuery environment has // already loaded the universe, and we found a TargetsBelowDirectory pattern in the universe // that contained it, then we know the directory does not exist in the universe. @@ -151,8 +154,8 @@ public final class GraphBackedRecursivePackageProvider implements RecursivePacka PathFragment subdirectoryRelativePath = subdirectory.getRelativePath(); ImmutableSet<PathFragment> excludedSubdirectoriesBeneathThisSubdirectory = PathFragment.filterPathsStartingWith(excludedSubdirectories, subdirectoryRelativePath); - collectPackagesUnder(subdirectory, excludedSubdirectoriesBeneathThisSubdirectory, builder, - policy); + collectPackagesUnder(repository, subdirectory, + excludedSubdirectoriesBeneathThisSubdirectory, builder, policy); } } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java index c76973805f..b116595dae 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.cmdline.ResolvedTargets; import com.google.devtools.build.lib.cmdline.TargetParsingException; import com.google.devtools.build.lib.cmdline.TargetPattern; @@ -210,18 +211,21 @@ public class PrepareDepsOfPatternFunction implements SkyFunction { } @Override - public ResolvedTargets<Void> findTargetsBeneathDirectory(String originalPattern, - String directory, boolean rulesOnly, ImmutableSet<String> excludedSubdirectories) + public ResolvedTargets<Void> findTargetsBeneathDirectory(RepositoryName repository, + String originalPattern, String directory, boolean rulesOnly, + ImmutableSet<String> excludedSubdirectories) throws TargetParsingException, InterruptedException { FilteringPolicy policy = rulesOnly ? FilteringPolicies.RULES_ONLY : FilteringPolicies.NO_FILTER; ImmutableSet<PathFragment> excludedPathFragments = TargetPatternResolverUtil.getPathFragments(excludedSubdirectories); PathFragment pathFragment = TargetPatternResolverUtil.getPathFragment(directory); + // TODO(bazel-team): This is where we need to depend on the RepositoryValue of a remote + // repository in order figure out its root and thus support recursive package search in them. for (Path root : pkgPath.getPathEntries()) { RootedPath rootedPath = RootedPath.toRootedPath(root, pathFragment); - SkyValue token = env.getValue(PrepareDepsOfTargetsUnderDirectoryValue.key(rootedPath, - excludedPathFragments, policy)); + SkyValue token = env.getValue(PrepareDepsOfTargetsUnderDirectoryValue.key( + repository, rootedPath, excludedPathFragments, policy)); if (token == null) { // A null token value means there is a missing dependency, because RecursivePkgFunction // never throws. diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java index 97d5ab0405..42af44c3a8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryFunction.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.cmdline.ResolvedTargets; import com.google.devtools.build.lib.packages.NoSuchPackageException; import com.google.devtools.build.lib.packages.NoSuchTargetException; @@ -78,9 +79,9 @@ public class PrepareDepsOfTargetsUnderDirectoryFunction implements SkyFunction { } @Override - protected SkyKey getSkyKeyForSubdirectory(RootedPath subdirectory, + protected SkyKey getSkyKeyForSubdirectory(RepositoryName repository, RootedPath subdirectory, ImmutableSet<PathFragment> excludedSubdirectoriesBeneathSubdirectory) { - return PrepareDepsOfTargetsUnderDirectoryValue.key(subdirectory, + return PrepareDepsOfTargetsUnderDirectoryValue.key(repository, subdirectory, excludedSubdirectoriesBeneathSubdirectory, filteringPolicy); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java index 7416fb73cd..11291a56b8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java @@ -17,6 +17,7 @@ import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.pkgcache.FilteringPolicies; import com.google.devtools.build.lib.pkgcache.FilteringPolicy; @@ -96,8 +97,9 @@ public final class PrepareDepsOfTargetsUnderDirectoryValue implements SkyValue { /** Create a prepare deps of targets under directory request. */ @ThreadSafe - public static SkyKey key(RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths) { - return key(rootedPath, excludedPaths, FilteringPolicies.NO_FILTER); + public static SkyKey key(RepositoryName repository, RootedPath rootedPath, + ImmutableSet<PathFragment> excludedPaths) { + return key(repository, rootedPath, excludedPaths, FilteringPolicies.NO_FILTER); } /** @@ -105,10 +107,11 @@ public final class PrepareDepsOfTargetsUnderDirectoryValue implements SkyValue { * targets. */ @ThreadSafe - public static SkyKey key(RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths, - FilteringPolicy filteringPolicy) { + public static SkyKey key(RepositoryName repository, RootedPath rootedPath, + ImmutableSet<PathFragment> excludedPaths, FilteringPolicy filteringPolicy) { return new SkyKey(SkyFunctions.PREPARE_DEPS_OF_TARGETS_UNDER_DIRECTORY, - new PrepareDepsOfTargetsUnderDirectoryKey(new RecursivePkgKey(rootedPath, excludedPaths), + new PrepareDepsOfTargetsUnderDirectoryKey( + new RecursivePkgKey(repository, rootedPath, excludedPaths), filteringPolicy)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java index d0c76333f2..f376a86830 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveDirectoryTraversalFunction.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.NoSuchPackageException; @@ -64,7 +65,8 @@ abstract class RecursiveDirectoryTraversalFunction * {@code excludedSubdirectoriesBeneathSubdirectory}, all of which must be proper subdirectories * of {@code subdirectory}. */ - protected abstract SkyKey getSkyKeyForSubdirectory(RootedPath subdirectory, + protected abstract SkyKey getSkyKeyForSubdirectory( + RepositoryName repository, RootedPath subdirectory, ImmutableSet<PathFragment> excludedSubdirectoriesBeneathSubdirectory); /** @@ -134,8 +136,8 @@ abstract class RecursiveDirectoryTraversalFunction return getEmptyReturn(); } - PackageIdentifier packageId = - PackageIdentifier.createInDefaultRepo(rootRelativePath.getPathString()); + PackageIdentifier packageId = new PackageIdentifier( + recursivePkgKey.getRepository(), rootRelativePath); PackageLookupValue pkgLookupValue; try { pkgLookupValue = (PackageLookupValue) env.getValueOrThrow(PackageLookupValue.key(packageId), @@ -248,8 +250,8 @@ abstract class RecursiveDirectoryTraversalFunction ImmutableSet<PathFragment> excludedSubdirectoriesBeneathThisSubdirectory = PathFragment.filterPathsStartingWith(excludedPaths, subdirectory); RootedPath subdirectoryRootedPath = RootedPath.toRootedPath(root, subdirectory); - childDeps.add(getSkyKeyForSubdirectory(subdirectoryRootedPath, - excludedSubdirectoriesBeneathThisSubdirectory)); + childDeps.add(getSkyKeyForSubdirectory(recursivePkgKey.getRepository(), + subdirectoryRootedPath, excludedSubdirectoriesBeneathThisSubdirectory)); if (env.valuesMissing()) { return null; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java index 5fe2fae11c..69cf3baf70 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java @@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.cmdline.ResolvedTargets; import com.google.devtools.build.lib.cmdline.TargetParsingException; import com.google.devtools.build.lib.cmdline.TargetPatternResolver; @@ -136,8 +137,9 @@ public class RecursivePackageProviderBackedTargetPatternResolver } @Override - public ResolvedTargets<Target> findTargetsBeneathDirectory(String originalPattern, - String directory, boolean rulesOnly, ImmutableSet<String> excludedSubdirectories) + public ResolvedTargets<Target> findTargetsBeneathDirectory(RepositoryName repository, + String originalPattern, String directory, boolean rulesOnly, + ImmutableSet<String> excludedSubdirectories) throws TargetParsingException, InterruptedException { FilteringPolicy actualPolicy = rulesOnly ? FilteringPolicies.and(FilteringPolicies.RULES_ONLY, policy) @@ -146,10 +148,13 @@ public class RecursivePackageProviderBackedTargetPatternResolver TargetPatternResolverUtil.getPathFragments(excludedSubdirectories); PathFragment pathFragment = TargetPatternResolverUtil.getPathFragment(directory); ResolvedTargets.Builder<Target> targetBuilder = ResolvedTargets.builder(); + // TODO(bazel-team): This is where we need to depend on the RepositoryValue of a remote + // repository in order figure out its root and thus support recursive package search in them. for (Path root : pkgPath.getPathEntries()) { RootedPath rootedPath = RootedPath.toRootedPath(root, pathFragment); Iterable<PathFragment> packagesUnderDirectory = - recursivePackageProvider.getPackagesUnderDirectory(rootedPath, excludedPathFragments); + recursivePackageProvider.getPackagesUnderDirectory( + repository, rootedPath, excludedPathFragments); for (PathFragment pkg : packagesUnderDirectory) { targetBuilder.merge(getTargetsInPackage(originalPattern, pkg, FilteringPolicies.NO_FILTER)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java index 0ca49fb58e..fc563dc4bd 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgFunction.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableSet; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; @@ -57,9 +58,10 @@ public class RecursivePkgFunction implements SkyFunction { } @Override - protected SkyKey getSkyKeyForSubdirectory(RootedPath subdirectory, + protected SkyKey getSkyKeyForSubdirectory(RepositoryName repository, RootedPath subdirectory, ImmutableSet<PathFragment> excludedSubdirectoriesBeneathSubdirectory) { - return RecursivePkgValue.key(subdirectory, excludedSubdirectoriesBeneathSubdirectory); + return RecursivePkgValue.key( + repository, subdirectory, excludedSubdirectoriesBeneathSubdirectory); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java index 04a53677c1..45df2626fa 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; +import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; @@ -55,8 +56,10 @@ public class RecursivePkgValue implements SkyValue { * Create a transitive package lookup request. */ @ThreadSafe - public static SkyKey key(RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths) { - return new SkyKey(SkyFunctions.RECURSIVE_PKG, new RecursivePkgKey(rootedPath, excludedPaths)); + public static SkyKey key(RepositoryName repositoryName, RootedPath rootedPath, + ImmutableSet<PathFragment> excludedPaths) { + return new SkyKey(SkyFunctions.RECURSIVE_PKG, + new RecursivePkgKey(repositoryName, rootedPath, excludedPaths)); } public NestedSet<String> getPackages() { @@ -74,16 +77,23 @@ public class RecursivePkgValue implements SkyValue { */ @ThreadSafe public static final class RecursivePkgKey implements Serializable { + private final RepositoryName repositoryName; private final RootedPath rootedPath; private final ImmutableSet<PathFragment> excludedPaths; - public RecursivePkgKey(RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths) { + public RecursivePkgKey(RepositoryName repositoryName, RootedPath rootedPath, + ImmutableSet<PathFragment> excludedPaths) { PathFragment.checkAllPathsAreUnder(excludedPaths, rootedPath.getRelativePath()); + this.repositoryName = repositoryName; this.rootedPath = Preconditions.checkNotNull(rootedPath); this.excludedPaths = Preconditions.checkNotNull(excludedPaths); } + public RepositoryName getRepository() { + return repositoryName; + } + public RootedPath getRootedPath() { return rootedPath; } |