diff --git a/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/table/implementation/AtomReaderWriter.java b/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/table/implementation/AtomReaderWriter.java index e7b067f5d0ad0..525c2adf086ae 100644 --- a/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/table/implementation/AtomReaderWriter.java +++ b/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/table/implementation/AtomReaderWriter.java @@ -80,6 +80,9 @@ public void write(XMLStreamWriter writer) throws XMLStreamException { if (value != null) { writer.writeCharacters(value); } + else { + writer.writeAttribute("m:null", "true"); + } writer.writeEndElement(); // property name @@ -276,12 +279,18 @@ private Map parseEntryProperties(XMLStreamReader xmlr) throws String edmType = xmlr.getAttributeValue(null, "type"); xmlr.next(); - String serializedValue = xmlr.getText(); + + // Use concatenation instead of StringBuilder as most text is just one element. + String serializedValue = ""; + while (!xmlr.isEndElement()) { + serializedValue += xmlr.getText(); + xmlr.next(); + } + Object value = edmValueConverter.deserialize(edmType, serializedValue); result.put(name, new Property().setEdmType(edmType).setValue(value)); - nextSignificant(xmlr); expect(xmlr, XMLStreamConstants.END_ELEMENT, name); }