aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-03-07 10:04:44 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-07 10:07:05 -0800
commit629fcd54f7b125c8ce51c13341f7642087f23f10 (patch)
tree7261be2e7a151b652c7b77db009169422e0c4287 /src/tools/android/java/com
parent3b59e02e0baec754f2dc076d644bb4f37322c739 (diff)
Don't check contents of conflicting compiled resources
Until we properly support checking the contents of these files, don't try to do so. RELNOTES: none PiperOrigin-RevId: 188192286
Diffstat (limited to 'src/tools/android/java/com')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java23
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AndroidResourceMerger.java15
2 files changed, 32 insertions, 6 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java b/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java
index 962de7eae3..20a63bf120 100644
--- a/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java
+++ b/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java
@@ -53,6 +53,23 @@ class AndroidDataMerger {
boolean checkEquality(DataSource one, DataSource two) throws IOException;
}
+ /**
+ * Compares two paths for equality. Does not check the contents of the files.
+ *
+ * <p>TODO(b/74333698): Always check the contents of conflicting resources
+ */
+ static class PathComparingChecker implements SourceChecker {
+
+ static SourceChecker create() {
+ return new PathComparingChecker();
+ }
+
+ @Override
+ public boolean checkEquality(DataSource one, DataSource two) throws IOException {
+ return one.getPath().equals(two.getPath());
+ }
+ }
+
/** Compares two paths by the contents of the files. */
static class ContentComparingChecker implements SourceChecker {
@@ -125,8 +142,10 @@ class AndroidDataMerger {
/** Creates a merger with a file contents hashing deduplicator. */
static AndroidDataMerger createWithPathDeduplictor(
- ListeningExecutorService executorService, AndroidDataDeserializer deserializer) {
- return new AndroidDataMerger(ContentComparingChecker.create(), executorService, deserializer);
+ ListeningExecutorService executorService,
+ AndroidDataDeserializer deserializer,
+ SourceChecker checker) {
+ return new AndroidDataMerger(checker, executorService, deserializer);
}
private AndroidDataMerger(
diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceMerger.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceMerger.java
index a6e97b9161..a5126c6c28 100644
--- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceMerger.java
+++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceMerger.java
@@ -18,6 +18,9 @@ import com.android.builder.core.VariantType;
import com.android.ide.common.internal.PngCruncher;
import com.google.common.base.Stopwatch;
import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.devtools.build.android.AndroidDataMerger.ContentComparingChecker;
+import com.google.devtools.build.android.AndroidDataMerger.PathComparingChecker;
+import com.google.devtools.build.android.AndroidDataMerger.SourceChecker;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
@@ -75,7 +78,8 @@ public class AndroidResourceMerger {
primaryManifest,
type != VariantType.LIBRARY,
deserializer,
- throwOnResourceConflict);
+ throwOnResourceConflict,
+ ContentComparingChecker.create());
timer.reset().start();
if (symbolsOut != null) {
AndroidDataSerializer serializer = AndroidDataSerializer.create();
@@ -112,11 +116,13 @@ public class AndroidResourceMerger {
Path primaryManifest,
boolean allowPrimaryOverrideAll,
AndroidDataDeserializer deserializer,
- boolean throwOnResourceConflict) {
+ boolean throwOnResourceConflict,
+ SourceChecker checker) {
Stopwatch timer = Stopwatch.createStarted();
+ // TODO(b/74333698): Always check the contents of conflicting resources
try {
AndroidDataMerger merger =
- AndroidDataMerger.createWithPathDeduplictor(executorService, deserializer);
+ AndroidDataMerger.createWithPathDeduplictor(executorService, deserializer, checker);
return merger.loadAndMerge(
transitive,
direct,
@@ -229,7 +235,8 @@ public class AndroidResourceMerger {
primaryManifest,
false,
deserializer,
- throwOnResourceConflict);
+ throwOnResourceConflict,
+ PathComparingChecker.create());
timer.reset().start();
merged.writeResourceClass(rclassWriter);
logger.fine(