Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-964

Exception report failed to render due to NPE inside session-persisted objects' toString()

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.2
    • 5.2.0
    • tapestry-core
    • None

    Description

      Had an exception on the page, but the ExceptionReport failed; from the console I could see why:

      org.apache.tapestry5.ioc.internal.util.TapestryException [at classpath:org/apache/tapestry5/corelib/pages/ExceptionReport.tml, line 32]
      at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:948)
      at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
      at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
      at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.render(ComponentPageElementImpl.java:211)
      at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
      at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
      at $PageRenderQueue_125e1729db5.render($PageRenderQueue_125e1729db5.java)
      at $PageRenderQueue_125e1729db4.render($PageRenderQueue_125e1729db4.java)
      at org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
      at org.apache.tapestry5.services.TapestryModule$27.renderMarkup(TapestryModule.java:1748)
      at $MarkupRenderer_125e1729db7.renderMarkup($MarkupRenderer_125e1729db7.java)
      at org.apache.tapestry5.services.TapestryModule$26.renderMarkup(TapestryModule.java:1732)
      at $MarkupRenderer_125e1729db7.renderMarkup($MarkupRenderer_125e1729db7.java)
      at org.apache.tapestry5.services.TapestryModule$25.renderMarkup(TapestryModule.java:1714)
      at $MarkupRenderer_125e1729db7.renderMarkup($MarkupRenderer_125e1729db7.java)
      at org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1700)
      at $MarkupRenderer_125e1729db7.renderMarkup($MarkupRenderer_125e1729db7.java)
      at org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1681)
      at $MarkupRenderer_125e1729db7.renderMarkup($MarkupRenderer_125e1729db7.java)
      at org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1662)
      at $MarkupRenderer_125e1729db7.renderMarkup($MarkupRenderer_125e1729db7.java)
      at $MarkupRenderer_125e1729db3.renderMarkup($MarkupRenderer_125e1729db3.java)
      at org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
      at $PageMarkupRenderer_125e1729daf.renderPageMarkup($PageMarkupRenderer_125e1729daf.java)
      at org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:61)
      at $PageResponseRenderer_125e1729d87.renderPageResponse($PageResponseRenderer_125e1729d87.java)
      at org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:77)
      at $RequestExceptionHandler_125e1729d2e.handleRequestException($RequestExceptionHandler_125e1729d2e.java)
      at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
      at $RequestHandler_125e1729d30.service($RequestHandler_125e1729d30.java)
      at org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778)
      at $RequestHandler_125e1729d30.service($RequestHandler_125e1729d30.java)
      at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767)
      at $RequestHandler_125e1729d30.service($RequestHandler_125e1729d30.java)
      at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
      at $RequestHandler_125e1729d30.service($RequestHandler_125e1729d30.java)
      at org.apache.tapestry5.internal.services.URLRewriterRequestFilter.service(URLRewriterRequestFilter.java:47)
      at $RequestHandler_125e1729d30.service($RequestHandler_125e1729d30.java)
      at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
      at org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
      at org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
      at org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
      at $RequestHandler_125e1729d30.service($RequestHandler_125e1729d30.java)
      at $RequestHandler_125e1729d26.service($RequestHandler_125e1729d26.java)
      at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:197)
      at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
      at $HttpServletRequestHandler_125e1729d28.service($HttpServletRequestHandler_125e1729d28.java)
      at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
      at $HttpServletRequestHandler_125e1729d28.service($HttpServletRequestHandler_125e1729d28.java)
      at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
      at $HttpServletRequestFilter_125e1729d25.service($HttpServletRequestFilter_125e1729d25.java)
      at $HttpServletRequestHandler_125e1729d28.service($HttpServletRequestHandler_125e1729d28.java)
      at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:726)
      at $HttpServletRequestHandler_125e1729d28.service($HttpServletRequestHandler_125e1729d28.java)
      at $HttpServletRequestHandler_125e1729d0d.service($HttpServletRequestHandler_125e1729d0d.java)
      at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
      at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      at collective.servlet.LogbackMdcFilter.doFilter(LogbackMdcFilter.java:65)
      at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
      at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
      at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
      at org.mortbay.jetty.Server.handle(Server.java:324)
      at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
      at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
      at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
      at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
      at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
      Caused by: java.lang.NullPointerException
      at collective.instance.RegistrationRequest.toString(RegistrationRequest.java:68)
      at java.lang.String.valueOf(String.java:2826)
      at org.apache.tapestry5.services.TapestryModule$20.render(TapestryModule.java:1586)
      at $ObjectRenderer_125e1729dba.render($ObjectRenderer_125e1729dba.java)
      at $ObjectRenderer_125e1729d8d.render($ObjectRenderer_125e1729d8d.java)
      at org.apache.tapestry5.corelib.components.RenderObject.beginRender(RenderObject.java:40)
      at org.apache.tapestry5.corelib.components.RenderObject.beginRender(RenderObject.java)
      at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.invokeComponent(ComponentPageElementImpl.java:206)
      at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
      at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933)

      The RegistrationRequest object was session persisted, but its toString() was a bit sloppy and threw an NPE.

      It would be much nicer if Object class adapter for ObjectRenderer caught exceptions when invoking toString(), and displayed a summary of the exception and identified the class name, rather than blowing up the ExceptionReport render.

      Attachments

        Activity

          People

            hlship Howard Lewis Ship
            hlship Howard Lewis Ship
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: