aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.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/ParsedAndroidData.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/ParsedAndroidData.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java b/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java
index 2470a3f87b..e1d29d0515 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java
@@ -176,10 +176,15 @@ public class ParsedAndroidData {
@Override
public void consume(K key, V value) {
if (target.containsKey(key)) {
- conflicts.add(MergeConflict.between(key, value, target.get(key)));
+ V other = target.get(key);
+ conflicts.add(MergeConflict.between(key, value, other));
+ if (!other.source().hasOveridden(value.source())) {
+ // Only replace it if the previous value has explicitly replaced the current.
+ target.put(key, value);
+ }
+ } else {
+ target.put(key, value);
}
- // Always record the value, conflict or not, to maintain backwards compatibility.
- target.put(key, value);
}
}
@@ -463,13 +468,17 @@ public class ParsedAndroidData {
return assets;
}
- boolean containsOverwritable(DataKey name) {
+ public boolean containsOverwritable(DataKey name) {
return overwritingResources.containsKey(name);
}
public boolean containsCombineable(DataKey key) {
return combiningResources.containsKey(key);
}
+
+ public DataResource getOverwritable(DataKey name) {
+ return overwritingResources.get(name);
+ }
Iterable<Entry<DataKey, DataResource>> iterateOverwritableEntries() {
return overwritingResources.entrySet();
@@ -503,4 +512,8 @@ public class ParsedAndroidData {
ImmutableSet<MergeConflict> conflicts() {
return conflicts;
}
+
+ public DataAsset getAsset(DataKey key) {
+ return assets.get(key);
+ }
}