diff options
author | Googler <noreply@google.com> | 2016-07-22 16:33:17 +0000 |
---|---|---|
committer | John Cater <jcater@google.com> | 2016-07-22 20:11:12 +0000 |
commit | b6a650936b83b12c9efb9014faa403b94a3b5625 (patch) | |
tree | 0ad460ce12ffc2650d436ac9651e8ac26eb43e4c /src/tools/android/java/com/google/devtools/build/android/xml | |
parent | 238bf4e778a39df24ebebf8be79e205d7a65e1e4 (diff) |
Add a resource merger state -> R class writer.
Collects the R class fields from the new merger's
internal state, and then writes out either an
R.java or R.class. TBD which to use. One concern
is that users may want the javadoc. If so,
perhaps this could generate the R.class, and
then aapt could generate the srcjar off of the
build critical path.
Refactor the RClassGenerator to make it easier to
use from merger state (vs from R.txt).
--
MOS_MIGRATED_REVID=128181306
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/xml')
7 files changed, 104 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/ArrayXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/ArrayXmlResourceValue.java index 71e24691ca..46a382f5bb 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/ArrayXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/ArrayXmlResourceValue.java @@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.android.AndroidDataWritingVisitor; import com.google.devtools.build.android.AndroidDataWritingVisitor.ValuesResourceDefinition; +import com.google.devtools.build.android.AndroidResourceClassWriter; import com.google.devtools.build.android.FullyQualifiedName; import com.google.devtools.build.android.XmlResourceValue; import com.google.devtools.build.android.XmlResourceValues; @@ -181,6 +182,12 @@ public class ArrayXmlResourceValue implements XmlResourceValue { throw new IllegalArgumentException(this + " is not a combinable resource."); } + @Override + public void writeResourceToClass(FullyQualifiedName key, + AndroidResourceClassWriter resourceClassWriter) { + resourceClassWriter.writeSimpleResource(key.type(), key.name()); + } + public static XmlResourceValue parseArray( XMLEventReader eventReader, StartElement start, Namespaces.Collector namespacesCollector) throws XMLStreamException { diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/AttrXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/AttrXmlResourceValue.java index ca7a984bd8..dc8968cb12 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/AttrXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/AttrXmlResourceValue.java @@ -16,6 +16,7 @@ package com.google.devtools.build.android.xml; import static com.google.common.base.Predicates.equalTo; import static com.google.common.base.Predicates.not; +import com.android.resources.ResourceType; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; @@ -27,6 +28,7 @@ import com.google.common.collect.Ordering; import com.google.devtools.build.android.AndroidDataWritingVisitor; import com.google.devtools.build.android.AndroidDataWritingVisitor.StartTag; import com.google.devtools.build.android.AndroidDataWritingVisitor.ValuesResourceDefinition; +import com.google.devtools.build.android.AndroidResourceClassWriter; import com.google.devtools.build.android.FullyQualifiedName; import com.google.devtools.build.android.XmlResourceValue; import com.google.devtools.build.android.XmlResourceValues; @@ -327,6 +329,18 @@ public class AttrXmlResourceValue implements XmlResourceValue { } } + @Override + public void writeResourceToClass(FullyQualifiedName key, + AndroidResourceClassWriter resourceClassWriter) { + resourceClassWriter.writeSimpleResource(key.type(), key.name()); + // Flags and enums generate ID fields. + if (formats.keySet().contains(FLAGS) || formats.keySet().contains(ENUM)) { + for (ResourceXmlAttrValue value : formats.values()) { + value.writeToClass(resourceClassWriter); + } + } + } + @SuppressWarnings("deprecation") @Override public int serializeTo(Path source, Namespaces namespaces, OutputStream output) @@ -358,6 +372,8 @@ public class AttrXmlResourceValue implements XmlResourceValue { ValuesResourceDefinition writeTo(ValuesResourceDefinition writer); SerializeFormat.DataValueXml appendTo(SerializeFormat.DataValueXml.Builder builder); + + void writeToClass(AndroidResourceClassWriter writer); } // TODO(corysmith): The ResourceXmlAttrValue implementors, other than enum and flag, share a @@ -426,6 +442,13 @@ public class AttrXmlResourceValue implements XmlResourceValue { } return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + for (Map.Entry<String, String> entry : values.entrySet()) { + writer.writeSimpleResource(ResourceType.ID, entry.getKey()); + } + } } /** Represents an Android Flag Attribute resource. */ @@ -492,6 +515,13 @@ public class AttrXmlResourceValue implements XmlResourceValue { } return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + for (Map.Entry<String, String> entry : values.entrySet()) { + writer.writeSimpleResource(ResourceType.ID, entry.getKey()); + } + } } /** Represents an Android Reference Attribute resource. */ @@ -518,6 +548,10 @@ public class AttrXmlResourceValue implements XmlResourceValue { public ValuesResourceDefinition writeTo(ValuesResourceDefinition writer) { return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + } } /** Represents an Android Color Attribute resource. */ @@ -543,6 +577,10 @@ public class AttrXmlResourceValue implements XmlResourceValue { public ValuesResourceDefinition writeTo(ValuesResourceDefinition writer) { return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + } } /** Represents an Android Boolean Attribute resource. */ @@ -568,6 +606,10 @@ public class AttrXmlResourceValue implements XmlResourceValue { public ValuesResourceDefinition writeTo(ValuesResourceDefinition writer) { return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + } } /** Represents an Android Float Attribute resource. */ @@ -593,6 +635,10 @@ public class AttrXmlResourceValue implements XmlResourceValue { public ValuesResourceDefinition writeTo(ValuesResourceDefinition writer) { return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + } } /** Represents an Android Dimension Attribute resource. */ @@ -619,6 +665,10 @@ public class AttrXmlResourceValue implements XmlResourceValue { public ValuesResourceDefinition writeTo(ValuesResourceDefinition writer) { return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + } } /** Represents an Android Integer Attribute resource. */ @@ -644,6 +694,10 @@ public class AttrXmlResourceValue implements XmlResourceValue { public ValuesResourceDefinition writeTo(ValuesResourceDefinition writer) { return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + } } /** Represents an Android String Attribute resource. */ @@ -669,6 +723,10 @@ public class AttrXmlResourceValue implements XmlResourceValue { public ValuesResourceDefinition writeTo(ValuesResourceDefinition writer) { return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + } } /** Represents an Android Fraction Attribute resource. */ @@ -694,5 +752,9 @@ public class AttrXmlResourceValue implements XmlResourceValue { public ValuesResourceDefinition writeTo(ValuesResourceDefinition writer) { return writer; } + + @Override + public void writeToClass(AndroidResourceClassWriter writer) { + } } } diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/IdXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/IdXmlResourceValue.java index 1b56f8b0c7..d9a36488e6 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/IdXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/IdXmlResourceValue.java @@ -16,6 +16,7 @@ package com.google.devtools.build.android.xml; import com.google.common.base.MoreObjects; import com.google.devtools.build.android.AndroidDataWritingVisitor; import com.google.devtools.build.android.AndroidDataWritingVisitor.StartTag; +import com.google.devtools.build.android.AndroidResourceClassWriter; import com.google.devtools.build.android.FullyQualifiedName; import com.google.devtools.build.android.XmlResourceValue; import com.google.devtools.build.android.XmlResourceValues; @@ -80,6 +81,12 @@ public class IdXmlResourceValue implements XmlResourceValue { } @Override + public void writeResourceToClass(FullyQualifiedName key, + AndroidResourceClassWriter resourceClassWriter) { + resourceClassWriter.writeSimpleResource(key.type(), key.name()); + } + + @Override public int serializeTo(Path source, Namespaces namespaces, OutputStream output) throws IOException { Builder xmlValue = diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java index 1e708afb1c..a8e92e4b19 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java @@ -17,6 +17,7 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.android.AndroidDataWritingVisitor; import com.google.devtools.build.android.AndroidDataWritingVisitor.ValuesResourceDefinition; +import com.google.devtools.build.android.AndroidResourceClassWriter; import com.google.devtools.build.android.FullyQualifiedName; import com.google.devtools.build.android.XmlResourceValue; import com.google.devtools.build.android.XmlResourceValues; @@ -97,6 +98,12 @@ public class PluralXmlResourceValue implements XmlResourceValue { } @Override + public void writeResourceToClass(FullyQualifiedName key, + AndroidResourceClassWriter resourceClassWriter) { + resourceClassWriter.writeSimpleResource(key.type(), key.name()); + } + + @Override public int hashCode() { return Objects.hash(attributes, values); } diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java index ef4e822b4f..bc7c44a3f0 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java @@ -18,6 +18,7 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.android.AndroidDataWritingVisitor; import com.google.devtools.build.android.AndroidDataWritingVisitor.StartTag; +import com.google.devtools.build.android.AndroidResourceClassWriter; import com.google.devtools.build.android.FullyQualifiedName; import com.google.devtools.build.android.XmlResourceValue; import com.google.devtools.build.android.XmlResourceValues; @@ -211,6 +212,12 @@ public class SimpleXmlResourceValue implements XmlResourceValue { } @Override + public void writeResourceToClass(FullyQualifiedName key, + AndroidResourceClassWriter resourceClassWriter) { + resourceClassWriter.writeSimpleResource(key.type(), key.name()); + } + + @Override public int serializeTo(Path source, Namespaces namespaces, OutputStream output) throws IOException { SerializeFormat.DataValue.Builder builder = diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/StyleXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/StyleXmlResourceValue.java index 60abda34fe..1bd20dab77 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/StyleXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/StyleXmlResourceValue.java @@ -18,6 +18,7 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.android.AndroidDataWritingVisitor; import com.google.devtools.build.android.AndroidDataWritingVisitor.ValuesResourceDefinition; +import com.google.devtools.build.android.AndroidResourceClassWriter; import com.google.devtools.build.android.FullyQualifiedName; import com.google.devtools.build.android.XmlResourceValue; import com.google.devtools.build.android.XmlResourceValues; @@ -105,6 +106,12 @@ public class StyleXmlResourceValue implements XmlResourceValue { } @Override + public void writeResourceToClass(FullyQualifiedName key, + AndroidResourceClassWriter resourceClassWriter) { + resourceClassWriter.writeSimpleResource(key.type(), key.name()); + } + + @Override public int serializeTo(Path source, Namespaces namespaces, OutputStream output) throws IOException { SerializeFormat.DataValueXml.Builder xmlValueBuilder = diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/StyleableXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/StyleableXmlResourceValue.java index 82bf56584a..d37e34d5b0 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/StyleableXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/StyleableXmlResourceValue.java @@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.Iterables; import com.google.devtools.build.android.AndroidDataWritingVisitor; import com.google.devtools.build.android.AndroidDataWritingVisitor.ValuesResourceDefinition; +import com.google.devtools.build.android.AndroidResourceClassWriter; import com.google.devtools.build.android.FullyQualifiedName; import com.google.devtools.build.android.XmlResourceValue; import com.google.devtools.build.android.XmlResourceValues; @@ -136,6 +137,12 @@ public class StyleableXmlResourceValue implements XmlResourceValue { } @Override + public void writeResourceToClass(FullyQualifiedName key, + AndroidResourceClassWriter resourceClassWriter) { + resourceClassWriter.writeStyleableResource(key, attrs); + } + + @Override public int serializeTo(Path source, Namespaces namespaces, OutputStream output) throws IOException { return XmlResourceValues.serializeProtoDataValue( |