Danny Angus wrote:
My proposal is that we do indeed move a whole lot of our service
interfaces.
But... (read this first before replying...)
We need to have an extensible mechanism which allows 3rd parties to
add services, which means that we're really talking about using JNDI
I think it is "in-topic" to revamp part ot the result of a POLL I
started 3 months ago ([VOTE] Wiring/Dependencies/Lifecycle Management
for next James). I see you didn't write your opinion, so you can add
them now to update us on your preferences.
To be clear I think we all consider this "votes" as preferences and not
as a real vote (it was made clear on the vote thread that it was more a
POLL than a vote), but I think it is important to keep this in mind if
you're working on a proposal and you're looking for consensus ;-)
-----
B1. Remove Avalon from "API Components"
+0.2 Stefano - if we introduce a james specific DI to supports this
components and add Lifecycle to the component API.
+1 Bernd
+0.8 Soren
+0.8 Norman - That whould be cool.. I don't like the idea of need
knowing about avalon to write mailets or smtphandler etc..
+0.8 Vincenzo
+1 Serge
------
So I think we all agree on this.
-------
E. Specific API Components issues:
E1. Use JNDI to lookup datasources
-0 Stefano - I'm still undecided about this: I think that using DI would
be better.
Bernd - tough question. my brief insight into this topic tells me that
it's very wrong how it is today, but exposing the interfaces directly?
_That's_ where I'd like to see JNDI! But I don't think I am aware of
enough discussion concerning this topic to vote it.
Noel - Again, premature and possibly container dependent.
+0.5 Soren
+0 Norman - like i said no expirences with JNDI
+0.2 Vincenzo
-1 Serge
E2. Use JNDI to lookup users/mail repositories, the store and any other
James component.
-0.5 Stefano
Bernd - tough question. my brief insight into this topic tells me that
it's very wrong how it is today, but exposing the interfaces directly?
_That's_ where I'd like to see JNDI! But I don't think I am aware of
enough discussion concerning this topic to vote it.
Noel - Again, premature and possibly container dependent.
+0.5 Soren
+0 Norman
+0.2 Vincenzo
-1 Serge
E3. Add datasource, repositories, store and any other used service to
the MailetContext API (this also mean adding the interfaces for this
objects to the Mailet APIs)
-0 Stefano - The API would grow a lot and we'll limit extensibility.
Bernd - tough question. my brief insight into this topic tells me that
it's very wrong how it is today, but exposing the interfaces directly?
_That's_ where I'd like to see JNDI! But I don't think I am aware of
enough discussion concerning this topic to vote it.
Noel - Probably not. That would require the MailetContext to expand to
understand every possible service, and require every possible service.
But some of them? Perhaps.
-0.9 Soren
-0 Norman
+0.5 Vincenzo - for a proper subset (which one :-) ?)
-0.8 Vincenzo - for everything
-1 Serge
E4. Use Dependency Injection (setter based, constructor based, enabling
interfaces, service locator injection) to automatically satisfy
components dependencies.
+1 Stefano - Imo the right way
+1 Bernd - (but I'm also +1 to _optionally_support_ JNDI)
-? Noel - Where? For the Mailet API? -1. Elsewhere in JAMES? To be
determined.
+0.8 Soren
+0.8 Norman
+0 Vincenzo
+1 Serge - setter or construction based
E5. Keep the ServiceManager as a property stored in the MailetContext.
-0.9 Stefano - Imho this is a bad practice and introduce a "hidden"
dependency.
-0.5 Bernd
-0.8 Soren
-0.5 Norman - Seems to be more a hack..
-0.8 Vincenzo
-1 Serge
------
As you can see we have topics where it seems there is consensus (remove
ServiceManager from the MailetContext and Remove Avalon from "API
Components") and others where we have opposite preferences.
Almost every other question received a bunch of +1 but at least a -1: so
you know this is really a minefield.
That said I really appreciate your effort on this issue: all this text
is just to update you on what happened in the months you were more busy
and what informations I collected about this issue.
Stefano