Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Cannot Reproduce
    • Affects Version/s: 1.8DR#1
    • Fix Version/s: 1.8RC1, 1.8
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      JSF 1.2_10, component-showcase facelets-enh, JBoss 4.2.3

      Description

      When JSF state management checks for unique ids, if the application has a bug in that it has duplicate ids, then JSF tries to report the problem, but fails, because it can't access the error message in its resource bundle. I'm not sure if this is a JSF Mojarra bug, or a framework bug where we might be interfering with JSF accessing it resource bundle.


      19:57:41,297 INFO [STDOUT] ERROR - Problem in renderResponse: Can't find bundle for base name javax.faces.Messages, locale en - com.icesoft.faces.facelets
      .D2DFaceletViewHandler
      java.util.MissingResourceException: Can't find bundle for base name javax.faces.Messages, locale en
              at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:837)
              at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:806)
              at java.util.ResourceBundle.getBundle(ResourceBundle.java:700)
              at com.sun.faces.util.MessageFactory.getMessage(MessageFactory.java:177)
              at com.sun.faces.util.MessageFactory.getMessage(MessageFactory.java:136)
              at com.sun.faces.util.MessageUtils.getExceptionMessageString(MessageUtils.java:351)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:375)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:243)
              at com.icesoft.faces.application.D2DViewHandler.invokeStateSaving(D2DViewHandler.java:731)
              at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:284)
              at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:156)
              at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
              at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
              at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
              at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:17)
              at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:138)
              at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:90)
              at com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:26)
              at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
              at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:160)
              at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$1.service(SessionDispatcher.java:30)
              at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:19)
              at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:63)
              at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:50)
              at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:19)
              at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
              at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:92)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
              at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
              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:182)
              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:595)
      19:57:41,297 ERROR [lifecycle] JSF1054: (Phase ID: RENDER_RESPONSE 6, View ID: /showcase.jspx) Exception thrown during phase execution: javax.faces.event.P
      haseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@9bb1da]
      19:57:41,297 ERROR [[Blocking Servlet]] Servlet.service() for servlet Blocking Servlet threw exception
      java.util.MissingResourceException: Can't find bundle for base name javax.faces.Messages, locale en
              at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:837)
              at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:806)
              at java.util.ResourceBundle.getBundle(ResourceBundle.java:700)
              at com.sun.faces.util.MessageFactory.getMessage(MessageFactory.java:177)
              at com.sun.faces.util.MessageFactory.getMessage(MessageFactory.java:136)
              at com.sun.faces.util.MessageUtils.getExceptionMessageString(MessageUtils.java:351)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:375)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
              at com.sun.faces.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:243)
              at com.icesoft.faces.application.D2DViewHandler.invokeStateSaving(D2DViewHandler.java:731)
              at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:284)
              at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:156)
              at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
              at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
              at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
              at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:17)
              at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:138)
              at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:90)
              at com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:26)
              at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
              at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:160)
              at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$1.service(SessionDispatcher.java:30)
              at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:19)
              at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:63)
              at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:50)
              at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:19)
              at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
              at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:92)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
              at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
              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:182)
              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:595)

        Activity

        Hide
        Mircea Toma added a comment -

        What are the steps required for reproducing this issue?

        Show
        Mircea Toma added a comment - What are the steps required for reproducing this issue?
        Hide
        Mircea Toma added a comment -

        I cannot reproduce the issue.

        Show
        Mircea Toma added a comment - I cannot reproduce the issue.
        Hide
        Mark Collette added a comment -

        Turn state saving on, and then give several components duplicate ids. When JSF tries to complain about the duplicate ids, it will stumble on not being able to get the localised error message.

        Show
        Mark Collette added a comment - Turn state saving on, and then give several components duplicate ids. When JSF tries to complain about the duplicate ids, it will stumble on not being able to get the localised error message.
        Hide
        Mark Collette added a comment -

        Also, running the qa regression app for ICE-1464, with ICEfaces code before subversion commit 18085.

        Show
        Mark Collette added a comment - Also, running the qa regression app for ICE-1464 , with ICEfaces code before subversion commit 18085.
        Hide
        Mark Collette added a comment -

        Added details on how to reproduce.

        Show
        Mark Collette added a comment - Added details on how to reproduce.
        Hide
        Mircea Toma added a comment - - edited

        Mark,
        I followed your instructions for reproducing the issue but without success. Here's the stack trace I got:

        java.lang.IllegalStateException: Component ID iceform:date1 has already been found in the view. See below for details.
        +id: j_id0
        type: com.icesoft.faces.application.SettableLocaleViewRoot@164deb
        +id: j_id1
        type: com.icesoft.faces.component.loadbundle.LoadBundle@55966d
        +id: j_id2
        type: com.icesoft.faces.component.outputdeclaration.OutputDeclaration@6d805
        +id: j_id3
        type: class com.icesoft.faces.component.UIXhtmlComponent@5266793:tag=[html]
        ................
        ................
        ................
        com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:379)
        com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
        com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
        com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
        com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
        com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
        com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
        com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
        com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366)
        com.sun.faces.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:243)
        com.icesoft.faces.application.D2DViewHandler.invokeStateSaving(D2DViewHandler.java:731)
        com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:284)

        As you can see the exception message is looked up alright. One thing I noticed is that the line number in the stack trace for com.sun.faces.application.StateManagerImpl.checkIdUniqueness is 379 while in the stack trace you listed was 375. Maybe you were running the tests with 1.2_* Beta version?!

        Show
        Mircea Toma added a comment - - edited Mark, I followed your instructions for reproducing the issue but without success. Here's the stack trace I got: java.lang.IllegalStateException: Component ID iceform:date1 has already been found in the view. See below for details. +id: j_id0 type: com.icesoft.faces.application.SettableLocaleViewRoot@164deb +id: j_id1 type: com.icesoft.faces.component.loadbundle.LoadBundle@55966d +id: j_id2 type: com.icesoft.faces.component.outputdeclaration.OutputDeclaration@6d805 +id: j_id3 type: class com.icesoft.faces.component.UIXhtmlComponent@5266793:tag= [html] ................ ................ ................ com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:379) com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366) com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366) com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366) com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366) com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366) com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366) com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366) com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:366) com.sun.faces.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:243) com.icesoft.faces.application.D2DViewHandler.invokeStateSaving(D2DViewHandler.java:731) com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:284) As you can see the exception message is looked up alright. One thing I noticed is that the line number in the stack trace for com.sun.faces.application.StateManagerImpl.checkIdUniqueness is 379 while in the stack trace you listed was 375. Maybe you were running the tests with 1.2_* Beta version?!
        Hide
        Mark Collette added a comment -

        I found out why this was happening just for me. I had made custom built JSF jars for my attributesThatAreSet efforts, and somehow the Messages.properties files were not being built into the jars. Manually copying the files into the jars solved the problem.

        Show
        Mark Collette added a comment - I found out why this was happening just for me. I had made custom built JSF jars for my attributesThatAreSet efforts, and somehow the Messages.properties files were not being built into the jars. Manually copying the files into the jars solved the problem.

          People

          • Assignee:
            Unassigned
            Reporter:
            Mark Collette
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: