From 0f86dc815c46f5bde00e42fc875ed0502a1fac44 Mon Sep 17 00:00:00 2001 From: Googler Date: Tue, 5 Apr 2016 17:52:42 +0000 Subject: 4.25 of 5: Writing of UnwrittenMergedAndroidData Introduces the AndroidDataWriter and AndroidDataWritingVisitor to abstract the io operations from the data classes. Necessary refactoring to the stubbed write method on DataValue in DataAsset.writeAsset and DataResource.writeResource. New interface for the AttributeValues to reflect the simplifications of writing Resource Attributes. Of special note is the fact all xml is written into a single file, values.xml. This is following the Gradle convention and aapt has demonstrated a preference of only reading a values.xml and ignoring all other xml files in the values directory. Unless profiling demonstrates an advantage to writing multiple files (which I doubt), this merger carries on this convention. -- MOS_MIGRATED_REVID=119066611 --- .../google/devtools/build/android/ParsedAndroidData.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java') 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 cc4311a209..50c62e9001 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 @@ -18,6 +18,7 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import com.android.ide.common.res2.MergingException; @@ -34,6 +35,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Objects; import java.util.Set; @@ -50,8 +52,7 @@ import javax.xml.stream.XMLStreamException; */ @Immutable public class ParsedAndroidData { - - /** A Consumer style interface that will accept a DataKey and DataValue. */ + /** A Consumer style interface that will appendTo a DataKey and DataValue. */ interface KeyValueConsumer { void consume(K key, V value); } @@ -253,7 +254,7 @@ public class ParsedAndroidData { try { if (!Files.isDirectory(path)) { if (inValuesSubtree) { - DataResourceXml.fromPath( + DataResourceXml.parse( xmlInputFactory, path, fqnFactory, overwritingConsumer, nonOverwritingConsumer); } else { String rawFqn = deriveRawFullyQualifiedName(path); @@ -412,15 +413,19 @@ public class ParsedAndroidData { return overwritingResources.containsKey(name); } - Iterable> iterateOverwritableEntries() { + Iterable> iterateOverwritableEntries() { return overwritingResources.entrySet(); } + public Iterable> iterateDataResourceEntries() { + return Iterables.concat(overwritingResources.entrySet(), nonOverwritingResources.entrySet()); + } + boolean containsAsset(DataKey name) { return assets.containsKey(name); } - Iterable> iterateAssetEntries() { + Iterable> iterateAssetEntries() { return assets.entrySet(); } -- cgit v1.2.3