That doesn't look good .. but it is an earlier version of the
framework, looks like 5.0.3 or 5.0.4.

Looks like its hitting this code:

    public CookieSource buildCookieSource()
    {
        return new CookieSource()
        {

            public Cookie[] getCookies()
            {
                return _requestGlobals.getHTTPServletRequest().getCookies();
            }

        };
    }

That should be pretty bullet proof, since the _requestGlobals field is
final and set in the constructor.  I'm not sure what other changes may
have affected this situation in the intervening releases.

On Jan 8, 2008 4:09 AM, Geoff Callender
<[EMAIL PROTECTED]> wrote:
> While trying to demonstrate the dangers of multiple submits, I found
> Tapestry throwing NullPointerException.
>
> Can someone who understands Tapestry's internals shed some light on
> this?
>
> To make the test possible, I emulated a slow operation by sleeping 2
> seconds.  The NPE then occurred on the 3rd or later click - it varied
> quite a bit.  Here's how I emulated the slow operation...
>
>         @ApplicationState
>         private MyOrder _myOrder;
>
>         Object onSuccess() {
>                 sleep(2000); // Sleep 2 seconds to simulate slow transaction
>
>                 int newQuantity = _myOrder.getQuantity() + 1;
>                 _myOrder.setQuantity(newQuantity);
>
>                 return _page2;
>         }
>
>         private void sleep(long duration) {
>                 try {
>                         Thread.sleep(duration);
>                 }
>                 catch (InterruptedException e) {
>                 }
>         }
>
> Here's the exception...
>
> 22:45:53,443 ERROR [RequestExceptionHandler] Processing of request
> failed with uncaught exception: java.lang.NullPointerException
> java.lang.NullPointerException
>         at org.apache.tapestry.internal.services.InternalModule
> $2.getCookies(InternalModule.java:307)
>         at 
> $CookieSource_11759363dd0.getCookies($CookieSource_11759363dd0.java)
>         at
> org
> .apache
> .tapestry
> .internal.services.CookiesImpl.readCookieValue(CookiesImpl.java:53)
>         at $Cookies_11759363dcf.readCookieValue($Cookies_11759363dcf.java)
>         at
> org
> .apache
> .tapestry
> .services
> .PersistentLocaleImpl.getCookieValue(PersistentLocaleImpl.java:46)
>         at
> org
> .apache
> .tapestry.services.PersistentLocaleImpl.get(PersistentLocaleImpl.java:
> 40)
>         at
> $PersistentLocale_11759363dce.get($PersistentLocale_11759363dce.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .LocalizationSetterImpl.setThreadLocale(LocalizationSetterImpl.java:98)
>         at
> $
> LocalizationSetter_11759363dcb
> .setThreadLocale($LocalizationSetter_11759363dcb.java)
>         at
> org
> .apache
> .tapestry
> .internal.services.LocalizationFilter.service(LocalizationFilter.java:
> 41)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at org.apache.tapestry.services.TapestryModule
> $2.service(TapestryModule.java:688)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at
> org
> .apache
> .tapestry
> .internal.services.StaticFilesFilter.service(StaticFilesFilter.java:84)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:97)
>         at org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:88)
>         at
> org
> .apache
> .tapestry
> .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
>         at
> org
> .apache
> .tapestry
> .internal
> .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:110)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at
> $RequestHandler_11759363dc6.service($RequestHandler_11759363dc6.java)
>         at org.apache.tapestry.services.TapestryModule
> $12.service(TapestryModule.java:1086)
>         at
> $
> HttpServletRequestHandler_11759363dc5
> .service($HttpServletRequestHandler_11759363dc5.java)
>         at 
> org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:135)
>         at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
>         at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org
> .jboss
> .web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:
> 96)
>         at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
>         at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org
> .apache
> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> 230)
>         at
> org
> .apache
> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> 175)
>         at
> org
> .jboss
> .web
> .tomcat
> .security
> .SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
>         at
> org
> .jboss
> .web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
>         at
> org
> .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
> 127)
>         at
> org
> .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
> 102)
>         at
> org
> .jboss
> .web
> .tomcat
> .service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:
> 157)
>         at
> org
> .apache
> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
> 262)
>         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> 844)
>         at org.apache.coyote.http11.Http11Protocol
> $Http11ConnectionHandler.process(Http11Protocol.java:583)
>         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
> 446)
>         at java.lang.Thread.run(Thread.java:613)
> 22:45:53,449 ERROR [ExceptionReport] Render queue error in
> BeginRender[core/ExceptionReport:renderobject_0]:
> org.apache.tapestry.ioc.internal.util.TapestryException
> org.apache.tapestry.ioc.internal.util.TapestryException [at
> classpath:org/apache/tapestry/corelib/pages/ExceptionReport.tml, line
> 45, column 41]
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:935)
>         at
> org.apache.tapestry.internal.structure.ComponentPageElementImpl.access
> $100(ComponentPageElementImpl.java:69)
>         at org.apache.tapestry.internal.structure.ComponentPageElementImpl
> $10.render(ComponentPageElementImpl.java:349)
>         at
> org
> .apache
> .tapestry.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:58)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:40)
>         at
> $
> PageMarkupRenderer_11759363e09
> .renderPageMarkup($PageMarkupRenderer_11759363e09.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .PageResponseRendererImpl
> .renderPageResponse(PageResponseRendererImpl.java:71)
>         at
> $
> PageResponseRenderer_11759363ddb
> .renderPageResponse($PageResponseRenderer_11759363ddb.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .DefaultRequestExceptionHandler
> .handleRequestException(DefaultRequestExceptionHandler.java:60)
>         at
> $
> RequestExceptionHandler_11759363dca
> .handleRequestException($RequestExceptionHandler_11759363dca.java)
>         at org.apache.tapestry.services.TapestryModule
> $2.service(TapestryModule.java:697)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at
> org
> .apache
> .tapestry
> .internal.services.StaticFilesFilter.service(StaticFilesFilter.java:84)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:97)
>         at org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:88)
>         at
> org
> .apache
> .tapestry
> .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
>         at
> org
> .apache
> .tapestry
> .internal
> .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:110)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at
> $RequestHandler_11759363dc6.service($RequestHandler_11759363dc6.java)
>         at org.apache.tapestry.services.TapestryModule
> $12.service(TapestryModule.java:1086)
>         at
> $
> HttpServletRequestHandler_11759363dc5
> .service($HttpServletRequestHandler_11759363dc5.java)
>         at 
> org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:135)
>         at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
>         at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org
> .jboss
> .web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:
> 96)
>         at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
>         at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org
> .apache
> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> 230)
>         at
> org
> .apache
> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> 175)
>         at
> org
> .jboss
> .web
> .tomcat
> .security
> .SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
>         at
> org
> .jboss
> .web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
>         at
> org
> .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
> 127)
>         at
> org
> .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
> 102)
>         at
> org
> .jboss
> .web
> .tomcat
> .service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:
> 157)
>         at
> org
> .apache
> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
> 262)
>         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> 844)
>         at org.apache.coyote.http11.Http11Protocol
> $Http11ConnectionHandler.process(Http11Protocol.java:583)
>         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
> 446)
>         at java.lang.Thread.run(Thread.java:613)
> Caused by: java.lang.NullPointerException
>         at $Request_11759363def.getContextPath($Request_11759363def.java)
>         at $Request_11759363dc0.getContextPath($Request_11759363dc0.java)
>         at
> org
> .apache
> .tapestry
> .internal.services.RequestRenderer.render(RequestRenderer.java:34)
>         at
> org
> .apache
> .tapestry
> .internal.services.RequestRenderer.render(RequestRenderer.java:24)
>         at 
> $ObjectRenderer_11759363ec6.render($ObjectRenderer_11759363ec6.java)
>         at 
> $ObjectRenderer_11759363dad.render($ObjectRenderer_11759363dad.java)
>         at
> org
> .apache
> .tapestry
> .corelib.components.RenderObject.beginRender(RenderObject.java:39)
>         at
> org
> .apache
> .tapestry.corelib.components.RenderObject.beginRender(RenderObject.java)
>         at org.apache.tapestry.internal.structure.ComponentPageElementImpl
> $10$1.run(ComponentPageElementImpl.java:345)
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:923)
>         ... 40 more
> 22:45:53,450 ERROR [PagePool] Page Page[core/ExceptionReport en_US] is
> dirty, and will be discarded (rather than returned to the page pool).
> 22:45:53,450 ERROR [[default]] Servlet.service() for servlet default
> threw exception
> org.apache.tapestry.ioc.internal.util.TapestryException [at
> classpath:org/apache/tapestry/corelib/pages/ExceptionReport.tml, line
> 45, column 41]
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:935)
>         at
> org.apache.tapestry.internal.structure.ComponentPageElementImpl.access
> $100(ComponentPageElementImpl.java:69)
>         at org.apache.tapestry.internal.structure.ComponentPageElementImpl
> $10.render(ComponentPageElementImpl.java:349)
>         at
> org
> .apache
> .tapestry.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:58)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:40)
>         at
> $
> PageMarkupRenderer_11759363e09
> .renderPageMarkup($PageMarkupRenderer_11759363e09.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .PageResponseRendererImpl
> .renderPageResponse(PageResponseRendererImpl.java:71)
>         at
> $
> PageResponseRenderer_11759363ddb
> .renderPageResponse($PageResponseRenderer_11759363ddb.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .DefaultRequestExceptionHandler
> .handleRequestException(DefaultRequestExceptionHandler.java:60)
>         at
> $
> RequestExceptionHandler_11759363dca
> .handleRequestException($RequestExceptionHandler_11759363dca.java)
>         at org.apache.tapestry.services.TapestryModule
> $2.service(TapestryModule.java:697)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at
> org
> .apache
> .tapestry
> .internal.services.StaticFilesFilter.service(StaticFilesFilter.java:84)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:97)
>         at org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:88)
>         at
> org
> .apache
> .tapestry
> .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
>         at
> org
> .apache
> .tapestry
> .internal
> .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:110)
>         at
> $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java)
>         at
> $RequestHandler_11759363dc6.service($RequestHandler_11759363dc6.java)
>         at org.apache.tapestry.services.TapestryModule
> $12.service(TapestryModule.java:1086)
>         at
> $
> HttpServletRequestHandler_11759363dc5
> .service($HttpServletRequestHandler_11759363dc5.java)
>         at 
> org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:135)
>         at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
>         at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org
> .jboss
> .web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:
> 96)
>         at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
>         at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org
> .apache
> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> 230)
>         at
> org
> .apache
> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> 175)
>         at
> org
> .jboss
> .web
> .tomcat
> .security
> .SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
>         at
> org
> .jboss
> .web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
>         at
> org
> .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
> 127)
>         at
> org
> .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
> 102)
>         at
> org
> .jboss
> .web
> .tomcat
> .service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:
> 157)
>         at
> org
> .apache
> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
> 262)
>         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> 844)
>         at org.apache.coyote.http11.Http11Protocol
> $Http11ConnectionHandler.process(Http11Protocol.java:583)
>         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
> 446)
>         at java.lang.Thread.run(Thread.java:613)
> Caused by: java.lang.NullPointerException
>         at $Request_11759363def.getContextPath($Request_11759363def.java)
>         at $Request_11759363dc0.getContextPath($Request_11759363dc0.java)
>         at
> org
> .apache
> .tapestry
> .internal.services.RequestRenderer.render(RequestRenderer.java:34)
>         at
> org
> .apache
> .tapestry
> .internal.services.RequestRenderer.render(RequestRenderer.java:24)
>         at 
> $ObjectRenderer_11759363ec6.render($ObjectRenderer_11759363ec6.java)
>         at 
> $ObjectRenderer_11759363dad.render($ObjectRenderer_11759363dad.java)
>         at
> org
> .apache
> .tapestry
> .corelib.components.RenderObject.beginRender(RenderObject.java:39)
>         at
> org
> .apache
> .tapestry.corelib.components.RenderObject.beginRender(RenderObject.java)
>         at org.apache.tapestry.internal.structure.ComponentPageElementImpl
> $10$1.run(ComponentPageElementImpl.java:345)
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:923)
>         ... 40 more
>
>
> Thanks,
>
> Geoff



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to