From f239a502e3bf9b9d78dbee3812144de2b81c56a8 Mon Sep 17 00:00:00 2001 From: Jason Cooke Date: Thu, 8 Mar 2012 10:14:53 -0800 Subject: [PATCH 1/2] Fix #227, #244, and #251 --- .../table/implementation/AtomReaderWriter.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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 e7b067f5d0ad..906c4bdc4a75 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,21 @@ 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); + if (!xmlr.isEndElement()) { + nextSignificant(xmlr); + } expect(xmlr, XMLStreamConstants.END_ELEMENT, name); } From 1782b8445e1463fb6c1e4f768c9475b45c2e9c68 Mon Sep 17 00:00:00 2001 From: Jason Cooke Date: Thu, 29 Mar 2012 13:27:35 -0700 Subject: [PATCH 2/2] Make fix suggested in code review feedback. --- .../services/table/implementation/AtomReaderWriter.java | 3 --- 1 file changed, 3 deletions(-) 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 906c4bdc4a75..525c2adf086a 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 @@ -291,9 +291,6 @@ private Map parseEntryProperties(XMLStreamReader xmlr) throws result.put(name, new Property().setEdmType(edmType).setValue(value)); - if (!xmlr.isEndElement()) { - nextSignificant(xmlr); - } expect(xmlr, XMLStreamConstants.END_ELEMENT, name); }