diff options
author | Andrew Pellegrini <apell@google.com> | 2017-03-13 18:02:16 +0000 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2017-03-14 08:53:14 +0000 |
commit | 82122525effd106e551503f70050bac18d0f85cb (patch) | |
tree | 878a3e8f44945f292e450e19f075f61e70c737eb /src/tools/android/java/com/google/devtools/build/android/AndroidDataWriter.java | |
parent | 3a26d6924bf3a6e35d3718eb498def3693155ac6 (diff) |
Add <resources> attribute processing to the Android resource processing toolchain.
--
PiperOrigin-RevId: 149963021
MOS_MIGRATED_REVID=149963021
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/AndroidDataWriter.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/AndroidDataWriter.java | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidDataWriter.java b/src/tools/android/java/com/google/devtools/build/android/AndroidDataWriter.java index f035758cfc..7b5f14d501 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AndroidDataWriter.java +++ b/src/tools/android/java/com/google/devtools/build/android/AndroidDataWriter.java @@ -22,6 +22,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import com.google.common.collect.Ordering; import com.google.common.util.concurrent.ListenableFuture; @@ -254,7 +255,15 @@ public class AndroidDataWriter implements AndroidDataWritingVisitor { } return valueTags.get(valuesPath).resource(fqn); } - + + @Override + public void defineAttribute(FullyQualifiedName fqn, String value) { + String valuesPath = fqn.valuesPath(); + if (!valueTags.containsKey(valuesPath)) { + valueTags.put(valuesPath, new ResourceValuesDefinitions()); + } + valueTags.get(valuesPath).addAttribute(fqn.name(), value); + } @Override public void defineNamespacesFor(FullyQualifiedName fqn, Namespaces namespaces) { @@ -276,14 +285,17 @@ public class AndroidDataWriter implements AndroidDataWritingVisitor { private final Multimap<FullyQualifiedName, Segment> segments; private final Set<FullyQualifiedName> adopted; private final Namespaces namespaces; + private final Map<String, String> attributes; private WritingTask( Path valuesPath, Namespaces namespaces, + Map<String, String> attributes, Set<FullyQualifiedName> adopted, Multimap<FullyQualifiedName, Segment> segments) { this.valuesPath = valuesPath; this.namespaces = namespaces; + this.attributes = attributes; this.adopted = adopted; this.segments = segments; } @@ -306,6 +318,13 @@ public class AndroidDataWriter implements AndroidDataWritingVisitor { writer.write(prefixToUri.getValue()); writer.write("\""); } + for (Entry<String, String> attribute : attributes.entrySet()) { + writer.write(" "); + writer.write(attribute.getKey()); + writer.write("=\""); + writer.write(attribute.getValue()); + writer.write("\""); + } writer.write(">"); writer.write(LINE_END); Path previousSource = null; @@ -325,18 +344,23 @@ public class AndroidDataWriter implements AndroidDataWritingVisitor { final Multimap<FullyQualifiedName, Segment> segments = ArrayListMultimap.create(); final Set<FullyQualifiedName> adopted = new HashSet<>(); Namespaces namespaces = Namespaces.empty(); + final Map<String, String> attributes = Maps.newHashMap(); private ValueResourceDefinitionMetadata resource(final FullyQualifiedName fqn) { return new StringValueResourceDefinitionMetadata(segments, adopted, fqn); } + public void addAttribute(String name, String value) { + this.attributes.put(name, value); + } + public void addAllNamespaces(Namespaces namespaces) { this.namespaces = namespaces.union(this.namespaces); } /** Generates a {@link Callable} that will write the {@link Segment} to the provided path. */ public Callable<Boolean> createWritingTask(final Path valuesPath) { - return new WritingTask(valuesPath, namespaces, adopted, segments); + return new WritingTask(valuesPath, namespaces, attributes, adopted, segments); } } |