1package org.robolectric.res; 2 3import javax.xml.stream.XMLStreamException; 4import javax.xml.stream.XMLStreamReader; 5 6public class StaxValueLoader extends StaxLoader { 7 private final StringBuilder buf = new StringBuilder(); 8 protected String name; 9 10 public StaxValueLoader(PackageResourceTable resourceTable, String attrType, ResType resType) { 11 super(resourceTable, attrType, resType); 12 13 if (resType == ResType.CHAR_SEQUENCE) { 14 addHandler("*", new TextCollectingNodeHandler(buf)); 15 } 16 } 17 18 @Override 19 public void onStart(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { 20 name = xml.getAttributeValue(null, "name"); 21 buf.setLength(0); 22 } 23 24 @Override 25 public void onCharacters(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { 26 buf.append(xml.getText()); 27 } 28 29 @Override 30 public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { 31 String s = buf.toString(); 32 if (resType == ResType.CHAR_SEQUENCE) { 33 s = StringResources.processStringResources(s); 34 } 35 resourceTable.addResource(attrType, name, new TypedResource<>(s, resType, xmlContext)); 36 } 37} 38