Uploaded image for project: 'MyFaces Core'
  1. MyFaces Core
  2. MYFACES-4553

TCK spec/flows/intermediate failure: WELD-001303: No active contexts for scope type jakarta.faces.flow.FlowScoped

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 4.0.0-RC4
    • 4.0.0-RC5
    • None
    • None

    Description

      The WELD-001303 error occurs because we are not yet in a flow officially (but will enter one). This means that the contextual storage for the flow has yet to be created.  This cause the weld error as the FlowScopeContext is not yet active – see isActive call.

       

      So flow scope is not active, but MyFaces starts to look at the nodes, it first checks the switch condition which references the flowScope implicit object: 

      Application Switch Case: 

      [https://github.com/jakartaee/faces/blob/3fae98234692ec16545a6d27cf36fabaeb883f9b/tck/old-tck/source/src/web/jsf/spec/flows/intermediate/maintain-customer-record/maintain-customer-record-flow.xml#L39]

       

      MyFace Switch Case Check: 

      [https://github.com/apache/myfaces/blob/8956fd167f797a4e32511e268a6520715cb132a5/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java#L645]

       

       

      This is a problem because the context for flowScope still needs to be created, as mentioned above. This flow transition, which causes the scope to be activated, doesn't happen until applyFlowTransition (which is much later). 

       

      My only idea is to force a transition call before we check the nodes, which causes myfaces unit test failures. 

      I also believe this is an issue in previous versions – we were lucky since the flowScope implicit object was evaluated to null (since no scope was active), and the "flowScope.customerId == null" check passed.

       

      Unit Test Code:

      spec/flows/intermediate:

      Test: [https://github.com/jakartaee/faces/blob/4.0.1/tck/old-tck/source/src/com/sun/ts/tests/jsf/spec/flows/intermediate/URLClient.java#L59]

             [https://github.com/jakartaee/faces/blob/4.0.1/tck/old-tck/source/src/com/sun/ts/tests/jsf/spec/flows/intermediate/URLClient.java#L91]

       

       

      Attachments

        1. faces_flows_intermediate_web.war
          17 kB
          Volodymyr Siedlecki

        Activity

          People

            volosied Volodymyr Siedlecki
            volosied Volodymyr Siedlecki
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: