james-server-dev mailing list archives

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

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

Markus Wiederkehr commented on MIME4J-72:


Indeed there seems to be a lot to disagree about. If disagreement is so common on this list
then please let me continue ;-)

Regarding the dispose method.. With finalizers being the flawed thing they are explicit close/dispose/destroy
methods are the closest thing in Java we have to a destructor. Please take a look at http://docs.google.com/View?docid=dffxznxr_1nmsqkz,
a proposal for Java 7 from Joshua Bloch. That interface Foo he talks about corresponds to
the Disposable interface I have introduced in Mime4j.

So this is not something I have invented or has never been heard of before. I like separation
of concerns but why should something as elementary as object destruction be a separate concern?

Regarding the visitor. Please take a look at the GoF Design Patterns book page 339, the section
"Who is reponsible for traversing the object structure?" You can put the traversal in, I quote,
"the object structure, in the visitor or in a separate iterator object". And later "The main
reason to put the traversal in the visitor is to implement a particular complex traversal...".
That complex traversal is what we need and there is no common pattern.

> 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