james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oleg Kalnichevski (JIRA)" <server-...@james.apache.org>
Subject [jira] Commented: (MIME4J-72) Provide a means to dispose a Message
Date Fri, 10 Oct 2008 13:09:44 GMT

    [ https://issues.apache.org/jira/browse/MIME4J-72?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12638548#action_12638548

Oleg Kalnichevski commented on MIME4J-72:


> I like separation of concerns but why should something as elementary as object destruction
be a separate concern? 

Why _all_ MIME classes (Message, Entity, Part) must implement an extra method that applicable
to a few Part implementations?

> You dispose of a message for the same reasons you close an I/O stream. 

Not all Message instances are generated by reading data from an I/O stream. Why _all_ of them
should be disposable?

> It has to be an inherent part of the API. 


> Therefore it is impossible to determine if binary part #3 belongs to multipart #1 or
multipart #2

They would have different parents, wouldn't they?

> If I wanted to do instance-of I would not need a visitor in the first place

What is the point of trying to make a Swiss Army knife out of everything and failing in the
process? Your implementation currently does seem to correctly handle embedded messages because
it does not check the type of individual Parts in a Multipart entities.

Clearly, one Visitor interface just can't satisfy everyone. I suggest that we decouple the
traversal logic from Message / Entity / Part API, so one could have different iterator / walker
implementations invoking different Visitor interfaces on items they traverse.


> Provide a means to dispose a Message
> ------------------------------------
>                 Key: MIME4J-72
>                 URL: https://issues.apache.org/jira/browse/MIME4J-72
>             Project: JAMES Mime4j
>          Issue Type: Improvement
>    Affects Versions: 0.5
>            Reporter: Markus Wiederkehr
>            Assignee: Robert Burrell Donkin
>         Attachments: entityvisitor.patch, mime4j-disposable.patch, mime4j-dispose-finalize.patch,
mime4j-dispose-no-clutter.patch, mime4j-dispose-visitor.patch
> Currently an org.apache.james.mime4j.message.Message uses temporary files to store text
and binary attachments of the message. Unfortunately a Message cannot be disposed of explicitly.
Even when it eventually gets garbage collected the temp files continue to exist until the
VM exits.
> If the VM runs for a long time and a lot of e-mails get processed this can become a major
> For this reason I think that class Entity and interface Body should both have a method
to dispose of the object. Multipart should dispatch a dispose-call to its list of body parts.
A BodyPart should dispose of its body and concrete Body implementation such as TempFileTextBody
should ultimately invoke delete() on the backing TempFile.
> Last but not least SimpleTempStorage$SimpleTempFile should not silently ignore delete-calls.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org

View raw message