Discussion moved over from James Dev as per Stefano's suggestion.

-------- Original Message --------
Subject:        Re: [mailets] Proposal: MailetContext enhancement
Date:   Sun, 18 Dec 2011 21:04:10 +0100
From:   Stefano Bagnara <[email protected]>
Reply-To:       James Developers List <[email protected]>
To:     James Developers List <[email protected]>



2011/12/18 Steve Brewin<[email protected]>:
 Hi

 To decouple org.apache.james.transport mailets from
 org.apache.james.core.MailImpl the following methods need to be added to
 org.apache.mailet.Mail:

 setRemoteAddr(String);

 setRemoteHost(String);

 setSender(MailAddress);

 Nothing wrong with this in my view. They probably should have been there all
 along!

What about adding these two?
- Mail createMail(MailAddress sender) =>  sets remoteaddr/host to the
local james address
- Mail cloneMail(Mail orig, MailAddress sender) =>  copies remoteaddr/host

I don't like to add too many public methods if they are not needed.
For what I remember the 2 methods above satisfy the current use case

BTW this is a mailet issue and we should move to the mailet ml and to
mailet-api JIRA, so that other interested parties (if any) can add
their opinion.
Here is an old proposal I just found:
https://issues.apache.org/jira/browse/MAILET-31

Stefano

 The Mailets coupled to MailImpl are:

 AbstractRecipientRewriteTable

 AbstractRedirect

 DSNBounce

 Each uses new MailImpl(Mail) to create a new instance of Mail. This would
 change to getMailetContext().createMail(Mail).

 If we are to update MailetContext, which will require a new version of
 Mailet API,  we should make the changes to Mail in the same version.

 Opinions?

 Cheers
 --Steve

 On 18/12/2011 11:45, Steve Brewin wrote:

 Missed...

 createMail(Mail mail, Mail.State state)

 ...to satisfy the a need to create a copy of a Mail. I'll review the needs
 of the org.apache.james.transport.mailets to make sure we haven't missed
 anything else!

 Cheers
 --Steve


 On 18/12/2011 10:25, Norman Maurer wrote:

 Yeah I think the latter makes most sense.

 Bye
 Norman

 2011/12/18, Steve Brewin<[email protected]>:

 Hi Norman

 Well I was trying to be less radical, but a createMail() method or
 methods as a replacement for the sendMail() ones is a better solution.

 If we were to have just a single create method, it would be:

 createMail(MimeMessage message, Mail.State state)

 Note that I have changed 'state' from a simple String to an enum.

 As the API deals in things like MailAddress, it is perhaps reasonable to
 add:

 createMail(MailAddress sender, Collection<MailAddress>     recipients,
 MimeMessage message, Mail.State state)

 The other variants are just helper methods that should not be forced on
 an API. They could be implemented in Mailet Base if someone cared to do
 so, as could the old sendMail() methods.

 Cheers
 --Steve

 On 18/12/2011 08:52, Norman Maurer wrote:

 Hi Steve,

 I think it would make more sense to add a method to the MailetContext
 to
 create a new Mail object, so we could also make some other mailets that
 are
 currently using MailImpl directly independent of James Server.

 So I'm in favor to add such a method and @deprecate all the
 sendMail(..)
 methods except the one the take a Mail object as parameter.

 WDYT ?

 Norman


 2011/12/17 Steve Brewin<[email protected]>

 For a new Mail, using MailetContext.sendMail(Mail mail) requires that
 the
 mailet knows how to create an implementation of Mail that is specific
 to
 the server hosting the Mailets. This breaks Mailet portability, which
 is
 why the other sendMail() methods exist.

 MailetContext.sendMail(Mail mail)  exists to resend an existing Mail,
 the
 others are for creating and sending new Mails.

 --Steve


 On 17/12/2011 19:53, Norman Maurer wrote:

 I wonder why you can not use :

 MailetContext.sendMail(Mail mail)

 Can you give some more details ?

 Bye,
 Norman

 2011/12/17 Steve Brewin<[email protected]>

    Hi

 Interface org.apache.mailet.****MailetContext defines four
 sendMail()

 methods that construct and send an org.apache.mailet.Mail instance.
 None
 of
 these methods provide the ability to specify the mail attributes
 that
 should be attached.

 I propose adding a further four methods mirroring the existing ones
 each
 with an extra parameter:

 @param attributes
          The Mail attributes to attach

 This functionality is generally useful. The lack of it is a blocker
 to
 some SieveMailboxMailet enhancements.

 Q1: Are there any objections to this?

 Q2: The release version of the Mailet API is 2.4, so logically we
 should
 step to 2.5. There is already a 2.5 version in trunk containing a
 few
 changes. We can:

 a) Combine the existing changes with these proposed changes
 b) Park the existing changes and make 2.5 = 2.4 plus these proposed
 changes
 c) Something else?

 Opinions please.

 Q3: Whatever we decide to do for Q2, for JSieve development to
 proceed
 this version of the Mailet API needs to be implemented by
 JamesMailetContext in James Server trunk. Are there any objections
 to
 this?

 Cheers
 --Steve


 ------------------------------****----------------------------**
 --**---------
 To unsubscribe, e-mail: server-dev-unsubscribe@james.****apache.org<

 
server-dev-**[email protected]<[email protected]>
 For additional commands, e-mail:
 [email protected].****org<

 server-dev-help@james.**apache.org<[email protected]>>




 ------------------------------**------------------------------**---------
 To unsubscribe, e-mail:

 
server-dev-unsubscribe@james.**apache.org<[email protected]>
 For additional commands, e-mail:
 [email protected].**org<[email protected]>



 ---------------------------------------------------------------------
 To unsubscribe, e-mail: [email protected]
 For additional commands, e-mail: [email protected]





 ---------------------------------------------------------------------
 To unsubscribe, e-mail: [email protected]
 For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



- - - - - - - - - - - - - - - - - -

This private and confidential e-mail has been sent to you by Synergy Systems 
Limited. It may not represent the views of Synergy Systems Limited.

If you are not the intended recipient of this e-mail and have received it in error, 
please notify the sender by replying with "received in error" as the subject 
and then delete it from your mailbox.

Reply via email to