ICEfaces
  1. ICEfaces
  2. ICE-11358

EE-3.3.0 compat, compat-basic and ice:selectInputDate JSF 2.2 specific issues

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-3.3.0.GA_P05
    • Fix Version/s: EE-3.3.0.GA_P05
    • Component/s: Sample Apps
    • Labels:
      None
    • Environment:
      ICEfaces EE-3.3.0 maintenance branch r 51830, Tomcat 7, Glassfish 4.1.2 using JSF 2.2.14, all browsers.
    • Assignee Priority:
      P1

      Description

      Showcase ice:selectInputDate > Timezones demo - Server internal error in FF when pressing the Apply Changes button. When using MS Edge or Chrome the error is not seen but the mouse pointer stays in waiting mode. Can not navigate away from demo at this point.

      Basic and Compat-Basic applications - Interacting with application causes class javax.faces.FacesException.
      [#|2017-08-15T13:55:59.518-0600|SEVERE|glassfish 4.1|javax.enterprise.resource.webcontainer.jsf.context|_ThreadID=27;_ThreadName=http-listener-1(1);_TimeMillis=1502826959518;_LevelValue=1000;|
        javax.faces.FacesException: Cannot add the same component twice: vc5hsn81_icefaces_config
              at com.sun.faces.context.StateContext$DynamicAddRemoveListener.handleAddRemoveWithAutoPrune(StateContext.java:748)
              at com.sun.faces.context.StateContext$DynamicAddRemoveListener.handleAdd(StateContext.java:675)
              at com.sun.faces.context.StateContext$AddRemoveListener.processEvent(StateContext.java:347)
              at com.sun.faces.context.StateContext$DynamicAddRemoveListener.processEvent(StateContext.java:565)
              at javax.faces.event.SystemEvent.processListener(SystemEvent.java:108)
              at javax.faces.event.ComponentSystemEvent.processListener(ComponentSystemEvent.java:118)
              at com.sun.faces.application.ApplicationImpl.processListenersAccountingForAdds(ApplicationImpl.java:2218)
              at com.sun.faces.application.ApplicationImpl.invokeViewListenersFor(ApplicationImpl.java:2036)
              at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:290)
              at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:245)
              at javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2254)
              at javax.faces.component.UIComponentBase.doPostAddProcessing(UIComponentBase.java:1935)
              at javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:448)
              at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2700)
              at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2672)
              at javax.faces.component.UIViewRoot.addComponentResource(UIViewRoot.java:533)
              at org.icefaces.impl.event.BridgeSetup.processEvent(BridgeSetup.java:104)
              at javax.faces.event.SystemEvent.processListener(SystemEvent.java:108)
              at javax.faces.event.ComponentSystemEvent.processListener(ComponentSystemEvent.java:118)
              at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2169)
              at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2142)
              at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:301)
              at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:245)
              at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:857)
              at javax.faces.component.UIViewRoot.encodeBegin(UIViewRoot.java:985)
              at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1854)
              at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:432)
              at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
              at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
              at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
              at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
              at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
              at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
              at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
              at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
              at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
              at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
              at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
              at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
              at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
              at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
              at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
              at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
              at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
              at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
              at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
              at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
              at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
              at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
              at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
              at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
              at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
              at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
              at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
              at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
              at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
              at java.lang.Thread.run(Thread.java:745)
      |#]

        Activity

        Hide
        Arturo Zambrano added a comment -

        r51840: replaced occurrences of NavigationController.refreshPage() for NavigationController.reloadPage() in the ice:selectInputDate Timezones and Converter Pattern demos in the showcase app.

        This fix is the same as for ICE-11359.

        Show
        Arturo Zambrano added a comment - r51840: replaced occurrences of NavigationController.refreshPage() for NavigationController.reloadPage() in the ice:selectInputDate Timezones and Converter Pattern demos in the showcase app. This fix is the same as for ICE-11359 .
        Hide
        Arturo Zambrano added a comment -

        r51841: moved previous fix to a more appropriate point in the code, where it actually has the intended effect of avoiding having duplicate components

        The issue in the basic applications was only due to the presence of the icecore:config tag, which our framework takes to create a transient component in the body. The problem was that this component seemed to be duplicate because of the JSF state saving mechanism. A recent fix (ICE-11100) tried to solve this issue, which in turn is a backport of ICE-10335 and ICE-10438. The fix consists in taking the component out of the view whenever transitory children are added dynamically. However, the code to achieve this effect was placed around the code to add a component to a simple, local list in getBodyResources(). This code has been moved around the lines of code that actually add these transitory children to UIViewRoot, in processEvent(). This seemed to be the original intent of the fix, as the issue is now solved.

        Show
        Arturo Zambrano added a comment - r51841: moved previous fix to a more appropriate point in the code, where it actually has the intended effect of avoiding having duplicate components The issue in the basic applications was only due to the presence of the icecore:config tag, which our framework takes to create a transient component in the body. The problem was that this component seemed to be duplicate because of the JSF state saving mechanism. A recent fix ( ICE-11100 ) tried to solve this issue, which in turn is a backport of ICE-10335 and ICE-10438 . The fix consists in taking the component out of the view whenever transitory children are added dynamically. However, the code to achieve this effect was placed around the code to add a component to a simple, local list in getBodyResources(). This code has been moved around the lines of code that actually add these transitory children to UIViewRoot, in processEvent(). This seemed to be the original intent of the fix, as the issue is now solved.
        Hide
        Arturo Zambrano added a comment -

        r51842: correction and refactoring to improve efficiency

        Show
        Arturo Zambrano added a comment - r51842: correction and refactoring to improve efficiency
        Hide
        Arturo Zambrano added a comment -

        r51843: added fix for compat applications

        Compat applications needed the same fix in another class under the /compat folder.

        Show
        Arturo Zambrano added a comment - r51843: added fix for compat applications Compat applications needed the same fix in another class under the /compat folder.
        Hide
        Liana Munroe added a comment -

        Verified showcase and compat apps, ICEfaces EE-3.3.0 maintenance branch r51844 and EE 3 nightly trunk build 728, Glassfish 4.1.2 using mojarra 2.2.14, Tomcat 8 with mojarra 2.1.29, MS Edge, IE 11, 10, 9, 8, 7, FF 53, Chrome 60.

        Show
        Liana Munroe added a comment - Verified showcase and compat apps, ICEfaces EE-3.3.0 maintenance branch r51844 and EE 3 nightly trunk build 728, Glassfish 4.1.2 using mojarra 2.2.14, Tomcat 8 with mojarra 2.1.29, MS Edge, IE 11, 10, 9, 8, 7, FF 53, Chrome 60.
        Hide
        Arturo Zambrano added a comment -

        I also tested this fix with the original JSF version in the EE 3.3 maintenance branch, and I saw no issues.

        Show
        Arturo Zambrano added a comment - I also tested this fix with the original JSF version in the EE 3.3 maintenance branch, and I saw no issues.

          People

          • Assignee:
            Arturo Zambrano
            Reporter:
            Liana Munroe
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: