Carsten Ziegeler skrev:
Daniel Fagerstrom wrote:
It depends on how long time you think that it will take. If you think
that it take a week or so I suggest that you branch cocoon-core, and
work on the branch until it works again and merge it back then. In the
meantime the rest of us try to avoid doing larger changes in cocoon-core
trunk.
If it takes like a month or so, it is better to try to do some splitting
of cocoon-core first, so that you only need to branch the tree-processor
and the top layer that contain the Cocoon object.
Ok, I think this will take one or two days until Cocoon runs again while
it might take a little bit longer to polish everything.
A branch of cocoon-core then.
In any case it must be done in a branch. We are making good progress
with the blocks work, and having a cocoon-core that doesn't would be a
far to large disruption.
I'm wondering if I'm changing the right place. Now the switch to Spring
is finished cocoon-core will look different (less use of Avalon). Now,
has this any influence on the blocks implementation like block-fw?
Probably ;)
Take a look at the BlockManager. It first set up a container which for
the moment is hardwired to o.a.c.container.ECMBlockServiceManager, but
could be another container. The container is supposed to register the
components that it want to make available to other block in a
ServiceManagerRegistry, and it get components from other container
through it parent manager (also the ServiceManagerRegsitry).
Then a block servlet (typically o.a.c.sitemap.SitemapServlet that
contains the tree processor) is set up and is given the component
manager of the block.
The contract for the Container is probably not the best possible, but I
needed something to be able to continue. Comments are welcome.
I looked there briefly and saw that for example ServiceManager is used
there for getting components from a block. We should change that as well
and perhaps use our own interface?
Maybe, it was first idea as well. But the ServiceManager is a rather
generic interface, so I don't see that we would find something
different, so I don't see what it would by us to change.
And in the somewhat longer perspective I would prefer using the OSGi
interfaces for service management.
And if the cocoon-core uses Spring what has to be done in the blocks-fw?
I don't know how you are planning to integrate Spring, so it is hard to
answer.
If we think about it, the main reason for having a component manager
within the sitemap and even in subsitemaps, is that 1)
sitemap-components and ordinary components was supposed to be different
concern in early Cocoon designs, and 2) that subsitemaps has been the
major mechanism for modularizing large applications.
We don't care about the difference between sitemap-components and
ordinary components anymore and with blocks there is a better
modularization mechanism than subsitemaps. So question is why we should
configure components within sitemaps anymore. IMO it is a mix of concern
and makes the tree-processor unnecessarily complicated.
So I don't know if the tree-processor should use Spring (or any other
component manager) anymore, it would be enough to just feed it a service
manager.
The Cocoon object and the CocoonServlet are not used anymore in the
blocks fw. I tried to adapt to them early on but it required to much
work to integrate the blocks within them without risking to disturb the
rest of the system. Besides that, the setup sequence tended to give me
severe headache, so I rewrote it to something less flexible and less
complicated.
/Daniel