Reinhard Poetz wrote:
Leszek Gawron wrote:
WDYT? If you don't like it I will do 2). only in my codebase.
I like it. I'm one of the Apples users Sylvain mentioned in his mail.
I've also prototyped nearly the same code as you did :-)
Do you use the spring block or does getSpringContext() refer to a
"usual" spring context? I'd prefer using the Spring block as the
integration is _much_ more advanced, thanks to Carsten.
I am using a spring context loaded with
org.springframework.web.context.ContextLoaderListener. I'm fetching it
then with my own SpringApplicationContextFetcher:
public class SpringApplicationContextFetcher implements Contextualizable,
ThreadSafe {
public final static String ROLE =
SpringApplicationContextFetcher.class.getName();
private Context context;
public void contextualize( Context context ) throws ContextException {
this.context = context;
}
public ApplicationContext fetchContext() {
HttpContext environmentContext;
try {
environmentContext = (HttpContext) context.get(
Constants.CONTEXT_ENVIRONMENT_CONTEXT );
} catch ( ContextException e ) {
throw new IllegalStateException( "Error while accessing
cocoon context", e );
}
Object attr = environmentContext.getAttribute(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE );
if ( attr == null ) {
throw new IllegalStateException( "Root application context
not found in servlet context" );
}
if ( attr instanceof RuntimeException ) {
throw (RuntimeException) attr;
}
if ( attr instanceof Error ) {
throw (Error) attr;
}
if ( ! ( attr instanceof ApplicationContext ) ) {
throw new IllegalStateException( "Root context attribute is
not of type ApplicationContext: " + attr );
}
return (ApplicationContext) attr;
}
public static ApplicationContext fetchContext( ServiceManager manager )
throws ServiceException {
SpringApplicationContextFetcher fetcher = null;
try {
return ( (SpringApplicationContextFetcher)
manager.lookup( ROLE ) ).fetchContext();
} finally {
if ( fetcher != null )
manager.release( fetcher );
}
}
}
This is almost a copy paste from standard Spring WebApplicationContextUtils.
Could you summarize the advantages of spring block over "pure" spring
application context. I know I can use cocoon.getComponent("springBean")
but that has no added value for me. I prefer to keep spring isolated
from cocoon. This way I am sure I have my business logic 100% easily
testable. What I lack the most is a decent xml parser support in spring.
So please check in and then we can work on it.
Thing is: where should I put it?
apples block - bad idea
spring block - it will introduce dependency on apples
(NB I hope that I can soon drop Apples in favor of JavaFlow as using a
state machine is a PITA. The missing part is serialization support for
Javaflow. It is itself already serializeable as Torsten showed me in
Amsterdam, but needs some integration work in Cocoon to make use of it.)
To tell you the truth I would start using javaflow in production long
time ago (all my production sites run quite fresh cocoon trunk) but I am
a little bit scared with postings on users list (NPEs, loosing session).
But if Torsten says it's stable - I am probably going to check it out
in few days.
--
Leszek Gawron [EMAIL PROTECTED]
IT Manager MobileBox sp. z o.o.
+48 (61) 855 06 67 http://www.mobilebox.pl
mobile: +48 (501) 720 812 fax: +48 (61) 853 29 65