aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-10-25 15:25:09 +0000
committerGravatar John Cater <jcater@google.com>2016-10-25 20:19:14 +0000
commit7260f0a2c69bfe0fec187099fcea2dd16c331729 (patch)
treebab73491fda9476815de0aa1ff80a591041306b9 /src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java
parentd1f4a167f8080d460dd532eb83b87ab0d0eb4f86 (diff)
Wrap the source Path in a DataSource object.
The DataSource object will then be used to track which values have been overwritten and avoid incorrect merge warnings. -- MOS_MIGRATED_REVID=137159260
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java28
1 files changed, 8 insertions, 20 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 f622253332..3ee002a98d 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
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.android;
+import com.android.ide.common.res2.MergingException;
import com.google.common.base.Joiner;
import com.google.common.base.Stopwatch;
import com.google.common.collect.Iterables;
@@ -21,15 +22,9 @@ import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.devtools.build.android.ParsedAndroidData.Builder;
import com.google.devtools.build.android.ParsedAndroidData.ParsedAndroidDataBuildingPathWalker;
-
-import com.android.ide.common.res2.MergingException;
-
-import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.attribute.BasicFileAttributeView;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -92,7 +87,7 @@ public class AndroidDataMerger {
/** Interface for comparing paths. */
interface SourceChecker {
- boolean checkEquality(Path one, Path two) throws IOException;
+ boolean checkEquality(DataSource one, DataSource two) throws IOException;
}
/** Compares two paths by the contents of the files. */
@@ -103,13 +98,13 @@ public class AndroidDataMerger {
}
@Override
- public boolean checkEquality(Path one, Path two) throws IOException {
+ public boolean checkEquality(DataSource one, DataSource two) throws IOException {
// TODO(corysmith): Is there a filesystem hash we can use?
- if (getFileSize(one) != getFileSize(two)) {
+ if (one.getFileSize() != two.getFileSize()) {
return false;
}
- try (final InputStream oneStream = new BufferedInputStream(Files.newInputStream(one));
- final InputStream twoStream = new BufferedInputStream(Files.newInputStream(two))) {
+ try (final InputStream oneStream = one.newBufferedInputStream();
+ final InputStream twoStream = two.newBufferedInputStream()) {
int bytesRead = 0;
while (true) {
int oneByte = oneStream.read();
@@ -123,11 +118,7 @@ public class AndroidDataMerger {
logger.severe(
String.format(
"Filesystem size of %s (%s) or %s (%s) is inconsistant with bytes read %s.",
- one,
- getFileSize(one),
- two,
- getFileSize(two),
- bytesRead));
+ one, one.getFileSize(), two, two.getFileSize(), bytesRead));
return false;
}
}
@@ -138,9 +129,6 @@ public class AndroidDataMerger {
}
}
- private long getFileSize(Path path) throws IOException {
- return Files.getFileAttributeView(path, BasicFileAttributeView.class).readAttributes().size();
- }
}
static class NoopSourceChecker implements SourceChecker {
@@ -149,7 +137,7 @@ public class AndroidDataMerger {
}
@Override
- public boolean checkEquality(Path one, Path two) {
+ public boolean checkEquality(DataSource one, DataSource two) {
return false;
}
}