From a702183d1a2fc51f4b64f4d0de964169d57abb67 Mon Sep 17 00:00:00 2001 From: mguessan Date: Mon, 12 Jul 2010 23:09:27 +0000 Subject: [PATCH] CardDav: make getContactPhoto more robust git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1178 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- .../davmail/exchange/dav/DavExchangeSession.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/java/davmail/exchange/dav/DavExchangeSession.java b/src/java/davmail/exchange/dav/DavExchangeSession.java index 9b9540b2..0a737457 100644 --- a/src/java/davmail/exchange/dav/DavExchangeSession.java +++ b/src/java/davmail/exchange/dav/DavExchangeSession.java @@ -43,11 +43,10 @@ import org.apache.jackrabbit.webdav.property.DavProperty; import org.apache.jackrabbit.webdav.property.DavPropertyNameSet; import org.apache.jackrabbit.webdav.property.DavPropertySet; -import javax.mail.BodyPart; import javax.mail.MessagingException; -import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; +import javax.mail.internet.MimePart; import java.io.*; import java.net.HttpURLConnection; import java.net.NoRouteToHostException; @@ -1163,13 +1162,18 @@ public class DavExchangeSession extends ExchangeSession { inputStream = method.getResponseBodyAsStream(); } MimeMessage mimeMessage = new MimeMessage(null, inputStream); - BodyPart photoBodyPart = ((MimeMultipart) mimeMessage.getContent()).getBodyPart(1); + MimePart photoBodyPart; + if (mimeMessage.getContent() instanceof MimeMultipart) { + photoBodyPart = (MimePart) ((MimeMultipart) mimeMessage.getContent()).getBodyPart(1); + } else { + photoBodyPart = (MimePart) mimeMessage; + } contactPhoto = new ContactPhoto(); String contentType = photoBodyPart.getContentType(); contactPhoto.type = contentType.substring(0, contentType.indexOf(';')); ByteArrayOutputStream baos = new ByteArrayOutputStream(); - InputStream partInputStream = ((MimeBodyPart) photoBodyPart).getInputStream(); + InputStream partInputStream = photoBodyPart.getInputStream(); byte[] bytes = new byte[8192]; int length; while ((length = partInputStream.read(bytes)) > 0) {