Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-790

WebExternalResourceStream.close() throws NPE

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.3.0-beta2
    • 1.3.0-beta3
    • wicket
    • None

    Description

      I have written a ContextRelativeResourceReference (CRRR) that creates ContextRelativeResource objects. I set a new CRRR on an Image object and when the page is rendering, I get the following stackTrace:

      16:07:36,158 ERROR [default]:260 - Servlet.service() for servlet default threw exception
      java.lang.NullPointerException
      at org.apache.wicket.util.resource.WebExternalResourceStream.close(WebExternalResourceStream.java:78)
      at org.apache.wicket.protocol.http.WicketFilter.getLastModified(WicketFilter.java:728)
      at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:122)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
      at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:495)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
      at java.lang.Thread.run(Thread.java:595)

      Looking at WebExternalResourceStream.close(), it calls "in.close()", however, "in" is not initialized during the code execution path.

      Would it be acceptable to do this in the close() method?

      public void close() throws IOException

      { if (in != null) in.close(); }

      Attachments

        Activity

          People

            jbq Jean-Baptiste Quenot
            cdeal Chuck Deal
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: