All,

I've been following the latest threads, and just thought I'd jump in
with two small comments.

= 4.2 vs. 5 =

Some have said that "of course 4.2 is incompatible with 4.1, you don't
expect to use nio in a Java 1.3 environment, or a 2.3 servlet in a 2.2
environment, do you?".

Which is correct. If the minor version number increases, you can
expect backwards compatibility for clients, but of course not for
providers. But we're all in the business of developing providers.

Which is why versioning in Avalon-land is perceived a bit different.

A minor version change in framework is, for example, if you add a
method to ExceptionUtils. The general opinion, as I remember it, is
that a component-container contract change is a *major* version
change. The fact that Serviceable/ServiceManager was a minor change
should be written up as an exception.

Above all, since contract changes impact container developers, they
should be made in consensus with the most important container
developers (Merlin team, Excalibur, Cocoon, etc.)

Since there is no reasonable way of fixing the underspecification of
the 4.x versions without altering the framework, I think Niclas,
Stephen et al should switch to Avalon *5*, and just start cutting
cruft left, right and center. You know you'll end up with a better
result that way. *And* it will give you the room you need to
experiment.


= Constructor Injection =

The null constructor/constructor with parameters issue is easily
solvable, just thought I'd state the obvious in writing here:

A component may use either constructor dependency injection,
bean-style dependency injection, or ServiceManager lookup dependency
resolution.

Then define the requirements for each one separately.

Then define how the container will react when a component has both a
null constructor and one with parameters:

The container will first see if there is a constructor that takes any
parameters. If it finds one, it will shoot up the component according
to <<reference to constructor injection lifecycle>>. If not, it will
scan the methods for methods with signature setX (X x), where X *may*
be a dependency (absence of meta makes this a bit of hit-and-miss). If
ti finds any, it will <<blah blah blah>>...

And so on...

/LS

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to