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/

Reply via email to