aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/xml
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-07-22 16:33:17 +0000
committerGravatar John Cater <jcater@google.com>2016-07-22 20:11:12 +0000
commitb6a650936b83b12c9efb9014faa403b94a3b5625 (patch)
tree0ad460ce12ffc2650d436ac9651e8ac26eb43e4c /src/tools/android/java/com/google/devtools/build/android/xml
parent238bf4e778a39df24ebebf8be79e205d7a65e1e4 (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')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/ArrayXmlResourceValue.java7
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/AttrXmlResourceValue.java62
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/IdXmlResourceValue.java7
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java7
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java7
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/StyleXmlResourceValue.java7
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/StyleableXmlResourceValue.java7
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(