Amichai Rothman created JAMES-2700:
--------------------------------------

             Summary: No way for a Mailet to create a Mail
                 Key: JAMES-2700
                 URL: https://issues.apache.org/jira/browse/JAMES-2700
             Project: James Server
          Issue Type: Bug
          Components: Matchers/Mailets (bundled)
    Affects Versions: 3.4.0
            Reporter: Amichai Rothman


Implementations of Mailets often need to create new Mail messages, as evidenced 
by the several MailetContext.sendMail methods that accept a Mail instance to 
send. However, the API does not provide for a mechanism to create a new Mail 
nor set all of the fields of an existing Mail (only some have setters).

This means that a Mailet implementation must use a container-specific 
implementation to create such a mail (e.g. it must create a new 
org.apache.james.server.core.MailImpl).

However this dependency seems to defeat the purpose of having an independent 
Mailet API, where Mailets and Matchers can be used in different containers or 
applications, and makes them all coupled to the full James server alone. 
Alternatively, in order to be independent, a Mailet must provide its own full 
implementation of a Mail, and I'm not even sure if that would work in James. 
For comparison, imagine if a Servlet was required to create a Tomcat-specific 
Response object in order to function... that would fail the whole ecosystem of 
servlets.

I think a better approach would be to provide a factory (whether an independent 
factory interface or simply another method in the MailetContext) that creates a 
new Mail instance that can then be sent via the sendMail methods. This may also 
require adding some setters to the Mail interface so that the mail contents can 
be fully specified, or alternatively creating a new subclass interface such as 
WritableMail that adds those modifying methods, so that the read-only view of 
the object can still be enforced when necessary.

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to