[
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:
-----------------------------------------
@Markus
> 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.
Why?
> 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.
Oleg
> 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 problem.
> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]