aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-07-12 00:23:31 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-07-12 11:17:59 +0000
commit522551715b7886a9f4ca8d58262106de6a213aff (patch)
tree6f7f10d9143e4176d68b55b0811264e3f7d5003e /src/tools/android
parent532c2f0c159b8b41cb5caddb550fae358c79a757 (diff)
* Standardize attribute storage in the proto
* Add attributes to PluralXmlResourceValue -- MOS_MIGRATED_REVID=127147486
Diffstat (limited to 'src/tools/android')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/DataResourceXml.java2
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/XmlResourceValues.java6
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/proto/serialize_format.proto1
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/ArrayXmlResourceValue.java4
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java39
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java4
6 files changed, 41 insertions, 15 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/DataResourceXml.java b/src/tools/android/java/com/google/devtools/build/android/DataResourceXml.java
index 242a74b881..a72d0633c7 100644
--- a/src/tools/android/java/com/google/devtools/build/android/DataResourceXml.java
+++ b/src/tools/android/java/com/google/devtools/build/android/DataResourceXml.java
@@ -171,7 +171,7 @@ public class DataResourceXml implements DataResource {
case ARRAY:
return ArrayXmlResourceValue.parseArray(eventReader, start);
case PLURALS:
- return XmlResourceValues.parsePlurals(eventReader);
+ return XmlResourceValues.parsePlurals(eventReader, start);
case ATTR:
return XmlResourceValues.parseAttr(eventReader, start);
case LAYOUT:
diff --git a/src/tools/android/java/com/google/devtools/build/android/XmlResourceValues.java b/src/tools/android/java/com/google/devtools/build/android/XmlResourceValues.java
index c154a196ff..411be94ba3 100644
--- a/src/tools/android/java/com/google/devtools/build/android/XmlResourceValues.java
+++ b/src/tools/android/java/com/google/devtools/build/android/XmlResourceValues.java
@@ -96,7 +96,8 @@ public class XmlResourceValues {
return inputFactoryInstance;
}
- static XmlResourceValue parsePlurals(XMLEventReader eventReader) throws XMLStreamException {
+ static XmlResourceValue parsePlurals(XMLEventReader eventReader, StartElement start)
+ throws XMLStreamException {
ImmutableMap.Builder<String, String> values = ImmutableMap.builder();
for (XMLEvent element = nextTag(eventReader);
!isEndTag(element, TAG_PLURALS);
@@ -112,7 +113,8 @@ public class XmlResourceValues {
contents == null ? "" : contents);
}
}
- return PluralXmlResourceValue.of(values.build());
+ return PluralXmlResourceValue.createWithAttributesAndValues(
+ ImmutableMap.copyOf(parseTagAttributes(start)), values.build());
}
static XmlResourceValue parseStyle(XMLEventReader eventReader, StartElement start)
diff --git a/src/tools/android/java/com/google/devtools/build/android/proto/serialize_format.proto b/src/tools/android/java/com/google/devtools/build/android/proto/serialize_format.proto
index e546aa0ad7..66f418ee90 100644
--- a/src/tools/android/java/com/google/devtools/build/android/proto/serialize_format.proto
+++ b/src/tools/android/java/com/google/devtools/build/android/proto/serialize_format.proto
@@ -75,4 +75,5 @@ message DataValueXml {
optional string value = 5;
optional string value_type = 6;
repeated DataKey references = 7;
+ map<string, string> attribute = 8;
}
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 3819d86998..5c9d64b637 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
@@ -115,7 +115,7 @@ public class ArrayXmlResourceValue implements XmlResourceValue {
return of(
ArrayType.valueOf(proto.getValueType()),
proto.getListValueList(),
- ImmutableMap.copyOf(proto.getMappedStringValue()));
+ ImmutableMap.copyOf(proto.getAttribute()));
}
@Override
@@ -147,7 +147,7 @@ public class ArrayXmlResourceValue implements XmlResourceValue {
SerializeFormat.DataValueXml.newBuilder()
.addAllListValue(values)
.setType(SerializeFormat.DataValueXml.XmlType.ARRAY)
- .putAllMappedStringValue(attributes)
+ .putAllAttribute(attributes)
.setValueType(arrayType.toString())));
}
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 64cc8e8c64..29b2a2608f 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
@@ -54,19 +54,36 @@ public class PluralXmlResourceValue implements XmlResourceValue {
private final ImmutableMap<String, String> values;
- private PluralXmlResourceValue(ImmutableMap<String, String> values) {
+ private final ImmutableMap<String, String> attributes;
+
+ private PluralXmlResourceValue(
+ ImmutableMap<String, String> attributes, ImmutableMap<String, String> values) {
+ this.attributes = attributes;
this.values = values;
}
- public static XmlResourceValue of(ImmutableMap<String, String> values) {
- return new PluralXmlResourceValue(values);
+ public static XmlResourceValue createWithoutAttributes(ImmutableMap<String, String> values) {
+ return createWithAttributesAndValues(ImmutableMap.<String, String>of(), values);
+ }
+
+ public static XmlResourceValue createWithAttributesAndValues(
+ ImmutableMap<String, String> attributes, ImmutableMap<String, String> values) {
+ return new PluralXmlResourceValue(attributes, values);
}
@Override
public void write(
FullyQualifiedName key, Path source, AndroidDataWritingVisitor mergedDataWriter) {
+
ValuesResourceDefinition definition =
- mergedDataWriter.define(key).derivedFrom(source).startTag(PLURALS).named(key).closeTag();
+ mergedDataWriter
+ .define(key)
+ .derivedFrom(source)
+ .startTag(PLURALS)
+ .named(key)
+ .addAttributesFrom(attributes.entrySet())
+ .closeTag();
+
for (Entry<String, String> plural : values.entrySet()) {
definition =
definition
@@ -83,7 +100,7 @@ public class PluralXmlResourceValue implements XmlResourceValue {
@Override
public int hashCode() {
- return values.hashCode();
+ return Objects.hash(attributes, values);
}
@Override
@@ -92,17 +109,22 @@ public class PluralXmlResourceValue implements XmlResourceValue {
return false;
}
PluralXmlResourceValue other = (PluralXmlResourceValue) obj;
- return Objects.equals(values, other.values);
+ return Objects.equals(values, other.values) && Objects.equals(attributes, other.attributes);
}
@Override
public String toString() {
- return MoreObjects.toStringHelper(getClass()).add("values", values).toString();
+ return MoreObjects.toStringHelper(getClass())
+ .add("values", values)
+ .add("attributes", attributes)
+ .toString();
}
@SuppressWarnings("deprecation")
public static XmlResourceValue from(SerializeFormat.DataValueXml proto) {
- return of(ImmutableMap.copyOf(proto.getMappedStringValue()));
+ return createWithAttributesAndValues(
+ ImmutableMap.copyOf(proto.getAttribute()),
+ ImmutableMap.copyOf(proto.getMappedStringValue()));
}
@Override
@@ -115,6 +137,7 @@ public class PluralXmlResourceValue implements XmlResourceValue {
builder
.getXmlValueBuilder()
.setType(XmlType.PLURAL)
+ .putAllAttribute(attributes)
.putAllMappedStringValue(values))
.build();
value.writeDelimitedTo(output);
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 7feb695fc4..3e308a1fab 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
@@ -209,7 +209,7 @@ public class SimpleXmlResourceValue implements XmlResourceValue {
public static XmlResourceValue from(SerializeFormat.DataValueXml proto) {
return of(
Type.valueOf(proto.getValueType()),
- ImmutableMap.copyOf(proto.getMappedStringValue()),
+ ImmutableMap.copyOf(proto.getAttribute()),
proto.hasValue() ? proto.getValue() : null);
}
@@ -223,7 +223,7 @@ public class SimpleXmlResourceValue implements XmlResourceValue {
.setType(SerializeFormat.DataValueXml.XmlType.SIMPLE)
// TODO(corysmith): Find a way to avoid writing strings to the serialized format
// it's inefficient use of space and costs more when deserializing.
- .putAllMappedStringValue(attributes);
+ .putAllAttribute(attributes);
if (value != null) {
xmlValueBuilder.setValue(value);
}