Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Critical Critical
    • Resolution: Incomplete
    • Affects Version/s: 2.2 Sprint 8
    • Fix Version/s: None
    • Component/s: Components/Renderers
    • Labels:
      None
    • Status Whiteboard:
      Hide

      size_large importance_large

      Show
      size_large importance_large

      Description

      CA fairly common pattern in JSF is for container components to temporarily set up context that is available while processing children - eg. UIData sets up the "var" value before executing child lifecycle methods. In Trinidad and ADF Faces we have a variety of components that establish similar context.

      An issue with this is that there is no way to unwind/suspend this context in cases where it is necessary to interrupt processing in order to start over in a new context - eg. when invokeOnComponent() or visitTree() is called.

      Trinidad has solved this problem via its ComponentContextManager API. See:

      http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/ComponentContextManager.java?view=markup

      This provides a common mechanism that components can use for pushing/popping/suspending their context and allows for new invokeOnComponent()/visitTree() calls to be initiated in a clean environment.

      In addition, Trinidad's UIXComponent provides a number of hooks to assist components with their context setup/teardown.

      One problem with Trinidad's solution is that it only applies to Trinidad-based components. Ideally this problem should be solved by the JSF specification in a generic manner so that all components can participate.

        Issue Links

          Activity

          Ed Burns logged work - 14/Mar/13 6:47 PM
          • Time Spent:
            15 minutes
             

            SECTION: Modified Files
            ----------------------------
            M jsf-ri/src/main/java/com/sun/faces/context/FacesContextImpl.java
            M test/web-profile/renderKit/basic/src/main/webapp/inputFileAjax.xhtml
            M jsf-api/src/main/java/javax/faces/context/FacesContext.java
            M jsf-api/src/main/java/javax/faces/context/FacesContextWrapper.java
            D jsf-ri/src/main/java/com/sun/faces/component/visit/ComponentModificationManagerImpl.java
            D jsf-api/src/main/java/javax/faces/component/visit/ComponentModificationManager.java
            D jsf-api/src/main/java/javax/faces/component/visit/ComponentModification.java

            - At Andy's request, removing this API.
            Deleting jsf-api/src/main/java/javax/faces/component/visit/ComponentModification.java
            Deleting jsf-api/src/main/java/javax/faces/component/visit/ComponentModificationManager.java
            Sending jsf-api/src/main/java/javax/faces/context/FacesContext.java
            Sending jsf-api/src/main/java/javax/faces/context/FacesContextWrapper.java
            Deleting jsf-ri/src/main/java/com/sun/faces/component/visit/ComponentModificationManagerImpl.java
            Sending jsf-ri/src/main/java/com/sun/faces/context/FacesContextImpl.java
            Sending test/web-profile/renderKit/basic/src/main/webapp/inputFileAjax.xhtml
            Transmitting file data ....
            Committed revision 11744.

            People

            • Assignee:
              aschwart
              Reporter:
              aschwart
            • Votes:
              4 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 15 minutes
                15m