aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2016-08-01 18:55:52 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-08-02 07:33:16 +0000
commitf38d765d8f59b4da9f5680e99adc3b2bd8dee524 (patch)
tree93384748b12d5c4e793ec054d52e7231f1250671 /src/main/java/com/google/devtools/build
parent8f931174ec06d66f92c9c19b284ae57d8cf19c5f (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/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/FilesetTraversalParamsFactory.java52
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/FilesetOutputConfiguredTarget.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/fileset/FilesetProvider.java7
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();
}