Giacomo Pati wrote:

On Fri, 13 Jan 2006, Daniel Fagerstrom wrote:

Date: Fri, 13 Jan 2006 11:19:26 +0100
From: Daniel Fagerstrom <[EMAIL PROTECTED]>

...

block.xml contains or point to the block.xconf, so it can be place anywhere.

I haven't found any formal specification about this "pointer to block.xconf". The only thing I've found on the wiki if COB-INF/block.xconf (so now META-INF/block.xconf).

AFAIK, the component management for blocks was never formally specified. In the current implementation the ECM++ component declaration is just a part of the block.xml, and by having an include element you can specify an external configuration file.

Besides some trickery to get the contexts right for the involved configuration files there is a parent component manager o.a.c.blocks.InterBlockServiceManager that requests components from service managers in blocks that are connected in the wiring.

Frankly, I find this overly complicated. I think we should instead have a solution where the blocks still have own service managers, but that they register their exported components in a global service registry. This is the way it is done OSGi, so it will be forward compatible, and I think it is enough. Using the wiring for component lookup seem FS to me.

...

Also, even if it isn't implemented yet, the idea is to make the choice of component container configurable, something like:

...
<components class="org.apache.cocoon.core.container.CoreServiceManager">
    // Container specific configuration
 </components>
...


Hmm.. the tricky part will be how to instantiate such a (unknown) FQCN from the class attribute. This needs a formal interface which such ServiceManagers must implements to allow the Deployer (or is it the BlockManager) to initialize the component container.

It is the task of the BlockManager. Yes there will need to be a common interface for ServiceManager bridges. Carsten (and maybe Sylvain) have implemented part of what is needed for the Spring bridge that is used in the tree processor.

So a default name isn't possible.

Except you only allow containers know to us and instead of a class attribute you'll have a type (or whatever) attribute which you can select from the implenetations we do have. Of course this way it isn't individually extensible.

A contract for external containers seem more atractive.

/Daniel