aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-03-26 15:06:57 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-26 15:08:21 -0700
commit354728db5d546a2a01cf2d3d9a73fa5940633d0a (patch)
treeb1b4ff23f441c5291d648f38acaa10b13afcd636 /src/main
parent848e78623fb418381e2982e00b7a3021e6c312f0 (diff)
Separate out single-extension matching in FileType to reduce garbage.
PiperOrigin-RevId: 190532114
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/util/FileType.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/util/FileType.java b/src/main/java/com/google/devtools/build/lib/util/FileType.java
index 599851dbbb..19cfdd7593 100644
--- a/src/main/java/com/google/devtools/build/lib/util/FileType.java
+++ b/src/main/java/com/google/devtools/build/lib/util/FileType.java
@@ -41,7 +41,28 @@ public abstract class FileType implements Predicate<String> {
};
public static FileType of(final String ext) {
- return new ListFileType(ImmutableList.of(ext));
+ return new SingletonFileType(ext);
+ }
+
+ @AutoCodec.VisibleForSerialization
+ @AutoCodec
+ static final class SingletonFileType extends FileType {
+ private final String ext;
+
+ @AutoCodec.VisibleForSerialization
+ SingletonFileType(String ext) {
+ this.ext = ext;
+ }
+
+ @Override
+ public boolean apply(String path) {
+ return path.endsWith(ext);
+ }
+
+ @Override
+ public List<String> getExtensions() {
+ return ImmutableList.of(ext);
+ }
}
public static FileType of(final List<String> extensions) {