aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2015-04-21 01:29:54 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-04-21 10:58:51 +0000
commit26cb46590ea077c0428e8d9ccba202f8d1a236e8 (patch)
tree3aee7b1b08b7634666167cb084764bebc0c0aa8a /src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
parent44d00bfb252abb32f8f0c17b642b47a0f99b06b1 (diff)
Add the option to match by regexp in RecursiveFilesystemTraversal.
-- MOS_MIGRATED_REVID=91642690
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
index f72792fd08..42b73b510b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
@@ -29,6 +29,8 @@ import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
+import java.util.regex.Pattern;
+
import javax.annotation.Nullable;
/**
@@ -132,22 +134,27 @@ public final class RecursiveFilesystemTraversalValue implements SkyValue {
*/
final boolean skipTestingForSubpackage;
+ /** A pattern that files must match to be included in this traversal (may be null.) */
+ @Nullable
+ final Pattern pattern;
+
/** Information to be attached to any error messages that may be reported. */
@Nullable final String errorInfo;
public TraversalRequest(RootedPath path, boolean isRootGenerated,
PackageBoundaryMode crossPkgBoundaries, boolean skipTestingForSubpackage,
- @Nullable String errorInfo) {
+ @Nullable String errorInfo, @Nullable Pattern pattern) {
this.path = path;
this.isGenerated = isRootGenerated;
this.crossPkgBoundaries = crossPkgBoundaries;
this.skipTestingForSubpackage = skipTestingForSubpackage;
this.errorInfo = errorInfo;
+ this.pattern = pattern;
}
private TraversalRequest duplicate(RootedPath newRoot, boolean newSkipTestingForSubpackage) {
return new TraversalRequest(newRoot, isGenerated, crossPkgBoundaries,
- newSkipTestingForSubpackage, errorInfo);
+ newSkipTestingForSubpackage, errorInfo, pattern);
}
/** Creates a new request to traverse a child element in the current directory (the root). */
@@ -177,20 +184,23 @@ public final class RecursiveFilesystemTraversalValue implements SkyValue {
TraversalRequest o = (TraversalRequest) obj;
return path.equals(o.path) && isGenerated == o.isGenerated
&& crossPkgBoundaries == o.crossPkgBoundaries
- && skipTestingForSubpackage == o.skipTestingForSubpackage;
+ && skipTestingForSubpackage == o.skipTestingForSubpackage
+ && Objects.equal(pattern, o.pattern);
}
@Override
public int hashCode() {
- return Objects.hashCode(path, isGenerated, crossPkgBoundaries, skipTestingForSubpackage);
+ return Objects.hashCode(path, isGenerated, crossPkgBoundaries, skipTestingForSubpackage,
+ pattern);
}
@Override
public String toString() {
return String.format(
"TraversalParams(root=%s, is_generated=%d, skip_testing_for_subpkg=%d,"
- + " pkg_boundaries=%s)", path, isGenerated ? 1 : 0, skipTestingForSubpackage ? 1 : 0,
- crossPkgBoundaries);
+ + " pkg_boundaries=%s, pattern=%s)", path, isGenerated ? 1 : 0,
+ skipTestingForSubpackage ? 1 : 0, crossPkgBoundaries,
+ pattern == null ? "null" : pattern.pattern());
}
}