4 Replies Latest reply on Jan 18, 2007 11:59 AM by tedgoddard

    NullPointerException in D2DViewHandler.calculateRenderKitId

    ccrouch

      I'm trying to integrate icefaces with a Seam app and am hitting a snag. Has anyone else seen/resolved this. When I hit the front page, or even debug.seam, I get the following

      java.lang.NullPointerException
       com.icesoft.faces.application.D2DViewHandler.calculateRenderKitId(D2DViewHandler.java:696)
       com.sun.faces.lifecycle.RestoreViewPhase.isPostback(RestoreViewPhase.java:241)
       com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:170)
       com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:244)
       com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:113)
       javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
       org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46)
       org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


      This looks very similar to the issue described here:
      http://www.icefaces.org/JForum/posts/list/3263.page#15483

      The setup is Icefaces 1.5.1, Seam 1.1GA, JSF 1.2. Facelets. I have not yet introduced any icefaces tags to the .xhtml pages

      When integrating icefaces I used the article here http://support.icesoft.com/jive/servlet/KbServlet/download/623-102-847/SeamKBArticle.txt and also the icefaces demo that comes bundled with Seam 1.1.GA as examples.

      Thanks

        • 1. Re: NullPointerException in D2DViewHandler.calculateRenderKi
          jalupa

          Yes, I tried to combine JSF 1.2 with IceFaces and Facelets and came to the conclusion that this requires a lot of patching of IceFaces (despite Ted Goddard's claims elsewhere on this forum).
          I encountered and investigated your problem:
          Section 10.4.5 of the JSF 1.2 specification states that you must "provide a constructor that takes a single argument of the appropriate type (in casu ViewHandler), if you want that the custom implementation receives a reference to the implementation that was previously fulfilling the role."
          The D2DViewHandler uses the "original" (id est the Default ViewHandler) ViewHandler in the calculateRenderKitId method, unfortunately, the D2DSeamFaceletViewHandler doesn't provide the aforementioned constructor, so the original view handler is never passed in this custom view handler, causing the NullPointerException (as we all know, constructors aren't inherited). The patch is trivial, however, when you patch this, you will run into other issues. See for example my post in "Seam doesn't play with ICEFaces".

          Apparently the ICEFaces people don't seem to have a public bug tracking system (yet), ...

          • 2. Re: NullPointerException in D2DViewHandler.calculateRenderKi
            jessicasant

            I reproduced this using the "icefaces" seam example

            environment:
            Seam 1.1.GA
            JBoss 4.0.5.GA
            Sun RI 1.2

            I followed the "Running the booking example on JBoss with the JSF 1.2 RI" sticky (http://www.jboss.com/index.html?module=bb&op=viewtopic&t=94738), namely:

            1- setup a configuration of JBossAS 4.0.5 to use the SunRI instead of myFaces
            2- modified the iceFaces\resources\META-INF\application.xml, commented out the el-api.jar and el-ri.jar:

            <!-- <module>
             <java>el-api.jar</java>
             </module>
             <module>
             <java>el-ri.jar</java>
             </module> -->
            

            3- modified iceFaces\resources\WEB-INF\faces-config.xml to use the SeamELResolver
            <application>
             <el-resolver>org.jboss.seam.jsf.SeamELResolver</el-resolver>
            </application>
            

            4- modified iceFaces\resources\WEB-INF\web.xml to use SunRI:
             <!-- MyFaces -->
             <!-- <listener>
             <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
             </listener> -->
            
             <!-- JSF RI -->
             <listener>
             <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
             </listener>
            


            5- built the ear, then removed the el-ri.jar and el-api.jar from the generated ear.
            6- deployed jboss-seam-icefaces.ear and icefaces-ds.xml to the SunRI configured JBossAS
            7- when I run, I get a NullPointerException

            10:41:31,890 ERROR [STDERR] Jan 16, 2007 10:41:31 AM com.sun.faces.config.ConfigureListener isJspTwoOne
            WARNING: Incorrect JSP version found, method getJspApplicationContext does not exist.
            10:41:31,906 ERROR [STDERR] Jan 16, 2007 10:41:31 AM com.sun.faces.config.ConfigureListener contextInitialized
            INFO: Completed initializing Sun's JavaServer Faces implementation (1.2_02-b03-FCS) for context 'null'
            10:41:31,921 INFO [ResponseStateManager] using response state manager: com.icesoft.faces.webapp.xmlhttp.ResponseStateManager
            10:41:32,000 INFO [EARDeployer] Started J2EE application: file:/F:/jboss-4.0.5.GA-ejb3/server/default/deploy/jboss-seam-icefaces.ear
            10:41:37,531 ERROR [STDERR] Jan 16, 2007 10:41:37 AM com.sun.faces.lifecycle.ELResolverInitPhaseListener populateFacesELResolverForJsp
            INFO: JSF1027: [null] The ELResolvers for JSF were not registered with the JSP container.
            10:41:37,531 INFO [Events] no events.xml file found
            10:41:37,531 ERROR [STDERR] Jan 16, 2007 10:41:37 AM com.sun.faces.lifecycle.LifecycleImpl phase
            WARNING: executePhase(RESTORE_VIEW 1,com.icesoft.faces.context.BridgeFacesContext@1155013) threw exception
            java.lang.NullPointerException
             at com.icesoft.faces.application.D2DViewHandler.calculateRenderKitId(D2DViewHandler.java:696)
             at com.sun.faces.lifecycle.RestoreViewPhase.isPostback(RestoreViewPhase.java:241)
             at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:170)
             at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:244)
             at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:113)
             at com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet.service(PersistentFacesServlet.java:389)
             at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
            ....
            10:41:37,546 ERROR [PersistentFacesServlet] Exception executing lifecycle or setting up persistent context. java.lang.NullPointerException
            javax.faces.FacesException: java.lang.NullPointerException
             at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:305)
             at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:113)
             at com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet.service(PersistentFacesServlet.java:389)
             at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
            ...
            10:41:37,562 ERROR [SeamExceptionFilter] uncaught exception handled by Seam
            javax.servlet.ServletException: java.lang.NullPointerException
             at com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet.service(PersistentFacesServlet.java:437)
             at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
            10:41:37,562 ERROR [[Persistent Faces Servlet]] Servlet.service() for servlet Persistent Faces Servlet threw exception
            javax.faces.FacesException: java.lang.NullPointerException
             at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:305)
             at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:113)
             at com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet.service(PersistentFacesServlet.java:389)
             at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
            ...
            Caused by: java.lang.NullPointerException
             at com.icesoft.faces.application.D2DViewHandler.calculateRenderKitId(D2DViewHandler.java:696)
             at com.sun.faces.lifecycle.RestoreViewPhase.isPostback(RestoreViewPhase.java:241)
             at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:170)
             at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:244)
             ... 25 more
            


            • 3. Re: NullPointerException in D2DViewHandler.calculateRenderKi
              jessicasant

              I posted the problem on the ICEfaces forum here: http://www.icefaces.org/JForum/posts/list/3410.page

              • 4. Re: NullPointerException in D2DViewHandler.calculateRenderKi
                tedgoddard


                This specific bug has been addressed in ICEfaces 1.5.2, so that the seam-icefaces application is now functional with JSF 1.2.(Effects, such as the highlight effect, are not working, however.)