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-05-13 18:51:27 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-05-16 15:16:41 +0000
commita56c1f4a1b47131b6d366a658f1f1e5abe0cdf3d (patch)
tree03b81997aaab9400106f7c2efacf69047425973d /src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java
parente255ce9efe565d83249f71a5ef85a8fc01ef7c10 (diff)
Speed Optimizations:
* Adds threading to the AndroidDataWriter and AndroidDataSerializer. * Changes to a BufferedWriter for the Writer (turns out it's faster for string writing.) * Added buffers to the serializer reading. -- MOS_MIGRATED_REVID=122280993
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.java17
1 files changed, 17 insertions, 0 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 6730545908..3e13e61ad3 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
@@ -40,6 +40,7 @@ import java.util.Objects;
import java.util.Set;
import javax.annotation.concurrent.Immutable;
+import javax.annotation.concurrent.NotThreadSafe;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
@@ -53,6 +54,7 @@ import javax.xml.stream.XMLStreamException;
@Immutable
public class ParsedAndroidData {
+ @NotThreadSafe
static class Builder {
private final Map<DataKey, DataResource> overwritingResources;
private final Map<DataKey, DataResource> combiningResources;
@@ -98,6 +100,21 @@ public class ParsedAndroidData {
ImmutableMap.copyOf(assets));
}
+ /** Copies the data to the targetBuilder from the current builder. */
+ public void copyTo(Builder targetBuilder) {
+ KeyValueConsumers consumers = targetBuilder.consumers();
+ for (Entry<DataKey, DataResource> entry : overwritingResources.entrySet()) {
+ consumers.overwritingConsumer.consume(entry.getKey(), entry.getValue());
+ }
+ for (Entry<DataKey, DataResource> entry : combiningResources.entrySet()) {
+ consumers.combiningConsumer.consume(entry.getKey(), entry.getValue());
+ }
+ for (Entry<DataKey, DataAsset> entry : assets.entrySet()) {
+ consumers.assetConsumer.consume(entry.getKey(), entry.getValue());
+ }
+ targetBuilder.conflicts.addAll(conflicts);
+ }
+
ResourceFileVisitor resourceVisitor() {
return new ResourceFileVisitor(
new OverwritableConsumer<>(overwritingResources, conflicts),