james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark Daring" <cog...@chello.at>
Subject ClassCastException in LocalDelivery.java
Date Fri, 12 Sep 2003 12:30:15 GMT
Hi,

I'm getting a ClassCastExeption in the LocalDelivery-Mailet of James v. 2.1.3 when a message
from NotifySender.java is about to be delivered to a local sender of the original mail.
The Exception is thrown at this line:
"...
// Add qmail's de facto standard Delivered-To header
MimeMessage localMessage = new LocalMimeMessage(message);
..."

The stacktrace shows BodyPart.updateHeaders() as origin.
I guess this is a bug in the JavaMail-implementation v. 1.3 cause the sources of v. 1.2 assumes
that a MIME-type of mulitpart is always an instance of Multipart.
Look at this lines of MimeBodypart.java:

"...
static void updateHeaders(MimePart part) throws MessagingException {
DataHandler dh = part.getDataHandler();
if (dh == null) // Huh ?
    return;
try {
    String type = dh.getContentType();
    boolean composite = false;
    ContentType cType = new ContentType(type);

    if (cType.match("multipart/*")) {
    // If multipart, recurse
        composite = true;
        Object o = dh.getContent();
        ((MimeMultipart)o).updateHeaders();
    }
..."

The mail I've sent was type of "multipart/alternative". The message that is created around
my orignal mail in NotifySender  is type of "multipart/mixed" which causes no error, but when
it comes to parse my original mail the exception is thrown.  It`s a wild guess but I believe
that there's no DataHandler available for "multipart/alternative" at least not on my machine,
so the object that returns from dh.getContent() in the code snippet above is an InputStream-object
and not a Multipart-object.

I wanted to debug and looked for the source code of the JavaMail-API but I only found version
1.2 which is shipped with J2EE 1.3.1-SCSL along with JAF 1.0.1.

Has anybody the sources of JavaMail-1.3 and JAF-1.0.2 or does anybody know a DataHandler for
"multipart/alternative"?

Mark Daring!

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message