From 59f752acf40e2c145186769971180114f7e6d050 Mon Sep 17 00:00:00 2001 From: mguessan Date: Mon, 17 Sep 2012 08:00:49 +0000 Subject: [PATCH] Dav: implement multivalued property suppord in ExchangeDavMethod git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@2022 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- .../exchange/dav/ExchangeDavMethod.java | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/java/davmail/exchange/dav/ExchangeDavMethod.java b/src/java/davmail/exchange/dav/ExchangeDavMethod.java index 757a703e..c48d4ddd 100644 --- a/src/java/davmail/exchange/dav/ExchangeDavMethod.java +++ b/src/java/davmail/exchange/dav/ExchangeDavMethod.java @@ -178,14 +178,34 @@ public abstract class ExchangeDavMethod extends PostMethod { if (XMLStreamUtil.isStartTag(reader)) { Namespace namespace = Namespace.getNamespace(reader.getNamespaceURI()); String tagLocalName = reader.getLocalName(); - String tagContent = getTagContent(reader); - if (tagContent != null) { - multiStatusResponse.add(new DefaultDavProperty(tagLocalName, tagContent, namespace)); + if (reader.getAttributeCount() > 0 && "mv.string".equals(reader.getAttributeValue(0))) { + handleMultiValuedProperty(reader, multiStatusResponse); + } else { + String tagContent = getTagContent(reader); + if (tagContent != null) { + multiStatusResponse.add(new DefaultDavProperty(tagLocalName, tagContent, namespace)); + } } } } } + protected void handleMultiValuedProperty(XMLStreamReader reader, MultiStatusResponse multiStatusResponse) throws XMLStreamException { + String tagLocalName = reader.getLocalName(); + Namespace namespace = Namespace.getNamespace(reader.getNamespaceURI()); + ArrayList values = new ArrayList(); + while (reader.hasNext() && !XMLStreamUtil.isEndTag(reader, tagLocalName)) { + reader.next(); + if (XMLStreamUtil.isStartTag(reader)) { + String tagContent = getTagContent(reader); + if (tagContent != null) { + values.add(tagContent); + } + } + } + multiStatusResponse.add(new DefaultDavProperty(tagLocalName, values, namespace)); + } + protected String getTagContent(XMLStreamReader reader) throws XMLStreamException { String value = null; String tagLocalName = reader.getLocalName();