From b81fa5331aa413a715921bed2b171f127acff541 Mon Sep 17 00:00:00 2001 From: mguessan Date: Thu, 20 May 2010 13:07:00 +0000 Subject: [PATCH] EWS: retrieve and decode MIME content git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1061 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/exchange/ews/EWSMethod.java | 30 +++++++++++++++---- .../davmail/exchange/ews/GetItemMethod.java | 4 +-- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/java/davmail/exchange/ews/EWSMethod.java b/src/java/davmail/exchange/ews/EWSMethod.java index 034b5424..ccb28893 100644 --- a/src/java/davmail/exchange/ews/EWSMethod.java +++ b/src/java/davmail/exchange/ews/EWSMethod.java @@ -18,6 +18,7 @@ */ package davmail.exchange.ews; +import org.apache.commons.codec.binary.Base64; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpConnection; import org.apache.commons.httpclient.HttpState; @@ -47,12 +48,15 @@ public abstract class EWSMethod extends PostMethod { protected FolderIdType folderId; protected FolderIdType parentFolderId; protected ItemIdType itemId; - protected HashSet additionalProperties = null; + protected HashSet additionalProperties; protected final String itemType; protected final String methodName; protected final String responseCollectionName; + protected byte[] mimeContent; + protected List responseItems; + protected String errorDetail; /** * Build EWS method @@ -215,13 +219,22 @@ public abstract class EWSMethod extends PostMethod { } } - protected List responseItems; - protected String errorDetail; - public List getResponseItems() { return responseItems; } + public Item getResponseItem() { + if (responseItems != null && responseItems.size() == 1) { + return responseItems.get(0); + } else { + return null; + } + } + + public byte[] getMimeContent() { + return mimeContent; + } + protected String handleTag(XMLStreamReader reader, String localName) throws XMLStreamException { String result = null; int event = reader.getEventType(); @@ -270,6 +283,8 @@ public abstract class EWSMethod extends PostMethod { String value = null; if ("ExtendedProperty".equals(tagLocalName)) { addExtendedPropertyValue(reader, item); + } else if (tagLocalName.endsWith("MimeContent")) { + handleMimeContent(reader); } else { if (tagLocalName.endsWith("Id")) { value = getAttributeValue(reader, "Id"); @@ -286,10 +301,15 @@ public abstract class EWSMethod extends PostMethod { return item; } + protected void handleMimeContent(XMLStreamReader reader) throws XMLStreamException { + byte[] base64MimeContent = reader.getElementText().getBytes(); + mimeContent = Base64.decodeBase64(base64MimeContent); + } + protected void addExtendedPropertyValue(XMLStreamReader reader, Item item) throws XMLStreamException { String propertyTag = null; String propertyValue = null; - while (reader.hasNext() && !(isEndTag(reader, "ExtendedProperty"))) { + while (reader.hasNext() && !(isEndTag(reader, "ExtendedProperty"))) { reader.next(); if (reader.getEventType() == XMLStreamConstants.START_ELEMENT) { String tagLocalName = reader.getLocalName(); diff --git a/src/java/davmail/exchange/ews/GetItemMethod.java b/src/java/davmail/exchange/ews/GetItemMethod.java index 9989639b..7afbe38e 100644 --- a/src/java/davmail/exchange/ews/GetItemMethod.java +++ b/src/java/davmail/exchange/ews/GetItemMethod.java @@ -22,10 +22,10 @@ package davmail.exchange.ews; * Get Item method. */ public class GetItemMethod extends EWSMethod { - public GetItemMethod(BaseShapeType baseShape, FolderIdType folderId, boolean includeMimeContent) { + public GetItemMethod(BaseShapeType baseShape, ItemIdType itemId, boolean includeMimeContent) { super("Item", "GetItem"); this.baseShape = baseShape; - this.folderId = folderId; + this.itemId = itemId; this.includeMimeContent = includeMimeContent; }