diff options
author | Ulf Adams <ulfjack@google.com> | 2017-03-20 16:30:11 +0000 |
---|---|---|
committer | Yue Gan <yueg@google.com> | 2017-03-21 12:49:29 +0000 |
commit | 8594de82e367fb463f2d02d3adda25fc99de9a9f (patch) | |
tree | 70e2f4234486ac3a228ece8a70a260f0d02915f2 /src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java | |
parent | 1d7108814e9f1fd68dbbb92325779b4d5e4d0a91 (diff) |
Rationalize null-ness checks in Runfiles
This now also checks symlink maps for null pointers, which it previously did
not. Unfortunately, there's still one case where we add a null target to
Runfiles (to represent an empty file) - this happens in Runfiles itself, and
this change prevents any callers from doing so.
--
PiperOrigin-RevId: 150634481
MOS_MIGRATED_REVID=150634481
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java index b311ebbe3b..2ef4c2ca33 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java @@ -134,8 +134,8 @@ public final class Runfiles { private final Artifact artifact; private SymlinkEntry(PathFragment path, Artifact artifact) { - this.path = path; - this.artifact = artifact; + this.path = Preconditions.checkNotNull(path); + this.artifact = Preconditions.checkNotNull(artifact); } public PathFragment getPath() { @@ -146,10 +146,12 @@ public final class Runfiles { return artifact; } + @Override public boolean isImmutable() { return true; } + @Override public void write(Appendable buffer, char quotationMark) { Printer.append(buffer, "SymlinkEntry(path = "); Printer.write(buffer, getPath().toString(), quotationMark); @@ -851,13 +853,11 @@ public final class Runfiles { * Adds a symlink. */ public Builder addSymlink(PathFragment link, Artifact target) { - Preconditions.checkNotNull(link); - Preconditions.checkNotNull(target); symlinksBuilder.add(new SymlinkEntry(link, target)); return this; } - /** Adds several symlinks. */ + /** Adds several symlinks. Neither keys nor values may be null. */ public Builder addSymlinks(Map<PathFragment, Artifact> symlinks) { for (Map.Entry<PathFragment, Artifact> symlink : symlinks.entrySet()) { symlinksBuilder.add(new SymlinkEntry(symlink.getKey(), symlink.getValue())); @@ -877,13 +877,11 @@ public final class Runfiles { * Adds a root symlink. */ public Builder addRootSymlink(PathFragment link, Artifact target) { - Preconditions.checkNotNull(link); - Preconditions.checkNotNull(target); rootSymlinksBuilder.add(new SymlinkEntry(link, target)); return this; } - /** Adds several root symlinks. */ + /** Adds several root symlinks. Neither keys nor values may be null. */ public Builder addRootSymlinks(Map<PathFragment, Artifact> symlinks) { for (Map.Entry<PathFragment, Artifact> symlink : symlinks.entrySet()) { rootSymlinksBuilder.add(new SymlinkEntry(symlink.getKey(), symlink.getValue())); |