Details
- 
        Type: Bug Bug
- 
        Status: Closed Closed
- 
            Priority: Major Major
- 
            Resolution: Fixed
- 
            Affects Version/s: 1.0-beta-1
- 
            Fix Version/s: None
- 
            Component/s: core
- 
            Labels:None
- 
            Environment:servlet container, scripting of nanocontainer done with Groovy
- 
                        Number of attachments :
Description
When setting up the nanocontainer servlet in web.xml using the context-param "nanocontainer.groovy", it only seems to work for the first container that is configured, or, the first compositionScope. If any other scope is provided such as a ServletRequest or HttpSession, it fails with the following message...
"Caused by: groovy.lang.MissingMethodException: No such method: buildContainer for class: nanocontainer with arguments: [org.picocontainer.defaults.DefaultPicoContainer@18abc7b, org.apache.coyote.tomcat5.CoyoteRequestFacade@952905]"
I know it is working the for the first container (in the ServletContext compositionScope) because I print out the compositionScope as soon as the "buildContainer" method is entered and it says...
"compositionScope is: org.apache.catalina.core.ApplicationContextFacade@ebf3f0"
Here is the script...
class DemoBuilder {
    buildContainer(parent, compositionScope) {
        System.out.println("compositionScope is: " + compositionScope);
        pico = new org.picocontainer.defaults.DefaultPicoContainer(parent)
        if (compositionScope instanceof javax.servlet.ServletRequest) 
else if (compositionScope instanceof javax.servlet.http.HttpSession)
{ System.out.println("I got here to register a component in the servlet session scope!!!!") pico.registerComponentImplementation("counter", SomeCounter.class) }else if (compositionScope instanceof javax.servlet.ServletContext)
{ //nothing to do for now }else { //nothing to do for now }
        return pico
    }
}
Here's the full stack trace....
org.nanocontainer.integrationkit.PicoCompositionException
	at org.nanocontainer.script.groovy.GroovyContainerBuilder.createContainer(GroovyContainerBuilder.java:57)
	at org.nanocontainer.integrationkit.LifecycleContainerBuilder.buildContainer(LifecycleContainerBuilder.java:25)
	at org.nanocontainer.servlet.ServletRequestContainerLauncher.startContainer(ServletRequestContainerLauncher.java:48)
	at org.nanocontainer.servlet.ServletRequestContainerFilter.doFilter(ServletRequestContainerFilter.java:36)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:233)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:534)
Caused by: groovy.lang.MissingMethodException: No such method: buildContainer for class: nanocontainer with arguments: [org.picocontainer.defaults.DefaultPicoContainer@18abc7b, org.apache.coyote.tomcat5.CoyoteRequestFacade@952905]
	at groovy.lang.MetaClass.invokeStaticMethod(MetaClass.java:291)
	at groovy.lang.MetaClass.invokeMethod(MetaClass.java:247)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at groovy.lang.MetaClass.doMethodInvoke(MetaClass.java:765)
	at groovy.lang.MetaClass.invokeMethod(MetaClass.java:214)
	at org.codehaus.groovy.runtime.Invoker.invokeMethod(Invoker.java:130)
	at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:98)
	at nanocontainer.invokeMethod(nanocontainer.groovy)
	at org.nanocontainer.script.groovy.GroovyContainerBuilder.createContainer(GroovyContainerBuilder.java:55)
	... 27 more
Jake
Activity
 Jacob Kjome
 made changes  -
 Jacob Kjome
 made changes  - 
        | Field | Original Value | New Value | 
|---|---|---|
| Attachment | picoservlet.war [ 11423 ] | 
 Jacob Kjome
 made changes  -
 Jacob Kjome
 made changes  - 
        | Attachment | GroovyContainerBuilder.patch.diff [ 11430 ] | 
 Jörg Schaible
 made changes  -
 Jörg Schaible
 made changes  - 
        | Resolution | Fixed [ 1 ] | |
| Status | Open [ 1 ] | Closed [ 6 ] | 

 
                             
                                                             
                                                             
                                                            

And you are really really sure, that all jars are in correct version,
and you did not got bogus snapshot from codehaus.net ?