Bodo Pfelzer created TOMAHAWK-1674:
--------------------------------------

             Summary: Cannot remove the same component twice: 
oam_autoscroll_setResourceContainer
                 Key: TOMAHAWK-1674
                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1674
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: JSF2
    Affects Versions: 1.1.14
         Environment: wildfly-8 (tomahawk20-1.1.14, Mojarra 2.2.6-jbossorg-4)
            Reporter: Bodo Pfelzer


If I use org.apache.myfaces.AUTO_SCROLL=true in the given environment I get the 
following stacktrace (a patch is supplied below):

javax.faces.FacesException: Cannot remove the same component twice: 
oam_autoscroll_setResourceContainer
        at 
com.sun.faces.context.StateContext$DynamicAddRemoveListener.handleAddRemoveWithAutoPrune(StateContext.java:760)
        at 
com.sun.faces.context.StateContext$DynamicAddRemoveListener.handleRemove(StateContext.java:628)
        at 
com.sun.faces.context.StateContext$AddRemoveListener.processEvent(StateContext.java:345)
        at 
com.sun.faces.context.StateContext$DynamicAddRemoveListener.processEvent(StateContext.java:564)
        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:2236)
        at 
com.sun.faces.application.ApplicationImpl.invokeViewListenersFor(ApplicationImpl.java:2057)
        at 
com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:292)
        at 
com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247)
        at 
org.jboss.as.jsf.injection.weld.ForwardingApplication.publishEvent(ForwardingApplication.java:299)
        at 
javax.faces.component.UIComponentBase.disconnectFromView(UIComponentBase.java:2273)
        at 
javax.faces.component.UIComponentBase.doPreRemoveProcessing(UIComponentBase.java:1936)
        at 
javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:435)
        at 
javax.faces.component.UIComponentBase$ChildrenList.remove(UIComponentBase.java:2743)
        at 
javax.faces.component.UIComponentBase$ChildrenList.remove(UIComponentBase.java:2652)
        at 
javax.faces.component.UIComponentBase.eraseParent(UIComponentBase.java:543)
        at 
javax.faces.component.UIComponentBase.access$500(UIComponentBase.java:99)
        at 
javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2678)
        at 
javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2652)
        at 
javax.faces.component.UIViewRoot.addComponentResource(UIViewRoot.java:533)
        at 
org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper$1.processEvent(ResourceViewHandlerWrapper.java:117)
        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:2236)
        at 
com.sun.faces.application.ApplicationImpl.invokeViewListenersFor(ApplicationImpl.java:2057)
        at 
com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:292)
        at 
org.jboss.as.jsf.injection.weld.ForwardingApplication.publishEvent(ForwardingApplication.java:294)
        at 
com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:1017)
        at 
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99)
        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:647)
        at 
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
        at 
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130)
        at 
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
        at 
io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
        at 
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
        at 
io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
        at 
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
        at 
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at 
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
        at 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
        at 
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
        at 
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56)
        at 
io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:27)
        at 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
        at 
io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51)
        at 
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
        at 
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
        at 
io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56)
        at 
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
        at 
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)
        at 
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
        at 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
        at 
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
        at 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
        at 
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
        at 
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240)
        at 
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
        at 
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73)
        at 
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)
        at 
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

The following patch makes it work for me:

*** 
tomahawk20-1.1.14/src/org/apache/myfaces/tomahawk/application/ResourceViewHandlerWrapper.java
       2012-10-24 00:57:26.000000000 +0200
--- 
tomahawk-20141119/core20/src/main/java/org/apache/myfaces/tomahawk/application/ResourceViewHandlerWrapper.java
      2014-11-19 14:30:25.000000000 +0100
***************
*** 19,24 ****
--- 19,25 ----
  package org.apache.myfaces.tomahawk.application;
  
  import java.io.IOException;
+ import java.util.List;
  import java.util.Map;
  
  import javax.faces.FacesException;
***************
*** 86,125 ****
                      
viewToRender.getAttributes().containsKey(AutoscrollBehaviorTagHandler.AUTOSCROLL_TAG_ON_PAGE))
                  {
                      UIOutput test = new UIOutput();
-                     test.setId(SET_RESOURCE_CONTAINER_DUMMY_COMPONENT_ID);
                      test.setTransient(true);
                      UIComponent facet = null;
                      facet = 
viewToRender.getFacet(TomahawkResourceUtils.FORM_LOCATION);
                      if (facet == null)
                      {
                          viewToRender.addComponentResource(context, test, 
TomahawkResourceUtils.FORM_LOCATION);
!                         facet = 
viewToRender.getFacet(TomahawkResourceUtils.FORM_LOCATION);
!                         if (facet != null)
!                         {
!                             facet.getChildren().remove(test);
!                         }
                      }
                      
                      facet = 
viewToRender.getFacet(TomahawkResourceUtils.BODY_LOCATION);
                      if (facet == null)
                      {
                          viewToRender.addComponentResource(context, test, 
TomahawkResourceUtils.BODY_LOCATION);
!                         facet = 
viewToRender.getFacet(TomahawkResourceUtils.BODY_LOCATION);
!                         if (facet != null)
!                         {
!                             facet.getChildren().remove(test);
!                         }
                      }
  
                      facet = 
viewToRender.getFacet(TomahawkResourceUtils.HEAD_LOCATION);
                      if (facet == null)
                      {
                          viewToRender.addComponentResource(context, test, 
TomahawkResourceUtils.HEAD_LOCATION);
!                         facet = 
viewToRender.getFacet(TomahawkResourceUtils.HEAD_LOCATION);
!                         if (facet != null)
!                         {
!                             facet.getChildren().remove(test);
!                         }
                      }
                  }
              }
--- 87,116 ----
                      
viewToRender.getAttributes().containsKey(AutoscrollBehaviorTagHandler.AUTOSCROLL_TAG_ON_PAGE))
                  {
                      UIOutput test = new UIOutput();
                      test.setTransient(true);
                      UIComponent facet = null;
                      facet = 
viewToRender.getFacet(TomahawkResourceUtils.FORM_LOCATION);
                      if (facet == null)
                      {
+                         
test.setId(SET_RESOURCE_CONTAINER_DUMMY_COMPONENT_ID+'1');
                          viewToRender.addComponentResource(context, test, 
TomahawkResourceUtils.FORM_LOCATION);
!                         viewToRender.removeComponentResource(context, test, 
TomahawkResourceUtils.FORM_LOCATION);
                      }
                      
                      facet = 
viewToRender.getFacet(TomahawkResourceUtils.BODY_LOCATION);
                      if (facet == null)
                      {
+                         
test.setId(SET_RESOURCE_CONTAINER_DUMMY_COMPONENT_ID+'2');
                          viewToRender.addComponentResource(context, test, 
TomahawkResourceUtils.BODY_LOCATION);
!                         viewToRender.removeComponentResource(context, test, 
TomahawkResourceUtils.BODY_LOCATION);
                      }
  
                      facet = 
viewToRender.getFacet(TomahawkResourceUtils.HEAD_LOCATION);
                      if (facet == null)
                      {
+                         
test.setId(SET_RESOURCE_CONTAINER_DUMMY_COMPONENT_ID+'3');
                          viewToRender.addComponentResource(context, test, 
TomahawkResourceUtils.HEAD_LOCATION);
!                         viewToRender.removeComponentResource(context, test, 
TomahawkResourceUtils.HEAD_LOCATION);
                      }
                  }
              }




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to