Hi,
I would like to address an issue that we are facing today that there is no
option to use different
default ELs for each block. Our Spring-based configuration of beans is global
and in context of
default settings it's very inconvenient.
If I'm not wrong, solving this problem in clear manner is in scope of our OSGi
effort. Am I right,
Daniel?
Nevertheless, OSGi integration won't make it into Cocoon 2.2 so we have to find
another way even if
it's rather hacky. I believe I found such "hack" that I'll explain taking ELs
as example. My plan is
quite simple:
1. Component that has to be configured per block is declared in "call" scope
2. Configuration values for component that are different for each block are
declared as
context-params like this:
<bean id="org.apache.cocoon.servletservice.sample.servlet1"
class="org.apache.cocoon.sitemap.SitemapServlet">
<servlet:context mount-path="/foo" context-path="blockcontext:/foo">
<servlet:context-params>
<entry
key="org.apache.cocoon.el.ExpressionFactory$defualtExpressionCompiler"
value-ref="org.apache.cocoon.el.ExpressionCompiler/jxpath"/>
</servlet:context-params>
</servlet:context>
</bean>
3. Implement BeanPostProcessor that will inject property value for
ExpressionFactory whenever it is
created
What I would like to stress is the fact that I'm *not* willing to implement
this as general
mechanism but only limit myself to this one use case. If there is another
strong need for per-block
configuration we could think about implementing another BeanPostProcessor but I
really think we
should not invest too much time/discussion into this as we are going to have
better solutions in
(hopefully) near future.
WDYT?
--
Grzegorz Kossakowski
Committer and PMC Member of Apache Cocoon
http://reflectingonthevicissitudes.wordpress.com/