On Jun 20, 2008, at 11:40 AM, Stefano Bagnara wrote:

Having removed the CRLFOutputStream depedendency the only class having real dependencies on SUN's javamail *implementation* (com.sun classes) is the RemoteDelivery mailet.

Geronimo's implementation provides almost identical classes but of course they are in their own package.

IMO it woul be cool to support geronimo's javamail as like sun's javamail (we are ASF brothers :-) ), what can we do?

Change RemoteDelivery to check instanceof of both classes (and add geronimo implementation to the build time depedencies)

Add a GeronimoRemoteDelivery identical to the RemoteDelivery but renaming packages (same geronimo build time depedency).

Use reflection to invoke the methods we use so that we can support both implementation with no build time dependencies.

We currently call transport.supportsExtension("8BITMIME") method once per mail and SMTPAddressFailedException, SMTPAddressSucceededException and SMTPSendFailedException mainly for better bounce handling/debugging/logging purpose upon exception.

So we would have 1 reflection for each delivery attempt + possibly 3-4 reflections for each address failed upon delivery failure.

I would go with reflections.

Objections? Opinions?

I don't know if it is worth it but you could define an interface, and two implementations that delegate to the two classes, and try to load each implementation and use the one that can be loaded. Maybe this is your first or second suggestion?

I lean (slightly) against reflection because it makes the dependencies less clear.

If you do any of these it would be nice to make the (maven) dependency on javamail provided so neither implementation is pulled in automatically.

I guess another possibility is to switch entirely to the geronimo implementation :-)

thanks
david jencks



Stefano


---------------------------------------------------------------------
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]

Reply via email to