aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/DataSource.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-11-30 22:40:59 +0000
committerGravatar Irina Iancu <elenairina@google.com>2016-12-01 10:17:49 +0000
commit3e8a15267e9c7fffb6a65ee63e4dd6ec10e522d5 (patch)
tree309cb0409b90107bb70a3b7f8b0f6c8d08b24a90 /src/tools/android/java/com/google/devtools/build/android/DataSource.java
parent2a2be3907981d9654575493c7012d95d1241f373 (diff)
unknown commit of 5: Fixing the merge warning messages in transitive library overwrites.
Record the sources are overwritten during merging. -- MOS_MIGRATED_REVID=140654137
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/DataSource.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/DataSource.java39
1 files changed, 34 insertions, 5 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/DataSource.java b/src/tools/android/java/com/google/devtools/build/android/DataSource.java
index 5c51ea729a..1e4580eec9 100644
--- a/src/tools/android/java/com/google/devtools/build/android/DataSource.java
+++ b/src/tools/android/java/com/google/devtools/build/android/DataSource.java
@@ -14,7 +14,10 @@
package com.google.devtools.build.android;
import com.android.SdkConstants;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.android.proto.SerializeFormat.ProtoSource;
import java.io.BufferedInputStream;
import java.io.IOException;
@@ -32,14 +35,16 @@ public class DataSource implements Comparable<DataSource> {
return of(path);
}
- public static DataSource of(Path source) {
- return new DataSource(source);
+ public static DataSource of(Path sourcePath) {
+ return new DataSource(sourcePath, ImmutableSet.<DataSource>of());
}
private final Path path;
+ private final ImmutableSet<DataSource> overrides;
- private DataSource(Path path) {
+ private DataSource(Path path, ImmutableSet<DataSource> overrides) {
this.path = path;
+ this.overrides = overrides;
}
public Path getPath() {
@@ -58,12 +63,13 @@ public class DataSource implements Comparable<DataSource> {
if (o == null || getClass() != o.getClass()) {
return false;
}
- return Objects.equal(path, ((DataSource) o).path);
+ return Objects.equal(path, ((DataSource) o).path)
+ && Objects.equal(overrides, ((DataSource) o).overrides);
}
@Override
public int hashCode() {
- return Objects.hashCode(path);
+ return Objects.hashCode(path, overrides);
}
@Override
@@ -92,7 +98,30 @@ public class DataSource implements Comparable<DataSource> {
return this;
}
+ public DataSource overwrite(DataSource... sources) {
+ ImmutableSet<DataSource> overrides =
+ ImmutableSet.<DataSource>builder().addAll(this.overrides).add(sources).build();
+ Preconditions.checkArgument(!overrides.contains(this));
+ return new DataSource(path, overrides);
+ }
+
+ public ImmutableSet<DataSource> overrides() {
+ return overrides;
+ }
+
public boolean isInValuesFolder() {
return path.getParent().getFileName().toString().startsWith(SdkConstants.FD_RES_VALUES);
}
+
+ public boolean hasOveridden(DataSource source) {
+ return overrides.contains(source);
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .add("path", path)
+ .add("overrides", overrides)
+ .toString();
+ }
}