Improve the error message for simple values by including the value.

RELNOTES: None

PiperOrigin-RevId: 151630049
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 0cbe589..0beb9a2 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
@@ -361,4 +361,9 @@
   public DataValue update(DataSource source) {
     return createWithNamespaces(source, xml, namespaces);
   }
+
+  @Override
+  public String asConflictString() {
+    return source.asConflictString();
+  }
 }
diff --git a/src/tools/android/java/com/google/devtools/build/android/DataValue.java b/src/tools/android/java/com/google/devtools/build/android/DataValue.java
index 2259078..b1d24f3 100644
--- a/src/tools/android/java/com/google/devtools/build/android/DataValue.java
+++ b/src/tools/android/java/com/google/devtools/build/android/DataValue.java
@@ -35,4 +35,7 @@
       DataKey key, DataSourceTable sourceTable, OutputStream output) throws IOException;
   
   DataValue update(DataSource source);
+
+  /** Provides a representation of the value suitable for a conflict message. */
+  String asConflictString();
 }
diff --git a/src/tools/android/java/com/google/devtools/build/android/DataValueFile.java b/src/tools/android/java/com/google/devtools/build/android/DataValueFile.java
index 1453bf5..41bcf76 100644
--- a/src/tools/android/java/com/google/devtools/build/android/DataValueFile.java
+++ b/src/tools/android/java/com/google/devtools/build/android/DataValueFile.java
@@ -125,4 +125,9 @@
   public DataValue update(DataSource source) {
     return of(source);
   }
+
+  @Override
+  public String asConflictString() {
+    return source.asConflictString();
+  }
 }
diff --git a/src/tools/android/java/com/google/devtools/build/android/MergeConflict.java b/src/tools/android/java/com/google/devtools/build/android/MergeConflict.java
index fe85dd4..2e1fcbe 100644
--- a/src/tools/android/java/com/google/devtools/build/android/MergeConflict.java
+++ b/src/tools/android/java/com/google/devtools/build/android/MergeConflict.java
@@ -69,8 +69,8 @@
     return String.format(
         CONFLICT_MESSAGE,
         dataKey.toPrettyString(),
-        primary.source().getPath(),
-        overwritten.source().getPath());
+        primary.asConflictString(),
+        overwritten.asConflictString());
   }
 
   public DataKey dataKey() {
diff --git a/src/tools/android/java/com/google/devtools/build/android/XmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/XmlResourceValue.java
index 35517ca..bcbf99a 100644
--- a/src/tools/android/java/com/google/devtools/build/android/XmlResourceValue.java
+++ b/src/tools/android/java/com/google/devtools/build/android/XmlResourceValue.java
@@ -53,4 +53,7 @@
   void writeResourceToClass(
       FullyQualifiedName key,
       AndroidResourceClassWriter resourceClassWriter);
+
+  /** Returns a representation of the xml value as a string suitable for conflict messages. */
+  String asConflictStringWith(DataSource source);
 }
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 65e8e03..721cd29 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
@@ -215,4 +215,9 @@
       throw new XMLStreamException(e.getMessage(), start.getLocation());
     }
   }
+
+  @Override
+  public String asConflictStringWith(DataSource source) {
+    return source.asConflictString();
+  }
 }
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 e9578d6..252b4cb 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
@@ -756,4 +756,9 @@
     public void writeToClass(AndroidResourceClassWriter writer) {
     }
   }
+
+  @Override
+  public String asConflictStringWith(DataSource source) {
+    return source.asConflictString();
+  }
 }
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 16bc0a5..d0a4114 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
@@ -146,4 +146,9 @@
     }
     throw new IllegalArgumentException(resourceValue + "is not combinable with " + this);
   }
+
+  @Override
+  public String asConflictStringWith(DataSource source) {
+    return source.asConflictString();
+  }
 }
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 c2fc64e..faf418a 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
@@ -156,4 +156,9 @@
   public XmlResourceValue combineWith(XmlResourceValue value) {
     throw new IllegalArgumentException(this + " is not a combinable resource.");
   }
+  
+  @Override
+  public String asConflictStringWith(DataSource source) {
+    return source.asConflictString();
+  }
 }
diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/PublicXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/PublicXmlResourceValue.java
index fe1ae7c..9399c64 100644
--- a/src/tools/android/java/com/google/devtools/build/android/xml/PublicXmlResourceValue.java
+++ b/src/tools/android/java/com/google/devtools/build/android/xml/PublicXmlResourceValue.java
@@ -173,4 +173,9 @@
     }
     return of(combined);
   }
+  
+  @Override
+  public String asConflictStringWith(DataSource source) {
+    return source.asConflictString();
+  }
 }
diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/ResourcesAttribute.java b/src/tools/android/java/com/google/devtools/build/android/xml/ResourcesAttribute.java
index b1d9740..e92565f 100644
--- a/src/tools/android/java/com/google/devtools/build/android/xml/ResourcesAttribute.java
+++ b/src/tools/android/java/com/google/devtools/build/android/xml/ResourcesAttribute.java
@@ -114,4 +114,12 @@
       FullyQualifiedName key, AndroidResourceClassWriter resourceClassWriter) {
     // This is an xml attribute and does not have any java representation.
   }
+
+  @Override
+  public String asConflictStringWith(DataSource source) {
+    if (value != null) {
+      return String.format(" %s (with value %s)", source.asConflictString(), value);
+    }
+    return source.asConflictString();
+  }
 }
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 d560187..edcfe3f 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
@@ -266,4 +266,12 @@
   public XmlResourceValue combineWith(XmlResourceValue value) {
     throw new IllegalArgumentException(this + " is not a combinable resource.");
   }
+  
+  @Override
+  public String asConflictStringWith(DataSource source) {
+    if (value != null) {
+      return String.format(" %s (with value %s)", source.asConflictString(), value);
+    }
+    return source.asConflictString();
+  }
 }
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 07d60ac..bfc02a42 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
@@ -153,4 +153,9 @@
   public XmlResourceValue combineWith(XmlResourceValue value) {
     throw new IllegalArgumentException(this + " is not a combinable resource.");
   }
+  
+  @Override
+  public String asConflictStringWith(DataSource source) {
+    return source.asConflictString();
+  }
 }
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 6d90a0a..9347887 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
@@ -216,4 +216,9 @@
     }
     return of(combined);
   }
+
+  @Override
+  public String asConflictStringWith(DataSource source) {
+    return source.asConflictString();
+  }
 }