Re: Folder.copyMessages

remi__ <[email protected]> Thu, 31 May 2007 05:09:14 -0700 (PDT)
Newsgroups gmane.comp.java.classpath.extensions.javamail
Message-ID <[email protected]>
I get that:

java.lang.NullPointerException
	at
gnu.mail.providers.imap.IMAPMultipartDataSource.<init>(IMAPMultipartDataSource.java:60)
	at gnu.mail.providers.imap.IMAPMessage.getDataHandler(IMAPMessage.java:619)
	at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1618)
	at gnu.mail.providers.imap.IMAPMessage.writeTo(IMAPMessage.java:859)
	at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1553)
	at gnu.mail.providers.imap.IMAPMessage.writeTo(IMAPMessage.java:845)
	at gnu.mail.providers.imap.IMAPFolder.appendMessages(IMAPFolder.java:712)
	at javax.mail.Folder.copyMessages(Folder.java:669)
	at TestDeplacementMailGNU112.moveMail(TestDeplacementMailGNU112.java:63)
	at TestDeplacementMailGNU112.test(TestDeplacementMailGNU112.java:47)
	at TestDeplacementMailGNU112.main(TestDeplacementMailGNU112.java:31)

copyMessage calls appendsMessage but some Folder opening and closing actions
are done too before and after the call ...



Chris Burdess-2 wrote:
> 
> remi__ wrote:
>> I am writing some code to move a mail from a folder to another. The  
>> idea is
>> to copy it to another folder and then delete the orignal.
>>
>> Is that normal that this code:
>>
>> private void moveMail(Message message){
>> 	try {
>> 		Folder dossierSrc = message.getFolder();
>> 		Store store = dossierSrc.getStore();
>> 		Folder dossierDest = store.getFolder("processedMails");
>> 		if (dossierDest != null && dossierDest.exists()) {
>> 			dossierSrc.copyMessages(new Message[]{message}, dossierDest);
>> 			message.setFlag(Flags.Flag.DELETED,true);
>> 		}
>> 	} catch (MessagingException e) {
>> 			e.printStackTrace();
>> 	}
>> }
>>
>> leads to a NPE:
>>
>> java.lang.NullPointerException
>> 	at
>> gnu.mail.providers.imap.IMAPMultipartDataSource.getInputStream 
>> (IMAPMultipartDataSource.java:102)
>> 	at javax.activation.DataHandler.writeTo(DataHandler.java:215)
>> 	at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1618)
>> 	at gnu.mail.providers.imap.IMAPMessage.writeTo(IMAPMessage.java:859)
>> 	at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1553)
>> 	at gnu.mail.providers.imap.IMAPMessage.writeTo(IMAPMessage.java:845)
>> 	at gnu.mail.providers.imap.IMAPFolder.appendMessages 
>> (IMAPFolder.java:712)
>> 	at javax.mail.Folder.copyMessages(Folder.java:669)
>> 	at TestDeplacementMailGNU112.moveMail 
>> (TestDeplacementMailGNU112.java:63)
>> 	at TestDeplacementMailGNU112.test(TestDeplacementMailGNU112.java:47)
>> 	at TestDeplacementMailGNU112.main(TestDeplacementMailGNU112.java:31)
>>
>>
>> Whereas that piece of code works fine:
>>
>> private void moveMail(Message message){
>> 	try {
>> 		Folder dossierSrc = message.getFolder();
>> 		Store store = dossierSrc.getStore();
>> 		Folder dossierDest = store.getFolder("processedMails");
>> 		if (dossierDest != null && dossierDest.exists()) {
>> 			dossierDest.appendMessages(new Message[]{message});
>> 			message.setFlag(Flags.Flag.DELETED,true);
>> 		}
>> 	} catch (MessagingException e) {
>> 			e.printStackTrace();
>> 	}
>> }
> 
> That sounds very strange, because copyMessages simply calls  
> appendMessages internally.
> 
> Could you try with CVS HEAD? I've added a null pointer check at a  
> critical point.
> 
> 
> _______________________________________________
> Classpathx-javamail mailing list
> [email protected]
> http://lists.gnu.org/mailman/listinfo/classpathx-javamail
> 
> 

-- 
View this message in context: http://www.nabble.com/Folder.copyMessages-tf3845701.html#a10892607
Sent from the classpathx-javamail mailing list archive at Nabble.com.