diff options
author | 2016-08-01 18:55:52 +0000 | |
---|---|---|
committer | 2016-08-02 07:33:16 +0000 | |
commit | f38d765d8f59b4da9f5680e99adc3b2bd8dee524 (patch) | |
tree | 93384748b12d5c4e793ec054d52e7231f1250671 /src/main/java/com/google/devtools | |
parent | 8f931174ec06d66f92c9c19b284ae57d8cf19c5f (diff) |
Add hashCode(), equals(), and basic toString() to FilesetTraversalParams classes, and mark traversals fields as nullable.
--
MOS_MIGRATED_REVID=129010094
Diffstat (limited to 'src/main/java/com/google/devtools')
3 files changed, 60 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParamsFactory.java b/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParamsFactory.java index 2b25abdba2..6b64fc9fe1 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParamsFactory.java +++ b/src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParamsFactory.java @@ -26,9 +26,8 @@ import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; - +import java.util.Objects; import java.util.Set; - import javax.annotation.Nullable; /** Factory of {@link FilesetTraversalParams}. */ @@ -158,6 +157,21 @@ public final class FilesetTraversalParamsFactory { fp.addStrings(excludes); } } + + @Override + public String toString() { + return super.toString() + "[" + destDir + ", " + ownerLabel + ", " + excludes + "]"; + } + + protected boolean internalEquals(ParamsCommon that) { + return Objects.equals(this.ownerLabel, that.ownerLabel) + && Objects.equals(this.destDir, that.destDir) + && Objects.equals(this.excludes, that.excludes); + } + + protected int internalHashCode() { + return Objects.hash(ownerLabel, destDir, excludes); + } } private static final class DirectTraversalImpl implements DirectTraversal { @@ -251,6 +265,23 @@ public final class FilesetTraversalParamsFactory { commonFingerprint(fp); traversal.fingerprint(fp); } + + @Override + public int hashCode() { + return 37 * super.internalHashCode() + Objects.hashCode(traversal); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof DirectoryTraversalParams)) { + return false; + } + DirectoryTraversalParams that = (DirectoryTraversalParams) obj; + return Objects.equals(this.traversal, that.traversal) && internalEquals(that); + } } private static final class NestedTraversalParams extends ParamsCommon { @@ -277,6 +308,23 @@ public final class FilesetTraversalParamsFactory { commonFingerprint(fp); nested.fingerprint(fp); } + + @Override + public int hashCode() { + return 37 * super.internalHashCode() + Objects.hashCode(nested); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof NestedTraversalParams)) { + return false; + } + NestedTraversalParams that = (NestedTraversalParams) obj; + return Objects.equals(this.nested, that.nested) && internalEquals(that); + } } private static final class DirectTraversalRootImpl implements DirectTraversalRoot { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FilesetOutputConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/FilesetOutputConfiguredTarget.java index 6b7a14771a..c5c46deab0 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/FilesetOutputConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/FilesetOutputConfiguredTarget.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.packages.OutputFile; import com.google.devtools.build.lib.rules.fileset.FilesetProvider; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; +import javax.annotation.Nullable; /** * A configured target for output files generated by {@code Fileset} rules. They are almost the @@ -35,14 +36,14 @@ public final class FilesetOutputConfiguredTarget extends OutputFileConfiguredTar implements FilesetProvider { private final Artifact filesetInputManifest; private final PathFragment filesetLinkDir; - private final ImmutableList<FilesetTraversalParams> filesetTraversals; + @Nullable private final ImmutableList<FilesetTraversalParams> filesetTraversals; FilesetOutputConfiguredTarget( TargetContext targetContext, OutputFile outputFile, TransitiveInfoCollection generatingRule, Artifact outputArtifact, - ImmutableList<FilesetTraversalParams> traversals) { + @Nullable ImmutableList<FilesetTraversalParams> traversals) { super(targetContext, outputFile, generatingRule, outputArtifact); FilesetProvider provider = generatingRule.getProvider(FilesetProvider.class); Preconditions.checkArgument(provider != null); @@ -61,6 +62,7 @@ public final class FilesetOutputConfiguredTarget extends OutputFileConfiguredTar return filesetLinkDir; } + @Nullable @Override public ImmutableList<FilesetTraversalParams> getTraversals() { return filesetTraversals; diff --git a/src/main/java/com/google/devtools/build/lib/rules/fileset/FilesetProvider.java b/src/main/java/com/google/devtools/build/lib/rules/fileset/FilesetProvider.java index 1e8a78ee52..af2c2f7da9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/fileset/FilesetProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/fileset/FilesetProvider.java @@ -19,6 +19,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.FilesetTraversalParams; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.vfs.PathFragment; +import javax.annotation.Nullable; /** * Information needed by a Fileset to do the right thing when it depends on another Fileset. @@ -27,6 +28,10 @@ public interface FilesetProvider extends TransitiveInfoProvider { Artifact getFilesetInputManifest(); PathFragment getFilesetLinkDir(); - /** Returns a list of the traversals that went into this Fileset.*/ + /** + * Returns a list of the traversals that went into this Fileset. Only used by Skyframe-native + * filesets, so will be null if Skyframe-native filesets are not enabled. + */ + @Nullable ImmutableList<FilesetTraversalParams> getTraversals(); } |