can anyone help on the below issue in EWS,
I am getting an error java.lang.ClassCastException: microsoft.exchange.webservices.data.property.complex.ItemAttachment cannot be cast to microsoft.exchange.webservices.data.property.complex.FileAttachment
private static void readAttachment(ExchangeService service, Folder folder, int n) {
ItemView view = new ItemView(n);
FindItemsResults<Item> findResults;
try {
findResults = service.findItems(folder.getId(), view);
System.out.println("findResults-->"+findResults.getTotalCount());
for (Item item : findResults) {
EmailMessage email;
email = EmailMessage.bind(service, item.getId(), new PropertySet(BasePropertySet.IdOnly, ItemSchema.Attachments));
System.out.println("email.getAttachments().getCount()-->"+email.getAttachments().getCount());
//email.load();
for (Attachment it : email.getAttachments()) {
System.out.println(it.getName());
FileAttachment iAttachment = (FileAttachment) it;
//iAttachment.load( "C:\\FileLocation\\" + iAttachment .getName());
}
}
} catch (ServiceLocalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Both FileAttachment
and ItemAttachment
are direct subclasses of Attachment
class. It seams some of the attachments are instance of ItemAttachment
and you are trying to cast them to FileAttachment
. Since FileAttachment
class is not a subclass of ItemAttachment
you cannot cast to it.
With an example:
public class Animal { }
public class Dog extends Animal { }
public class Cat extends Animal { }
Animal a = new Dog();
Cat c = (Cat)a; // this line produces ClassCastException as in your case
in this example you cannot